From 2ecf22f0ed6a294e233d6a1a0868a81f85df917a Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 1 May 2020 17:23:38 +0200 Subject: [PATCH] Update website --- docs/bundle.109db.js | 2 - docs/bundle.109db.js.map | 1 - docs/bundle.6b8a3.esm.js | 2 - docs/bundle.cad64.esm.js | 2 + ...8a3.esm.js.map => bundle.cad64.esm.js.map} | 2 +- docs/bundle.e705d.js | 2 + docs/bundle.e705d.js.map | 1 + docs/index.html | 2 +- ...t.20dc31c2fd802449f3ea3bbd9638e1d1.esm.js} | 16 +-- ...ifest.53b02f2890f01147a2a2ea3eafd01aea.js} | 22 ++-- docs/push-manifest.json | 2 +- docs/route-calcoloNumerico.chunk.32e83.esm.js | 2 + ...te-calcoloNumerico.chunk.32e83.esm.js.map} | 2 +- docs/route-calcoloNumerico.chunk.5e3f8.js | 2 + docs/route-calcoloNumerico.chunk.5e3f8.js.map | 1 + docs/route-calcoloNumerico.chunk.9d1fa.esm.js | 2 - docs/route-calcoloNumerico.chunk.f5c66.js | 2 - docs/route-calcoloNumerico.chunk.f5c66.js.map | 1 - docs/sw-esm.js | 2 +- docs/sw.js | 2 +- size-plugin.json | 2 +- src/components/copyright.js | 4 +- src/components/split.css | 10 ++ src/routes/calcoloNumerico.js | 112 ++++++++++++++++++ 24 files changed, 160 insertions(+), 38 deletions(-) delete mode 100644 docs/bundle.109db.js delete mode 100644 docs/bundle.109db.js.map delete mode 100644 docs/bundle.6b8a3.esm.js create mode 100644 docs/bundle.cad64.esm.js rename docs/{bundle.6b8a3.esm.js.map => bundle.cad64.esm.js.map} (66%) create mode 100644 docs/bundle.e705d.js create mode 100644 docs/bundle.e705d.js.map rename docs/{precache-manifest.712081d862b6875737d79df2320f3230.esm.js => precache-manifest.20dc31c2fd802449f3ea3bbd9638e1d1.esm.js} (86%) rename docs/{precache-manifest.812c022b607ffd6b3904af385980122b.js => precache-manifest.53b02f2890f01147a2a2ea3eafd01aea.js} (86%) create mode 100644 docs/route-calcoloNumerico.chunk.32e83.esm.js rename docs/{route-calcoloNumerico.chunk.9d1fa.esm.js.map => route-calcoloNumerico.chunk.32e83.esm.js.map} (54%) create mode 100644 docs/route-calcoloNumerico.chunk.5e3f8.js create mode 100644 docs/route-calcoloNumerico.chunk.5e3f8.js.map delete mode 100644 docs/route-calcoloNumerico.chunk.9d1fa.esm.js delete mode 100644 docs/route-calcoloNumerico.chunk.f5c66.js delete mode 100644 docs/route-calcoloNumerico.chunk.f5c66.js.map diff --git a/docs/bundle.109db.js b/docs/bundle.109db.js deleted file mode 100644 index a356871..0000000 --- a/docs/bundle.109db.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t){function e(e){for(var n,o,r=e[0],a=e[1],u=0,c=[];ue.rank?-1:t.index-e.index}function a(t,e){return t.index=e,t.rank=function(t){return t.props.default?0:(e=t.props.path,u(e).map(c).join(""));var e}(t),t.props}function u(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function c(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function l(){var t;return""+((t=m&&m.location?m.location:m&&m.getCurrentLocation?m.getCurrentLocation():"undefined"!=typeof location?location:w).pathname||"")+(t.search||"")}function s(t,e){return void 0===e&&(e=!1),"string"!=typeof t&&t.url&&(e=t.replace,t=t.url),function(t){for(var e=g.length;e--;)if(g[e].canRoute(t))return!0;return!1}(t)&&function(t,e){void 0===e&&(e="push"),m&&m[e]?m[e](t):"undefined"!=typeof history&&history[e+"State"]&&history[e+"State"](null,null,t)}(t,e?"replace":"push"),p(t)}function p(t){for(var e=!1,n=0;n0},e.prototype.routeTo=function(t){this.setState({url:t});var e=this.canRoute(t);return this.updating||this.forceUpdate(),e},e.prototype.componentWillMount=function(){g.push(this),this.updating=!0},e.prototype.componentDidMount=function(){var t=this;m&&(this.unlisten=m.listen((function(e){t.routeTo(""+(e.pathname||"")+(e.search||""))}))),this.updating=!1},e.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),g.splice(g.indexOf(this),1)},e.prototype.componentWillUpdate=function(){this.updating=!0},e.prototype.componentDidUpdate=function(){this.updating=!1},e.prototype.getMatchingChildren=function(t,e,n){return t.filter(a).sort(i).map((function(t){var i=r(e,t.props.path,t.props);if(i){if(!1!==n){var a={url:e,matches:i};return o(a,i),delete a.ref,delete a.key,Object(y.cloneElement)(t,a)}return t}})).filter(Boolean)},e.prototype.render=function(t,e){var n=t.children,o=t.onChange,r=e.url,i=this.getMatchingChildren(Object(y.toChildArray)(n),r,!0),a=i[0]||null,u=this.previousUrl;return r!==u&&(this.previousUrl=r,"function"==typeof o&&o({router:this,url:r,previous:u,active:i,current:a})),a},e}(y.Component);C.subscribers=b,C.getCurrentUrl=l,C.route=s,C.Router=C,C.Route=function(t){return Object(y.createElement)(t.component,t)},C.Link=function(t){return Object(y.createElement)("a",o({onClick:d},t))},C.exec=r,e.a=C},YPgt:function(t){t.exports={copyright:"copyright__2FTnU"}},afj4:function(){},hosL:function(t,e,n){"use strict";function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t){var e=t.parentNode;e&&e.removeChild(t)}function i(t,e,n){var o,r=arguments,i={};for(o in e)"key"!==o&&"ref"!==o&&(i[o]=e[o]);if(arguments.length>3)for(n=[n],o=3;o2&&(e.children=R.slice.call(arguments,2)),a(t.type,e,e.key||t.key,e.ref||t.ref,null)}function P(t){var e={},n={__c:"__cC"+D++,__:t,Consumer:function(t,e){return t.children(e)},Provider:function(t){var o,r=this;return this.getChildContext||(o=[],this.getChildContext=function(){return e[n.__c]=r,e},this.shouldComponentUpdate=function(t){r.props.value!==t.value&&o.some((function(e){e.context=t.value,f(e)}))},this.sub=function(t){o.push(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){o.splice(o.indexOf(t),1),e&&e.call(t)}}),t.children}};return n.Consumer.contextType=n,n}n.r(e),n.d(e,"render",(function(){return O})),n.d(e,"hydrate",(function(){return S})),n.d(e,"createElement",(function(){return i})),n.d(e,"h",(function(){return i})),n.d(e,"Fragment",(function(){return c})),n.d(e,"createRef",(function(){return u})),n.d(e,"isValidElement",(function(){return A})),n.d(e,"Component",(function(){return l})),n.d(e,"cloneElement",(function(){return x})),n.d(e,"createContext",(function(){return P})),n.d(e,"toChildArray",(function(){return _})),n.d(e,"_unmount",(function(){return C})),n.d(e,"options",(function(){return T}));var T,A,L,j,U,N,I,D,M={},R=[],W=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;T={__e:function(t,e){for(var n,o;e=e.__;)if((n=e.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(o=!0,n.setState(n.constructor.getDerivedStateFromError(t))),null!=n.componentDidCatch&&(o=!0,n.componentDidCatch(t)),o)return f(n.__E=n)}catch(e){t=e}throw t}},A=function(t){return null!=t&&void 0===t.constructor},l.prototype.setState=function(t,e){var n;n=this.__s!==this.state?this.__s:this.__s=o({},this.state),"function"==typeof t&&(t=t(n,this.props)),t&&o(n,t),null!=t&&this.__v&&(e&&this.__h.push(e),f(this))},l.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),f(this))},l.prototype.render=c,L=[],j=0,U="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,I=M,D=0},mIK7:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){n.e(8).then(function(){t(n("/fDt"))}.bind(null,n)).catch(n.oe)}))},mdyV:function(t,e,n){"use strict";n.r(e);var o=n("hosL"),r=o.h,i=o.render,a=function(t){return t&&t.default?t.default:t};if("serviceWorker"in navigator&&navigator.serviceWorker.register(n.p+"sw.js"),"function"==typeof a(n("QfWi"))){var u=document.getElementById("preact_root")||document.body.firstElementChild;0,function(){var t=a(n("QfWi")),e={},o=document.querySelector('[type="__PREACT_CLI_DATA__"]');o&&(e=JSON.parse(o.innerHTML).preRenderData||e);var c;e.url&&(c=e.url);u=i(r(t,{CLI_DATA:{preRenderData:e}}),document.body,u)}()}},ve3R:function(t,e,n){"use strict";function o(){return(o=Object.assign||function(t){for(var e=1;e=0;f--){var d=a[f];"."===d?i(a,f):".."===d?(i(a,f),p++):p&&(i(a,f),p--)}if(!l)for(;p--;p)a.unshift("..");!l||""===a[0]||a[0]&&r(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h},g=function(t){if(!t)throw new Error("Invariant failed")},b=!("undefined"==typeof window||!window.document||!window.document.createElement),w={hashbang:{encodePath:function(t){return"!"===t.charAt(0)?t:"!/"+u(t)},decodePath:function(t){return"!"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:u,decodePath:a},slash:{encodePath:a,decodePath:a}}},"y+LV":function(t,e,n){"use strict";function o(t){return t.type===c.Fragment?"Fragment":"function"==typeof t.type?t.type.displayName||t.type.name:"string"==typeof t.type?t.type:"#text"}function r(){return s.length>0?s[s.length-1]:null}function i(t){return"function"==typeof t.type&&t.type!=c.Fragment}function a(t){for(var e=[t],n=t;null!=n.__o;)e.push(n.__o),n=n.__o;return e.reduce((function(t,e){t+=" in "+o(e);var n=e.__source;return n?t+=" (at "+n.fileName+":"+n.lineNumber+")":f||(f=!0,console.warn("Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.")),t+"\n"}),"")}function u(t){var e=t.props,n=o(t),r="";for(var i in e)if(e.hasOwnProperty(i)&&"children"!==i){var a=e[i];"function"==typeof a&&(a="function "+(a.displayName||a.name)+"() {}"),a=Object(a)!==a||a.toString?a+"":Object.prototype.toString.call(a),r+=" "+i+"="+JSON.stringify(a)}var u=e.children;return"<"+n+r+(u&&u.length?">..":" />")}var c=n("hosL");"undefined"!=typeof window&&window.__PREACT_DEVTOOLS__&&window.__PREACT_DEVTOOLS__.attachPreact("10.0.5",c.options,{Fragment:c.Fragment});var l={},s=[],p=[],f=!1,d="function"==typeof WeakMap,h=c.Component.prototype.setState;c.Component.prototype.setState=function(t,e){return null==this.__v?null==this.state&&console.warn('Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.setState" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),h.call(this,t,e)};var _=c.Component.prototype.forceUpdate;c.Component.prototype.forceUpdate=function(t){return null==this.__v?console.warn('Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),_.call(this,t)},function(){!function(){var t=c.options.__b,e=c.options.diffed,n=c.options.__,o=c.options.vnode,r=c.options.__r;c.options.diffed=function(t){i(t)&&p.pop(),s.pop(),e&&e(t)},c.options.__b=function(e){i(e)&&s.push(e),t&&t(e)},c.options.__=function(t,e){p=[],n&&n(t,e)},c.options.vnode=function(t){t.__o=p.length>0?p[p.length-1]:null,o&&o(t)},c.options.__r=function(t){i(t)&&p.push(t),r&&r(t)}}();var t=c.options.__b,e=c.options.diffed,n=c.options.vnode,r=c.options.__e,f=c.options.__,h=c.options.__h,_=d?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null;c.options.__e=function(t,e,n){if(e&&e.__c&&"function"==typeof t.then){var i=t;t=new Error("Missing Suspense. The throwing component was: "+o(e));for(var a=e;a;a=a.__)if(a.__c&&a.__c.__c){t=i;break}if(t instanceof Error)throw t}r(t,e,n)},c.options.__=function(t,e){if(!e)throw new Error("Undefined parent passed to render(), this is the second argument.\nCheck if the element is available in the DOM/has the correct id.");var n;switch(e.nodeType){case 1:case 11:case 9:n=!0;break;default:n=!1}if(!n){var r=o(t);throw new Error("Expected a valid HTML node as a second argument to render.\tReceived "+e+" instead: render(<"+r+" />, "+e+");")}f&&f(t,e)},c.options.__b=function(e){var n,r,i,c=e.type,s=function t(e){return e?"function"==typeof e.type?t(e.__):e:{}}(e.__);if(void 0===c)throw new Error("Undefined component passed to createElement()\n\nYou likely forgot to export your component or might have mixed up default and named imports"+u(e)+"\n\n"+a(e));if(null!=c&&"object"==typeof c){if(void 0!==c.__k&&void 0!==c.__e)throw new Error("Invalid type passed to createElement(): "+c+"\n\nDid you accidentally pass a JSX literal as JSX twice?\n\n let My"+o(e)+" = "+u(c)+";\n let vnode = ;\n\nThis usually happens when you export a JSX literal and not the component.\n\n"+a(e));throw new Error("Invalid type passed to createElement(): "+(Array.isArray(c)?"array":c))}if("thead"!==c&&"tfoot"!==c&&"tbody"!==c||"table"===s.type?"tr"===c&&"thead"!==s.type&&"tfoot"!==s.type&&"tbody"!==s.type&&"table"!==s.type?console.error("Improper nesting of table. Your should have a parent."+u(e)+"\n\n"+a(e)):"td"===c&&"tr"!==s.type?console.error("Improper nesting of table. Your should have a parent."+u(e)+"\n\n"+a(e)):"th"===c&&"tr"!==s.type&&console.error("Improper nesting of table. Your should have a ."+u(e)+"\n\n"+a(e)):console.error("Improper nesting of table. Your should have a parent."+u(e)+"\n\n"+a(e)),void 0!==e.ref&&"function"!=typeof e.ref&&"object"!=typeof e.ref&&!("$$typeof"in e))throw new Error('Component\'s "ref" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+"] instead\n"+u(e)+"\n\n"+a(e));if("string"==typeof e.type)for(var p in e.props)if("o"===p[0]&&"n"===p[1]&&"function"!=typeof e.props[p]&&null!=e.props[p])throw new Error("Component's \""+p+'" property should be a function, but got ['+typeof e.props[p]+"] instead\n"+u(e)+"\n\n"+a(e));if("function"==typeof e.type&&e.type.propTypes){if("Lazy"===e.type.displayName&&_&&!_.lazyPropTypes.has(e.type)){var f="PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ";try{var d=e.type();_.lazyPropTypes.set(e.type,!0),console.warn(f+"Component wrapped in lazy() is "+o(d))}catch(e){console.warn(f+"We will log the wrapped component's name once it is loaded.")}}n=e.type.propTypes,r=e.props,i=o(e),Object.keys(n).forEach((function(t){var e;try{e=n[t](r,t,i,"prop",null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(t){e=t}!e||e.message in l||(l[e.message]=!0,console.error("Failed prop type: "+e.message))}))}t&&t(e)},c.options.__h=function(t){if(!t)throw new Error("Hook can only be invoked from render methods.");h&&h(t)};var y=function(t,e){return{get:function(){throw new Error("getting vnode."+t+" is deprecated, "+e)},set:function(){throw new Error("setting vnode."+t+" is not allowed, "+e)}}},v={nodeName:y("nodeName","use vnode.type"),attributes:y("attributes","use vnode.props"),children:y("children","use vnode.props.children")},m=Object.create({},v);c.options.vnode=function(t){var e=t.props;if(null!==t.type&&null!=e&&("__source"in e||"__self"in e)){var o=t.props={};for(var r in e){var i=e[r];"__source"===r?t.__source=i:"__self"===r?t.__self=i:o[r]=i}}Object.setPrototypeOf(t,m),n&&n(t)},c.options.diffed=function(t){t.__k&&t.__k.forEach((function(e){if(e&&void 0===e.type){delete e.__,delete e.__b;var n=Object.keys(e).join(",");throw new Error("Objects are not valid as a child. Encountered an object with the keys {"+n+"}.\n\n"+a(t))}}));var n=t.__c;if(n&&n.__H){var r=n.__H;Array.isArray(r.__)&&r.__.forEach((function(e){if(e.__h&&(!e.__H||!Array.isArray(e.__H))){var n=o(t);console.warn("In "+n+" you are calling useMemo/useCallback without passing arguments.\nThis is a noop since it will not be able to memoize, it will execute it every render.\n\n"+a(t))}}))}if(e&&e(t),null!=t.__k)for(var i=[],c=0;c\n\t\t\t\t

Appuntiweb di Steffo

\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n","import style from './copyright.css';\r\nimport { Component } from 'preact';\r\n\r\nexport default class Copyright extends Component {\r\n\trender() {\r\n\t\treturn
© 2019 - Stefano Pigozzi - CC BY-SA 4.0 - Codice sorgente
;\r\n\t}\r\n}","import { h, Component } from 'preact';\n\nexport default function(req) {\n\tfunction Async() {\n\t\tComponent.call(this);\n\n\t\tlet b, old;\n\t\tthis.componentWillMount = () => {\n\t\t\tb = this.base = this.nextBase || this.__b; // short circuits 1st render\n\t\t\treq(m => {\n\t\t\t\tthis.setState({ child: m.default || m });\n\t\t\t});\n\t\t};\n\n\t\tthis.shouldComponentUpdate = (_, nxt) => {\n\t\t\tnxt = nxt.child === void 0;\n\t\t\tif (nxt && old === void 0 && b) {\n\t\t\t\t// Node.TEXT_NODE\n\t\t\t\tif (b.nodeType === 3) {\n\t\t\t\t\told = b.data;\n\t\t\t\t} else {\n\t\t\t\t\told = h(b.nodeName, {\n\t\t\t\t\t\tdangerouslySetInnerHTML: { __html: b.innerHTML },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\told = ''; // dump it\n\t\t\t}\n\t\t\treturn !nxt;\n\t\t};\n\n\t\tthis.render = (p, s) => (s.child ? h(s.child, p) : old);\n\t}\n\t(Async.prototype = new Component()).constructor = Async;\n\treturn Async;\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./basiDiDati.js\") );\n\t\t\t}, \"route-basiDiDati\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./home.js\") );\n\t\t\t}, \"route-home\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { cloneElement, createElement, Component, toChildArray } from 'preact';\nimport { exec, prepareVNodeForRanking, assign, pathRankSort } from './util';\n\nlet customHistory = null;\n\nconst ROUTERS = [];\n\nconst subscribers = [];\n\nconst EMPTY = {};\n\nfunction setUrl(url, type='push') {\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tlet url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn `${url.pathname || ''}${url.search || ''}`;\n}\n\n\n\nfunction route(url, replace=false) {\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (let i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) return true;\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tlet didRoute = false;\n\tfor (let i=0; i {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"copyright\":\"copyright__2FTnU\"};","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children == 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children == 'string' || typeof children == 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null, children)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(\n\t\t\t\tcreateVNode(\n\t\t\t\t\tchildren.type,\n\t\t\t\t\tchildren.props,\n\t\t\t\t\tchildren.key,\n\t\t\t\t\tnull,\n\t\t\t\t\tchildren._original\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value == 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nfunction setProperty(dom, name, value, oldValue, isSvg) {\n\tlet s, useCapture, nameLower;\n\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'style') {\n\t\ts = dom.style;\n\n\t\tif (typeof value == 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tnameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t(newVNode._original === oldVNode._original && !c._processingException)\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\tnewVNode._children = newVNode.props.children;\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (!newHtml) {\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\tnewProps.value !== undefined &&\n\t\t\t\tnewProps.value !== dom.value\n\t\t\t) {\n\t\t\t\tdom.value = newProps.value == null ? '' : newProps.value;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\tnewProps.checked !== undefined &&\n\t\t\t\tnewProps.checked !== dom.checked\n\t\t\t) {\n\t\t\t\tdom.checked = newProps.checked;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\treturn createVNode(\n\t\tvnode.type,\n\t\tprops,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\treturn context;\n}\n","export const ELEMENT_NODE = 1;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./ottimizzazioneLineare.js\") );\n\t\t\t}, \"route-ottimizzazioneLineare\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\tif (process.env.RHL) {\n\t\t// enable hot loader\n\t\tconst hotLoader = interopDefault(require('react-hot-loader'));\n\t\thotLoader.preact(interopDefault(require('preact')));\n\t}\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(inlineDataElement.innerHTML).preRenderData || preRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === location.pathname;\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","import { options, Fragment } from 'preact';\n\n/**\n * Get human readable name of the component/dom node\n * @param {import('./internal').VNode} vnode\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function getDisplayName(vnode) {\n\tif (vnode.type === Fragment) {\n\t\treturn 'Fragment';\n\t} else if (typeof vnode.type == 'function') {\n\t\treturn vnode.type.displayName || vnode.type.name;\n\t} else if (typeof vnode.type == 'string') {\n\t\treturn vnode.type;\n\t}\n\n\treturn '#text';\n}\n\n/**\n * Used to keep track of the currently rendered `vnode` and print it\n * in debug messages.\n */\nlet renderStack = [];\n\n/**\n * Keep track of the current owners. An owner describes a component\n * which was responsible to render a specific `vnode`. This exclude\n * children that are passed via `props.children`, because they belong\n * to the parent owner.\n *\n * ```jsx\n * const Foo = props =>
{props.children}
// div's owner is Foo\n * const Bar = props => {\n * return (\n * // Foo's owner is Bar, span's owner is Bar\n * )\n * }\n * ```\n *\n * Note: A `vnode` may be hoisted to the root scope due to compiler\n * optimiztions. In these cases the `_owner` will be different.\n */\nlet ownerStack = [];\n\n/**\n * Get the currently rendered `vnode`\n * @returns {import('./internal').VNode | null}\n */\nexport function getCurrentVNode() {\n\treturn renderStack.length > 0 ? renderStack[renderStack.length - 1] : null;\n}\n\n/**\n * If the user doesn't have `@babel/plugin-transform-react-jsx-source`\n * somewhere in his tool chain we can't print the filename and source\n * location of a component. In that case we just omit that, but we'll\n * print a helpful message to the console, notifying the user of it.\n */\nlet hasBabelPlugin = false;\n\n/**\n * Check if a `vnode` is a possible owner.\n * @param {import('./internal').VNode} vnode\n */\nfunction isPossibleOwner(vnode) {\n\treturn typeof vnode.type == 'function' && vnode.type != Fragment;\n}\n\n/**\n * Return the component stack that was captured up to this point.\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function getOwnerStack(vnode) {\n\tconst stack = [vnode];\n\tlet next = vnode;\n\twhile (next._owner != null) {\n\t\tstack.push(next._owner);\n\t\tnext = next._owner;\n\t}\n\n\treturn stack.reduce((acc, owner) => {\n\t\tacc += ` in ${getDisplayName(owner)}`;\n\n\t\tconst source = owner.__source;\n\t\tif (source) {\n\t\t\tacc += ` (at ${source.fileName}:${source.lineNumber})`;\n\t\t} else if (!hasBabelPlugin) {\n\t\t\thasBabelPlugin = true;\n\t\t\tconsole.warn(\n\t\t\t\t'Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.'\n\t\t\t);\n\t\t}\n\n\t\treturn (acc += '\\n');\n\t}, '');\n}\n\n/**\n * Setup code to capture the component trace while rendering. Note that\n * we cannot simply traverse `vnode._parent` upwards, because we have some\n * debug messages for `this.setState` where the `vnode` is `undefined`.\n */\nexport function setupComponentStack() {\n\tlet oldDiff = options._diff;\n\tlet oldDiffed = options.diffed;\n\tlet oldRoot = options._root;\n\tlet oldVNode = options.vnode;\n\tlet oldRender = options._render;\n\n\toptions.diffed = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\townerStack.pop();\n\t\t}\n\t\trenderStack.pop();\n\t\tif (oldDiffed) oldDiffed(vnode);\n\t};\n\n\toptions._diff = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\trenderStack.push(vnode);\n\t\t}\n\t\tif (oldDiff) oldDiff(vnode);\n\t};\n\n\toptions._root = (vnode, parent) => {\n\t\townerStack = [];\n\t\tif (oldRoot) oldRoot(vnode, parent);\n\t};\n\n\toptions.vnode = vnode => {\n\t\tvnode._owner =\n\t\t\townerStack.length > 0 ? ownerStack[ownerStack.length - 1] : null;\n\t\tif (oldVNode) oldVNode(vnode);\n\t};\n\n\toptions._render = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\townerStack.push(vnode);\n\t\t}\n\n\t\tif (oldRender) oldRender(vnode);\n\t};\n}\n","import { checkPropTypes } from './check-props';\nimport { options, Component } from 'preact';\nimport {\n\tELEMENT_NODE,\n\tDOCUMENT_NODE,\n\tDOCUMENT_FRAGMENT_NODE\n} from './constants';\nimport {\n\tgetOwnerStack,\n\tsetupComponentStack,\n\tgetCurrentVNode,\n\tgetDisplayName\n} from './component-stack';\n\nconst isWeakMapSupported = typeof WeakMap == 'function';\n\nfunction getClosestDomNodeParent(parent) {\n\tif (!parent) return {};\n\tif (typeof parent.type == 'function') {\n\t\treturn getClosestDomNodeParent(parent._parent);\n\t}\n\treturn parent;\n}\n\nexport function initDebug() {\n\tsetupComponentStack();\n\n\t/* eslint-disable no-console */\n\tlet oldBeforeDiff = options._diff;\n\tlet oldDiffed = options.diffed;\n\tlet oldVnode = options.vnode;\n\tlet oldCatchError = options._catchError;\n\tlet oldRoot = options._root;\n\tlet oldHook = options._hook;\n\tconst warnedComponents = !isWeakMapSupported\n\t\t? null\n\t\t: {\n\t\t\t\tuseEffect: new WeakMap(),\n\t\t\t\tuseLayoutEffect: new WeakMap(),\n\t\t\t\tlazyPropTypes: new WeakMap()\n\t\t };\n\n\toptions._catchError = (error, vnode, oldVNode) => {\n\t\tlet component = vnode && vnode._component;\n\t\tif (component && typeof error.then == 'function') {\n\t\t\tconst promise = error;\n\t\t\terror = new Error(\n\t\t\t\t`Missing Suspense. The throwing component was: ${getDisplayName(vnode)}`\n\t\t\t);\n\n\t\t\tlet parent = vnode;\n\t\t\tfor (; parent; parent = parent._parent) {\n\t\t\t\tif (parent._component && parent._component._childDidSuspend) {\n\t\t\t\t\terror = promise;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// We haven't recovered and we know at this point that there is no\n\t\t\t// Suspense component higher up in the tree\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\toldCatchError(error, vnode, oldVNode);\n\t};\n\n\toptions._root = (vnode, parentNode) => {\n\t\tif (!parentNode) {\n\t\t\tthrow new Error(\n\t\t\t\t'Undefined parent passed to render(), this is the second argument.\\n' +\n\t\t\t\t\t'Check if the element is available in the DOM/has the correct id.'\n\t\t\t);\n\t\t}\n\t\tlet isValid;\n\t\tswitch (parentNode.nodeType) {\n\t\t\tcase ELEMENT_NODE:\n\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\tcase DOCUMENT_NODE:\n\t\t\t\tisValid = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tisValid = false;\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\tlet componentName = getDisplayName(vnode);\n\t\t\tthrow new Error(\n\t\t\t\t`Expected a valid HTML node as a second argument to render.\tReceived ${parentNode} instead: render(<${componentName} />, ${parentNode});`\n\t\t\t);\n\t\t}\n\n\t\tif (oldRoot) oldRoot(vnode, parentNode);\n\t};\n\n\toptions._diff = vnode => {\n\t\tlet { type, _parent: parent } = vnode;\n\t\tlet parentVNode = getClosestDomNodeParent(parent);\n\n\t\tif (type === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t'Undefined component passed to createElement()\\n\\n' +\n\t\t\t\t\t'You likely forgot to export your component or might have mixed up default and named imports' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type != null && typeof type == 'object') {\n\t\t\tif (type._children !== undefined && type._dom !== undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Invalid type passed to createElement(): ${type}\\n\\n` +\n\t\t\t\t\t\t'Did you accidentally pass a JSX literal as JSX twice?\\n\\n' +\n\t\t\t\t\t\t` let My${getDisplayName(vnode)} = ${serializeVNode(type)};\\n` +\n\t\t\t\t\t\t` let vnode = ;\\n\\n` +\n\t\t\t\t\t\t'This usually happens when you export a JSX literal and not the component.' +\n\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t'Invalid type passed to createElement(): ' +\n\t\t\t\t\t(Array.isArray(type) ? 'array' : type)\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\t(type === 'thead' || type === 'tfoot' || type === 'tbody') &&\n\t\t\tparentVNode.type !== 'table'\n\t\t) {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your
should have a
parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (\n\t\t\ttype === 'tr' &&\n\t\t\tparentVNode.type !== 'thead' &&\n\t\t\tparentVNode.type !== 'tfoot' &&\n\t\t\tparentVNode.type !== 'tbody' &&\n\t\t\tparentVNode.type !== 'table'\n\t\t) {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your should have a parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type === 'td' && parentVNode.type !== 'tr') {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type === 'th' && parentVNode.type !== 'tr') {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your .' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\tvnode.ref !== undefined &&\n\t\t\ttypeof vnode.ref != 'function' &&\n\t\t\ttypeof vnode.ref != 'object' &&\n\t\t\t!('$$typeof' in vnode) // allow string refs when preact-compat is installed\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t`Component's \"ref\" property should be a function, or an object created ` +\n\t\t\t\t\t`by createRef(), but got [${typeof vnode.ref}] instead\\n` +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t}\n\n\t\tif (typeof vnode.type == 'string') {\n\t\t\tfor (const key in vnode.props) {\n\t\t\t\tif (\n\t\t\t\t\tkey[0] === 'o' &&\n\t\t\t\t\tkey[1] === 'n' &&\n\t\t\t\t\ttypeof vnode.props[key] != 'function' &&\n\t\t\t\t\tvnode.props[key] != null\n\t\t\t\t) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Component's \"${key}\" property should be a function, ` +\n\t\t\t\t\t\t\t`but got [${typeof vnode.props[key]}] instead\\n` +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Check prop-types if available\n\t\tif (typeof vnode.type == 'function' && vnode.type.propTypes) {\n\t\t\tif (\n\t\t\t\tvnode.type.displayName === 'Lazy' &&\n\t\t\t\twarnedComponents &&\n\t\t\t\t!warnedComponents.lazyPropTypes.has(vnode.type)\n\t\t\t) {\n\t\t\t\tconst m =\n\t\t\t\t\t'PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ';\n\t\t\t\ttry {\n\t\t\t\t\tconst lazyVNode = vnode.type();\n\t\t\t\t\twarnedComponents.lazyPropTypes.set(vnode.type, true);\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tm + `Component wrapped in lazy() is ${getDisplayName(lazyVNode)}`\n\t\t\t\t\t);\n\t\t\t\t} catch (promise) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tm + \"We will log the wrapped component's name once it is loaded.\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcheckPropTypes(\n\t\t\t\tvnode.type.propTypes,\n\t\t\t\tvnode.props,\n\t\t\t\t'prop',\n\t\t\t\tgetDisplayName(vnode)\n\t\t\t);\n\t\t}\n\n\t\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n\t};\n\n\toptions._hook = comp => {\n\t\tif (!comp) {\n\t\t\tthrow new Error('Hook can only be invoked from render methods.');\n\t\t}\n\n\t\tif (oldHook) oldHook(comp);\n\t};\n\n\tconst warn = (property, err) => ({\n\t\tget() {\n\t\t\tthrow new Error(`getting vnode.${property} is deprecated, ${err}`);\n\t\t},\n\t\tset() {\n\t\t\tthrow new Error(`setting vnode.${property} is not allowed, ${err}`);\n\t\t}\n\t});\n\n\tconst deprecatedAttributes = {\n\t\tnodeName: warn('nodeName', 'use vnode.type'),\n\t\tattributes: warn('attributes', 'use vnode.props'),\n\t\tchildren: warn('children', 'use vnode.props.children')\n\t};\n\n\tconst deprecatedProto = Object.create({}, deprecatedAttributes);\n\n\toptions.vnode = vnode => {\n\t\tconst props = vnode.props;\n\t\tif (\n\t\t\tvnode.type !== null &&\n\t\t\tprops != null &&\n\t\t\t('__source' in props || '__self' in props)\n\t\t) {\n\t\t\tconst newProps = (vnode.props = {});\n\t\t\tfor (let i in props) {\n\t\t\t\tconst v = props[i];\n\t\t\t\tif (i === '__source') vnode.__source = v;\n\t\t\t\telse if (i === '__self') vnode.__self = v;\n\t\t\t\telse newProps[i] = v;\n\t\t\t}\n\t\t}\n\t\tObject.setPrototypeOf(vnode, deprecatedProto);\n\t\tif (oldVnode) oldVnode(vnode);\n\t};\n\n\toptions.diffed = vnode => {\n\t\t// Check if the user passed plain objects as children. Note that we cannot\n\t\t// move this check into `options.vnode` because components can receive\n\t\t// children in any shape they want (e.g.\n\t\t// `{{ foo: 123, bar: \"abc\" }}`).\n\t\t// Putting this check in `options.diffed` ensures that\n\t\t// `vnode._children` is set and that we only validate the children\n\t\t// that were actually rendered.\n\t\tif (vnode._children) {\n\t\t\tvnode._children.forEach(child => {\n\t\t\t\tif (child && child.type === undefined) {\n\t\t\t\t\t// Remove internal vnode keys that will always be patched\n\t\t\t\t\tdelete child._parent;\n\t\t\t\t\tdelete child._depth;\n\t\t\t\t\tconst keys = Object.keys(child).join(',');\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Objects are not valid as a child. Encountered an object with the keys {${keys}}.` +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/** @type {import('./internal').Component} */\n\t\tconst component = vnode._component;\n\t\tif (component && component.__hooks) {\n\t\t\tlet hooks = component.__hooks;\n\t\t\tif (Array.isArray(hooks._list)) {\n\t\t\t\thooks._list.forEach(hook => {\n\t\t\t\t\tif (hook._factory && (!hook._args || !Array.isArray(hook._args))) {\n\t\t\t\t\t\tlet componentName = getDisplayName(vnode);\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`In ${componentName} you are calling useMemo/useCallback without passing arguments.\\n` +\n\t\t\t\t\t\t\t\t`This is a noop since it will not be able to memoize, it will execute it every render.` +\n\t\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (oldDiffed) oldDiffed(vnode);\n\n\t\tif (vnode._children != null) {\n\t\t\tconst keys = [];\n\t\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\t\tconst child = vnode._children[i];\n\t\t\t\tif (!child || child.key == null) continue;\n\n\t\t\t\tconst key = child.key;\n\t\t\t\tif (keys.indexOf(key) !== -1) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'Following component has two or more children with the ' +\n\t\t\t\t\t\t\t`same key attribute: \"${key}\". This may cause glitches and misbehavior ` +\n\t\t\t\t\t\t\t'in rendering process. Component: \\n\\n' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\n\t\t\t\t\t// Break early to not spam the console\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tkeys.push(key);\n\t\t\t}\n\t\t}\n\t};\n}\n\nconst setState = Component.prototype.setState;\nComponent.prototype.setState = function(update, callback) {\n\tif (this._vnode == null) {\n\t\t// `this._vnode` will be `null` during componentWillMount. But it\n\t\t// is perfectly valid to call `setState` during cWM. So we\n\t\t// need an additional check to verify that we are dealing with a\n\t\t// call inside constructor.\n\t\tif (this.state == null) {\n\t\t\tconsole.warn(\n\t\t\t\t`Calling \"this.setState\" inside the constructor of a component is a ` +\n\t\t\t\t\t`no-op and might be a bug in your application. Instead, set ` +\n\t\t\t\t\t`\"this.state = {}\" directly.\\n\\n${getOwnerStack(getCurrentVNode())}`\n\t\t\t);\n\t\t}\n\t} else if (this._parentDom == null) {\n\t\tconsole.warn(\n\t\t\t`Can't call \"this.setState\" on an unmounted component. This is a no-op, ` +\n\t\t\t\t`but it indicates a memory leak in your application. To fix, cancel all ` +\n\t\t\t\t`subscriptions and asynchronous tasks in the componentWillUnmount method.` +\n\t\t\t\t`\\n\\n${getOwnerStack(this._vnode)}`\n\t\t);\n\t}\n\n\treturn setState.call(this, update, callback);\n};\n\nconst forceUpdate = Component.prototype.forceUpdate;\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode == null) {\n\t\tconsole.warn(\n\t\t\t`Calling \"this.forceUpdate\" inside the constructor of a component is a ` +\n\t\t\t\t`no-op and might be a bug in your application.\\n\\n${getOwnerStack(\n\t\t\t\t\tgetCurrentVNode()\n\t\t\t\t)}`\n\t\t);\n\t} else if (this._parentDom == null) {\n\t\tconsole.warn(\n\t\t\t`Can't call \"this.forceUpdate\" on an unmounted component. This is a no-op, ` +\n\t\t\t\t`but it indicates a memory leak in your application. To fix, cancel all ` +\n\t\t\t\t`subscriptions and asynchronous tasks in the componentWillUnmount method.` +\n\t\t\t\t`\\n\\n${getOwnerStack(this._vnode)}`\n\t\t);\n\t}\n\treturn forceUpdate.call(this, callback);\n};\n\n/**\n * Serialize a vnode tree to a string\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function serializeVNode(vnode) {\n\tlet { props } = vnode;\n\tlet name = getDisplayName(vnode);\n\n\tlet attrs = '';\n\tfor (let prop in props) {\n\t\tif (props.hasOwnProperty(prop) && prop !== 'children') {\n\t\t\tlet value = props[prop];\n\n\t\t\t// If it is an object but doesn't have toString(), use Object.toString\n\t\t\tif (typeof value == 'function') {\n\t\t\t\tvalue = `function ${value.displayName || value.name}() {}`;\n\t\t\t}\n\n\t\t\tvalue =\n\t\t\t\tObject(value) === value && !value.toString\n\t\t\t\t\t? Object.prototype.toString.call(value)\n\t\t\t\t\t: value + '';\n\n\t\t\tattrs += ` ${prop}=${JSON.stringify(value)}`;\n\t\t}\n\t}\n\n\tlet children = props.children;\n\treturn `<${name}${attrs}${\n\t\tchildren && children.length ? '>..' : ' />'\n\t}`;\n}\n","import { options, Fragment } from 'preact';\n\nexport function initDevTools() {\n\tif (typeof window != 'undefined' && window.__PREACT_DEVTOOLS__) {\n\t\twindow.__PREACT_DEVTOOLS__.attachPreact('10.0.5', options, {\n\t\t\tFragment\n\t\t});\n\t}\n}\n","const ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nlet loggedTypeFailures = {};\n\n/**\n * Reset the history of which prop type warnings have been logged.\n */\nexport function resetPropWarnings() {\n\tloggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * Adapted from https://github.com/facebook/prop-types/blob/master/checkPropTypes.js\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n */\nexport function checkPropTypes(\n\ttypeSpecs,\n\tvalues,\n\tlocation,\n\tcomponentName,\n\tgetStack\n) {\n\tObject.keys(typeSpecs).forEach(typeSpecName => {\n\t\tlet error;\n\t\ttry {\n\t\t\terror = typeSpecs[typeSpecName](\n\t\t\t\tvalues,\n\t\t\t\ttypeSpecName,\n\t\t\t\tcomponentName,\n\t\t\t\tlocation,\n\t\t\t\tnull,\n\t\t\t\tReactPropTypesSecret\n\t\t\t);\n\t\t} catch (e) {\n\t\t\terror = e;\n\t\t}\n\t\tif (error && !(error.message in loggedTypeFailures)) {\n\t\t\tloggedTypeFailures[error.message] = true;\n\t\t\tconsole.error(\n\t\t\t\t`Failed ${location} type: ${error.message}${(getStack && getStack()) ||\n\t\t\t\t\t''}`\n\t\t\t);\n\t\t}\n\t});\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./fisica.js\") );\n\t\t\t}, \"route-fisica\");\n\t\t}\n\n\t\texport default Async(load);\n\t"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/bundle.6b8a3.esm.js b/docs/bundle.6b8a3.esm.js deleted file mode 100644 index e41f61d..0000000 --- a/docs/bundle.6b8a3.esm.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t){function e(e){for(var n,o,r=e[0],a=e[1],u=0,c=[];u{e=this.base=this.nextBase||this.__b,t(t=>{this.setState({child:t.default||t})})},this.shouldComponentUpdate=(t,r)=>(n=(r=void 0===r.child)&&void 0===n&&e?3===e.nodeType?e.data:Object(o.h)(e.nodeName,{dangerouslySetInnerHTML:{__html:e.innerHTML}}):"",!r),this.render=(t,e)=>e.child?Object(o.h)(e.child,t):n}return(e.prototype=new o.Component).constructor=e,e}},Vh2B:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){n.e(3).then(function(){t(n("HmML"))}.bind(null,n)).catch(n.oe)}))},WC2o:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){n.e(6).then(function(){t(n("EIZr"))}.bind(null,n)).catch(n.oe)}))},Y3FI:function(t,e,n){"use strict";function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t,e,n){var o,r=/(?:\?([^#]*))?(#.*)?$/,i=t.match(r),a={};if(i&&i[1])for(var c=i[1].split("&"),l=0;le.rank?-1:t.index-e.index}function a(t,e){return t.index=e,t.rank=function(t){return t.props.default?0:u(t.props.path).map(c).join("")}(t),t.props}function u(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function c(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function l(){var t;return""+((t=m&&m.location?m.location:m&&m.getCurrentLocation?m.getCurrentLocation():"undefined"!=typeof location?location:w).pathname||"")+(t.search||"")}function s(t,e){return void 0===e&&(e=!1),"string"!=typeof t&&t.url&&(e=t.replace,t=t.url),function(t){for(var e=g.length;e--;)if(g[e].canRoute(t))return!0;return!1}(t)&&function(t,e){void 0===e&&(e="push"),m&&m[e]?m[e](t):"undefined"!=typeof history&&history[e+"State"]&&history[e+"State"](null,null,t)}(t,e?"replace":"push"),f(t)}function f(t){for(var e=!1,n=0;n0},e.prototype.routeTo=function(t){this.setState({url:t});var e=this.canRoute(t);return this.updating||this.forceUpdate(),e},e.prototype.componentWillMount=function(){g.push(this),this.updating=!0},e.prototype.componentDidMount=function(){var t=this;m&&(this.unlisten=m.listen((function(e){t.routeTo(""+(e.pathname||"")+(e.search||""))}))),this.updating=!1},e.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),g.splice(g.indexOf(this),1)},e.prototype.componentWillUpdate=function(){this.updating=!0},e.prototype.componentDidUpdate=function(){this.updating=!1},e.prototype.getMatchingChildren=function(t,e,n){return t.filter(a).sort(i).map((function(t){var i=r(e,t.props.path,t.props);if(i){if(!1!==n){var a={url:e,matches:i};return o(a,i),delete a.ref,delete a.key,Object(v.cloneElement)(t,a)}return t}})).filter(Boolean)},e.prototype.render=function(t,e){var n=t.children,o=t.onChange,r=e.url,i=this.getMatchingChildren(Object(v.toChildArray)(n),r,!0),a=i[0]||null,u=this.previousUrl;return r!==u&&(this.previousUrl=r,"function"==typeof o&&o({router:this,url:r,previous:u,active:i,current:a})),a},e}(v.Component);C.subscribers=b,C.getCurrentUrl=l,C.route=s,C.Router=C,C.Route=function(t){return Object(v.createElement)(t.component,t)},C.Link=function(t){return Object(v.createElement)("a",o({onClick:d},t))},C.exec=r,e.a=C},YPgt:function(t){t.exports={copyright:"copyright__2FTnU"}},afj4:function(){},hosL:function(t,e,n){"use strict";function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t){var e=t.parentNode;e&&e.removeChild(t)}function i(t,e,n){var o,r=arguments,i={};for(o in e)"key"!==o&&"ref"!==o&&(i[o]=e[o]);if(arguments.length>3)for(n=[n],o=3;o2&&(e.children=R.slice.call(arguments,2)),a(t.type,e,e.key||t.key,e.ref||t.ref,null)}function P(t){var e={},n={__c:"__cC"+D++,__:t,Consumer:function(t,e){return t.children(e)},Provider:function(t){var o,r=this;return this.getChildContext||(o=[],this.getChildContext=function(){return e[n.__c]=r,e},this.shouldComponentUpdate=function(t){r.props.value!==t.value&&o.some((function(e){e.context=t.value,p(e)}))},this.sub=function(t){o.push(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){o.splice(o.indexOf(t),1),e&&e.call(t)}}),t.children}};return n.Consumer.contextType=n,n}n.r(e),n.d(e,"render",(function(){return O})),n.d(e,"hydrate",(function(){return S})),n.d(e,"createElement",(function(){return i})),n.d(e,"h",(function(){return i})),n.d(e,"Fragment",(function(){return c})),n.d(e,"createRef",(function(){return u})),n.d(e,"isValidElement",(function(){return A})),n.d(e,"Component",(function(){return l})),n.d(e,"cloneElement",(function(){return x})),n.d(e,"createContext",(function(){return P})),n.d(e,"toChildArray",(function(){return _})),n.d(e,"_unmount",(function(){return C})),n.d(e,"options",(function(){return T}));var T,A,L,j,U,N,I,D,M={},R=[],W=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;T={__e:function(t,e){for(var n,o;e=e.__;)if((n=e.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(o=!0,n.setState(n.constructor.getDerivedStateFromError(t))),null!=n.componentDidCatch&&(o=!0,n.componentDidCatch(t)),o)return p(n.__E=n)}catch(e){t=e}throw t}},A=function(t){return null!=t&&void 0===t.constructor},l.prototype.setState=function(t,e){var n;n=this.__s!==this.state?this.__s:this.__s=o({},this.state),"function"==typeof t&&(t=t(n,this.props)),t&&o(n,t),null!=t&&this.__v&&(e&&this.__h.push(e),p(this))},l.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),p(this))},l.prototype.render=c,L=[],j=0,U="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,I=M,D=0},mIK7:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){n.e(8).then(function(){t(n("/fDt"))}.bind(null,n)).catch(n.oe)}))},mdyV:function(t,e,n){"use strict";n.r(e);var o=n("hosL");const{h:r,render:i}=o,a=t=>t&&t.default?t.default:t;if("serviceWorker"in navigator&&navigator.serviceWorker.register(n.p+"sw-esm.js"),"function"==typeof a(n("QfWi"))){let t=document.getElementById("preact_root")||document.body.firstElementChild;(()=>{let e=a(n("QfWi")),o={};const u=document.querySelector('[type="__PREACT_CLI_DATA__"]');u&&(o=JSON.parse(u.innerHTML).preRenderData||o),t=i(r(e,{CLI_DATA:{preRenderData:o}}),document.body,t)})()}},ve3R:function(t,e,n){"use strict";function o(){return(o=Object.assign||function(t){for(var e=1;e=0;p--){var d=a[p];"."===d?i(a,p):".."===d?(i(a,p),f++):f&&(i(a,p),f--)}if(!l)for(;f--;f)a.unshift("..");!l||""===a[0]||a[0]&&r(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h},v=function(t){if(!t)throw new Error("Invariant failed")},y=!("undefined"==typeof window||!window.document||!window.document.createElement),m={hashbang:{encodePath:function(t){return"!"===t.charAt(0)?t:"!/"+u(t)},decodePath:function(t){return"!"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:u,decodePath:a},slash:{encodePath:a,decodePath:a}}},"y+LV":function(t,e,n){"use strict";function o(t){return t.type===c.Fragment?"Fragment":"function"==typeof t.type?t.type.displayName||t.type.name:"string"==typeof t.type?t.type:"#text"}function r(){return s.length>0?s[s.length-1]:null}function i(t){return"function"==typeof t.type&&t.type!=c.Fragment}function a(t){for(var e=[t],n=t;null!=n.__o;)e.push(n.__o),n=n.__o;return e.reduce((function(t,e){t+=" in "+o(e);var n=e.__source;return n?t+=" (at "+n.fileName+":"+n.lineNumber+")":p||(p=!0,console.warn("Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.")),t+"\n"}),"")}function u(t){var e=t.props,n=o(t),r="";for(var i in e)if(e.hasOwnProperty(i)&&"children"!==i){var a=e[i];"function"==typeof a&&(a="function "+(a.displayName||a.name)+"() {}"),a=Object(a)!==a||a.toString?a+"":Object.prototype.toString.call(a),r+=" "+i+"="+JSON.stringify(a)}var u=e.children;return"<"+n+r+(u&&u.length?">..":" />")}var c=n("hosL");"undefined"!=typeof window&&window.__PREACT_DEVTOOLS__&&window.__PREACT_DEVTOOLS__.attachPreact("10.0.5",c.options,{Fragment:c.Fragment});var l={},s=[],f=[],p=!1,d="function"==typeof WeakMap,h=c.Component.prototype.setState;c.Component.prototype.setState=function(t,e){return null==this.__v?null==this.state&&console.warn('Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.setState" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),h.call(this,t,e)};var _=c.Component.prototype.forceUpdate;c.Component.prototype.forceUpdate=function(t){return null==this.__v?console.warn('Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),_.call(this,t)},function(){!function(){var t=c.options.__b,e=c.options.diffed,n=c.options.__,o=c.options.vnode,r=c.options.__r;c.options.diffed=function(t){i(t)&&f.pop(),s.pop(),e&&e(t)},c.options.__b=function(e){i(e)&&s.push(e),t&&t(e)},c.options.__=function(t,e){f=[],n&&n(t,e)},c.options.vnode=function(t){t.__o=f.length>0?f[f.length-1]:null,o&&o(t)},c.options.__r=function(t){i(t)&&f.push(t),r&&r(t)}}();var t=c.options.__b,e=c.options.diffed,n=c.options.vnode,r=c.options.__e,p=c.options.__,h=c.options.__h,_=d?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null;c.options.__e=function(t,e,n){if(e&&e.__c&&"function"==typeof t.then){var i=t;t=new Error("Missing Suspense. The throwing component was: "+o(e));for(var a=e;a;a=a.__)if(a.__c&&a.__c.__c){t=i;break}if(t instanceof Error)throw t}r(t,e,n)},c.options.__=function(t,e){if(!e)throw new Error("Undefined parent passed to render(), this is the second argument.\nCheck if the element is available in the DOM/has the correct id.");var n;switch(e.nodeType){case 1:case 11:case 9:n=!0;break;default:n=!1}if(!n){var r=o(t);throw new Error("Expected a valid HTML node as a second argument to render.\tReceived "+e+" instead: render(<"+r+" />, "+e+");")}p&&p(t,e)},c.options.__b=function(e){var n,r,i,c=e.type,s=function t(e){return e?"function"==typeof e.type?t(e.__):e:{}}(e.__);if(void 0===c)throw new Error("Undefined component passed to createElement()\n\nYou likely forgot to export your component or might have mixed up default and named imports"+u(e)+"\n\n"+a(e));if(null!=c&&"object"==typeof c){if(void 0!==c.__k&&void 0!==c.__e)throw new Error("Invalid type passed to createElement(): "+c+"\n\nDid you accidentally pass a JSX literal as JSX twice?\n\n let My"+o(e)+" = "+u(c)+";\n let vnode = ;\n\nThis usually happens when you export a JSX literal and not the component.\n\n"+a(e));throw new Error("Invalid type passed to createElement(): "+(Array.isArray(c)?"array":c))}if("thead"!==c&&"tfoot"!==c&&"tbody"!==c||"table"===s.type?"tr"===c&&"thead"!==s.type&&"tfoot"!==s.type&&"tbody"!==s.type&&"table"!==s.type?console.error("Improper nesting of table. Your should have a parent."+u(e)+"\n\n"+a(e)):"td"===c&&"tr"!==s.type?console.error("Improper nesting of table. Your parent."+u(e)+"\n\n"+a(e)):"th"===c&&"tr"!==s.type&&console.error("Improper nesting of table. Your ."+u(e)+"\n\n"+a(e)):console.error("Improper nesting of table. Your should have a
should have a
should have a
should have a
should have a
parent."+u(e)+"\n\n"+a(e)),void 0!==e.ref&&"function"!=typeof e.ref&&"object"!=typeof e.ref&&!("$$typeof"in e))throw new Error('Component\'s "ref" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+"] instead\n"+u(e)+"\n\n"+a(e));if("string"==typeof e.type)for(var f in e.props)if("o"===f[0]&&"n"===f[1]&&"function"!=typeof e.props[f]&&null!=e.props[f])throw new Error("Component's \""+f+'" property should be a function, but got ['+typeof e.props[f]+"] instead\n"+u(e)+"\n\n"+a(e));if("function"==typeof e.type&&e.type.propTypes){if("Lazy"===e.type.displayName&&_&&!_.lazyPropTypes.has(e.type)){var p="PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ";try{var d=e.type();_.lazyPropTypes.set(e.type,!0),console.warn(p+"Component wrapped in lazy() is "+o(d))}catch(e){console.warn(p+"We will log the wrapped component's name once it is loaded.")}}n=e.type.propTypes,r=e.props,i=o(e),Object.keys(n).forEach((function(t){var e;try{e=n[t](r,t,i,"prop",null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(t){e=t}!e||e.message in l||(l[e.message]=!0,console.error("Failed prop type: "+e.message))}))}t&&t(e)},c.options.__h=function(t){if(!t)throw new Error("Hook can only be invoked from render methods.");h&&h(t)};var v=function(t,e){return{get:function(){throw new Error("getting vnode."+t+" is deprecated, "+e)},set:function(){throw new Error("setting vnode."+t+" is not allowed, "+e)}}},y={nodeName:v("nodeName","use vnode.type"),attributes:v("attributes","use vnode.props"),children:v("children","use vnode.props.children")},m=Object.create({},y);c.options.vnode=function(t){var e=t.props;if(null!==t.type&&null!=e&&("__source"in e||"__self"in e)){var o=t.props={};for(var r in e){var i=e[r];"__source"===r?t.__source=i:"__self"===r?t.__self=i:o[r]=i}}Object.setPrototypeOf(t,m),n&&n(t)},c.options.diffed=function(t){t.__k&&t.__k.forEach((function(e){if(e&&void 0===e.type){delete e.__,delete e.__b;var n=Object.keys(e).join(",");throw new Error("Objects are not valid as a child. Encountered an object with the keys {"+n+"}.\n\n"+a(t))}}));var n=t.__c;if(n&&n.__H){var r=n.__H;Array.isArray(r.__)&&r.__.forEach((function(e){if(e.__h&&(!e.__H||!Array.isArray(e.__H))){var n=o(t);console.warn("In "+n+" you are calling useMemo/useCallback without passing arguments.\nThis is a noop since it will not be able to memoize, it will execute it every render.\n\n"+a(t))}}))}if(e&&e(t),null!=t.__k)for(var i=[],c=0;c{e=this.base=this.nextBase||this.__b,t(t=>{this.setState({child:t.default||t})})},this.shouldComponentUpdate=(t,r)=>(n=(r=void 0===r.child)&&void 0===n&&e?3===e.nodeType?e.data:Object(o.h)(e.nodeName,{dangerouslySetInnerHTML:{__html:e.innerHTML}}):"",!r),this.render=(t,e)=>e.child?Object(o.h)(e.child,t):n}return(e.prototype=new o.Component).constructor=e,e}},Vh2B:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){n.e(3).then(function(){t(n("HmML"))}.bind(null,n)).catch(n.oe)}))},WC2o:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){n.e(6).then(function(){t(n("EIZr"))}.bind(null,n)).catch(n.oe)}))},Y3FI:function(t,e,n){"use strict";function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t,e,n){var o,r=/(?:\?([^#]*))?(#.*)?$/,i=t.match(r),a={};if(i&&i[1])for(var c=i[1].split("&"),l=0;le.rank?-1:t.index-e.index}function a(t,e){return t.index=e,t.rank=function(t){return t.props.default?0:u(t.props.path).map(c).join("")}(t),t.props}function u(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function c(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function l(){var t;return""+((t=m&&m.location?m.location:m&&m.getCurrentLocation?m.getCurrentLocation():"undefined"!=typeof location?location:w).pathname||"")+(t.search||"")}function s(t,e){return void 0===e&&(e=!1),"string"!=typeof t&&t.url&&(e=t.replace,t=t.url),function(t){for(var e=g.length;e--;)if(g[e].canRoute(t))return!0;return!1}(t)&&function(t,e){void 0===e&&(e="push"),m&&m[e]?m[e](t):"undefined"!=typeof history&&history[e+"State"]&&history[e+"State"](null,null,t)}(t,e?"replace":"push"),f(t)}function f(t){for(var e=!1,n=0;n0},e.prototype.routeTo=function(t){this.setState({url:t});var e=this.canRoute(t);return this.updating||this.forceUpdate(),e},e.prototype.componentWillMount=function(){g.push(this),this.updating=!0},e.prototype.componentDidMount=function(){var t=this;m&&(this.unlisten=m.listen((function(e){t.routeTo(""+(e.pathname||"")+(e.search||""))}))),this.updating=!1},e.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),g.splice(g.indexOf(this),1)},e.prototype.componentWillUpdate=function(){this.updating=!0},e.prototype.componentDidUpdate=function(){this.updating=!1},e.prototype.getMatchingChildren=function(t,e,n){return t.filter(a).sort(i).map((function(t){var i=r(e,t.props.path,t.props);if(i){if(!1!==n){var a={url:e,matches:i};return o(a,i),delete a.ref,delete a.key,Object(v.cloneElement)(t,a)}return t}})).filter(Boolean)},e.prototype.render=function(t,e){var n=t.children,o=t.onChange,r=e.url,i=this.getMatchingChildren(Object(v.toChildArray)(n),r,!0),a=i[0]||null,u=this.previousUrl;return r!==u&&(this.previousUrl=r,"function"==typeof o&&o({router:this,url:r,previous:u,active:i,current:a})),a},e}(v.Component);C.subscribers=b,C.getCurrentUrl=l,C.route=s,C.Router=C,C.Route=function(t){return Object(v.createElement)(t.component,t)},C.Link=function(t){return Object(v.createElement)("a",o({onClick:d},t))},C.exec=r,e.a=C},YPgt:function(t){t.exports={copyright:"copyright__2FTnU"}},afj4:function(){},hosL:function(t,e,n){"use strict";function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t){var e=t.parentNode;e&&e.removeChild(t)}function i(t,e,n){var o,r=arguments,i={};for(o in e)"key"!==o&&"ref"!==o&&(i[o]=e[o]);if(arguments.length>3)for(n=[n],o=3;o2&&(e.children=R.slice.call(arguments,2)),a(t.type,e,e.key||t.key,e.ref||t.ref,null)}function P(t){var e={},n={__c:"__cC"+D++,__:t,Consumer:function(t,e){return t.children(e)},Provider:function(t){var o,r=this;return this.getChildContext||(o=[],this.getChildContext=function(){return e[n.__c]=r,e},this.shouldComponentUpdate=function(t){r.props.value!==t.value&&o.some((function(e){e.context=t.value,p(e)}))},this.sub=function(t){o.push(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){o.splice(o.indexOf(t),1),e&&e.call(t)}}),t.children}};return n.Consumer.contextType=n,n}n.r(e),n.d(e,"render",(function(){return O})),n.d(e,"hydrate",(function(){return S})),n.d(e,"createElement",(function(){return i})),n.d(e,"h",(function(){return i})),n.d(e,"Fragment",(function(){return c})),n.d(e,"createRef",(function(){return u})),n.d(e,"isValidElement",(function(){return A})),n.d(e,"Component",(function(){return l})),n.d(e,"cloneElement",(function(){return x})),n.d(e,"createContext",(function(){return P})),n.d(e,"toChildArray",(function(){return _})),n.d(e,"_unmount",(function(){return C})),n.d(e,"options",(function(){return T}));var T,A,L,j,U,N,I,D,M={},R=[],W=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;T={__e:function(t,e){for(var n,o;e=e.__;)if((n=e.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(o=!0,n.setState(n.constructor.getDerivedStateFromError(t))),null!=n.componentDidCatch&&(o=!0,n.componentDidCatch(t)),o)return p(n.__E=n)}catch(e){t=e}throw t}},A=function(t){return null!=t&&void 0===t.constructor},l.prototype.setState=function(t,e){var n;n=this.__s!==this.state?this.__s:this.__s=o({},this.state),"function"==typeof t&&(t=t(n,this.props)),t&&o(n,t),null!=t&&this.__v&&(e&&this.__h.push(e),p(this))},l.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),p(this))},l.prototype.render=c,L=[],j=0,U="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,I=M,D=0},mIK7:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){n.e(8).then(function(){t(n("/fDt"))}.bind(null,n)).catch(n.oe)}))},mdyV:function(t,e,n){"use strict";n.r(e);var o=n("hosL");const{h:r,render:i}=o,a=t=>t&&t.default?t.default:t;if("serviceWorker"in navigator&&navigator.serviceWorker.register(n.p+"sw-esm.js"),"function"==typeof a(n("QfWi"))){let t=document.getElementById("preact_root")||document.body.firstElementChild;(()=>{let e=a(n("QfWi")),o={};const u=document.querySelector('[type="__PREACT_CLI_DATA__"]');u&&(o=JSON.parse(u.innerHTML).preRenderData||o),t=i(r(e,{CLI_DATA:{preRenderData:o}}),document.body,t)})()}},ve3R:function(t,e,n){"use strict";function o(){return(o=Object.assign||function(t){for(var e=1;e=0;p--){var d=a[p];"."===d?i(a,p):".."===d?(i(a,p),f++):f&&(i(a,p),f--)}if(!l)for(;f--;f)a.unshift("..");!l||""===a[0]||a[0]&&r(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h},v=function(t){if(!t)throw new Error("Invariant failed")},y=!("undefined"==typeof window||!window.document||!window.document.createElement),m={hashbang:{encodePath:function(t){return"!"===t.charAt(0)?t:"!/"+u(t)},decodePath:function(t){return"!"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:u,decodePath:a},slash:{encodePath:a,decodePath:a}}},"y+LV":function(t,e,n){"use strict";function o(t){return t.type===c.Fragment?"Fragment":"function"==typeof t.type?t.type.displayName||t.type.name:"string"==typeof t.type?t.type:"#text"}function r(){return s.length>0?s[s.length-1]:null}function i(t){return"function"==typeof t.type&&t.type!=c.Fragment}function a(t){for(var e=[t],n=t;null!=n.__o;)e.push(n.__o),n=n.__o;return e.reduce((function(t,e){t+=" in "+o(e);var n=e.__source;return n?t+=" (at "+n.fileName+":"+n.lineNumber+")":p||(p=!0,console.warn("Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.")),t+"\n"}),"")}function u(t){var e=t.props,n=o(t),r="";for(var i in e)if(e.hasOwnProperty(i)&&"children"!==i){var a=e[i];"function"==typeof a&&(a="function "+(a.displayName||a.name)+"() {}"),a=Object(a)!==a||a.toString?a+"":Object.prototype.toString.call(a),r+=" "+i+"="+JSON.stringify(a)}var u=e.children;return"<"+n+r+(u&&u.length?">..":" />")}var c=n("hosL");"undefined"!=typeof window&&window.__PREACT_DEVTOOLS__&&window.__PREACT_DEVTOOLS__.attachPreact("10.0.5",c.options,{Fragment:c.Fragment});var l={},s=[],f=[],p=!1,d="function"==typeof WeakMap,h=c.Component.prototype.setState;c.Component.prototype.setState=function(t,e){return null==this.__v?null==this.state&&console.warn('Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.setState" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),h.call(this,t,e)};var _=c.Component.prototype.forceUpdate;c.Component.prototype.forceUpdate=function(t){return null==this.__v?console.warn('Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),_.call(this,t)},function(){!function(){var t=c.options.__b,e=c.options.diffed,n=c.options.__,o=c.options.vnode,r=c.options.__r;c.options.diffed=function(t){i(t)&&f.pop(),s.pop(),e&&e(t)},c.options.__b=function(e){i(e)&&s.push(e),t&&t(e)},c.options.__=function(t,e){f=[],n&&n(t,e)},c.options.vnode=function(t){t.__o=f.length>0?f[f.length-1]:null,o&&o(t)},c.options.__r=function(t){i(t)&&f.push(t),r&&r(t)}}();var t=c.options.__b,e=c.options.diffed,n=c.options.vnode,r=c.options.__e,p=c.options.__,h=c.options.__h,_=d?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null;c.options.__e=function(t,e,n){if(e&&e.__c&&"function"==typeof t.then){var i=t;t=new Error("Missing Suspense. The throwing component was: "+o(e));for(var a=e;a;a=a.__)if(a.__c&&a.__c.__c){t=i;break}if(t instanceof Error)throw t}r(t,e,n)},c.options.__=function(t,e){if(!e)throw new Error("Undefined parent passed to render(), this is the second argument.\nCheck if the element is available in the DOM/has the correct id.");var n;switch(e.nodeType){case 1:case 11:case 9:n=!0;break;default:n=!1}if(!n){var r=o(t);throw new Error("Expected a valid HTML node as a second argument to render.\tReceived "+e+" instead: render(<"+r+" />, "+e+");")}p&&p(t,e)},c.options.__b=function(e){var n,r,i,c=e.type,s=function t(e){return e?"function"==typeof e.type?t(e.__):e:{}}(e.__);if(void 0===c)throw new Error("Undefined component passed to createElement()\n\nYou likely forgot to export your component or might have mixed up default and named imports"+u(e)+"\n\n"+a(e));if(null!=c&&"object"==typeof c){if(void 0!==c.__k&&void 0!==c.__e)throw new Error("Invalid type passed to createElement(): "+c+"\n\nDid you accidentally pass a JSX literal as JSX twice?\n\n let My"+o(e)+" = "+u(c)+";\n let vnode = ;\n\nThis usually happens when you export a JSX literal and not the component.\n\n"+a(e));throw new Error("Invalid type passed to createElement(): "+(Array.isArray(c)?"array":c))}if("thead"!==c&&"tfoot"!==c&&"tbody"!==c||"table"===s.type?"tr"===c&&"thead"!==s.type&&"tfoot"!==s.type&&"tbody"!==s.type&&"table"!==s.type?console.error("Improper nesting of table. Your should have a parent."+u(e)+"\n\n"+a(e)):"td"===c&&"tr"!==s.type?console.error("Improper nesting of table. Your parent."+u(e)+"\n\n"+a(e)):"th"===c&&"tr"!==s.type&&console.error("Improper nesting of table. Your ."+u(e)+"\n\n"+a(e)):console.error("Improper nesting of table. Your should have a
should have a
should have a
parent."+u(e)+"\n\n"+a(e)),void 0!==e.ref&&"function"!=typeof e.ref&&"object"!=typeof e.ref&&!("$$typeof"in e))throw new Error('Component\'s "ref" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+"] instead\n"+u(e)+"\n\n"+a(e));if("string"==typeof e.type)for(var f in e.props)if("o"===f[0]&&"n"===f[1]&&"function"!=typeof e.props[f]&&null!=e.props[f])throw new Error("Component's \""+f+'" property should be a function, but got ['+typeof e.props[f]+"] instead\n"+u(e)+"\n\n"+a(e));if("function"==typeof e.type&&e.type.propTypes){if("Lazy"===e.type.displayName&&_&&!_.lazyPropTypes.has(e.type)){var p="PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ";try{var d=e.type();_.lazyPropTypes.set(e.type,!0),console.warn(p+"Component wrapped in lazy() is "+o(d))}catch(e){console.warn(p+"We will log the wrapped component's name once it is loaded.")}}n=e.type.propTypes,r=e.props,i=o(e),Object.keys(n).forEach((function(t){var e;try{e=n[t](r,t,i,"prop",null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(t){e=t}!e||e.message in l||(l[e.message]=!0,console.error("Failed prop type: "+e.message))}))}t&&t(e)},c.options.__h=function(t){if(!t)throw new Error("Hook can only be invoked from render methods.");h&&h(t)};var v=function(t,e){return{get:function(){throw new Error("getting vnode."+t+" is deprecated, "+e)},set:function(){throw new Error("setting vnode."+t+" is not allowed, "+e)}}},y={nodeName:v("nodeName","use vnode.type"),attributes:v("attributes","use vnode.props"),children:v("children","use vnode.props.children")},m=Object.create({},y);c.options.vnode=function(t){var e=t.props;if(null!==t.type&&null!=e&&("__source"in e||"__self"in e)){var o=t.props={};for(var r in e){var i=e[r];"__source"===r?t.__source=i:"__self"===r?t.__self=i:o[r]=i}}Object.setPrototypeOf(t,m),n&&n(t)},c.options.diffed=function(t){t.__k&&t.__k.forEach((function(e){if(e&&void 0===e.type){delete e.__,delete e.__b;var n=Object.keys(e).join(",");throw new Error("Objects are not valid as a child. Encountered an object with the keys {"+n+"}.\n\n"+a(t))}}));var n=t.__c;if(n&&n.__H){var r=n.__H;Array.isArray(r.__)&&r.__.forEach((function(e){if(e.__h&&(!e.__H||!Array.isArray(e.__H))){var n=o(t);console.warn("In "+n+" you are calling useMemo/useCallback without passing arguments.\nThis is a noop since it will not be able to memoize, it will execute it every render.\n\n"+a(t))}}))}if(e&&e(t),null!=t.__k)for(var i=[],c=0;ce.rank?-1:t.index-e.index}function a(t,e){return t.index=e,t.rank=function(t){return t.props.default?0:(e=t.props.path,u(e).map(c).join(""));var e}(t),t.props}function u(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function c(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function l(){var t;return""+((t=m&&m.location?m.location:m&&m.getCurrentLocation?m.getCurrentLocation():"undefined"!=typeof location?location:w).pathname||"")+(t.search||"")}function s(t,e){return void 0===e&&(e=!1),"string"!=typeof t&&t.url&&(e=t.replace,t=t.url),function(t){for(var e=g.length;e--;)if(g[e].canRoute(t))return!0;return!1}(t)&&function(t,e){void 0===e&&(e="push"),m&&m[e]?m[e](t):"undefined"!=typeof history&&history[e+"State"]&&history[e+"State"](null,null,t)}(t,e?"replace":"push"),p(t)}function p(t){for(var e=!1,n=0;n0},e.prototype.routeTo=function(t){this.setState({url:t});var e=this.canRoute(t);return this.updating||this.forceUpdate(),e},e.prototype.componentWillMount=function(){g.push(this),this.updating=!0},e.prototype.componentDidMount=function(){var t=this;m&&(this.unlisten=m.listen((function(e){t.routeTo(""+(e.pathname||"")+(e.search||""))}))),this.updating=!1},e.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),g.splice(g.indexOf(this),1)},e.prototype.componentWillUpdate=function(){this.updating=!0},e.prototype.componentDidUpdate=function(){this.updating=!1},e.prototype.getMatchingChildren=function(t,e,n){return t.filter(a).sort(i).map((function(t){var i=r(e,t.props.path,t.props);if(i){if(!1!==n){var a={url:e,matches:i};return o(a,i),delete a.ref,delete a.key,Object(y.cloneElement)(t,a)}return t}})).filter(Boolean)},e.prototype.render=function(t,e){var n=t.children,o=t.onChange,r=e.url,i=this.getMatchingChildren(Object(y.toChildArray)(n),r,!0),a=i[0]||null,u=this.previousUrl;return r!==u&&(this.previousUrl=r,"function"==typeof o&&o({router:this,url:r,previous:u,active:i,current:a})),a},e}(y.Component);C.subscribers=b,C.getCurrentUrl=l,C.route=s,C.Router=C,C.Route=function(t){return Object(y.createElement)(t.component,t)},C.Link=function(t){return Object(y.createElement)("a",o({onClick:h},t))},C.exec=r,e.a=C},YPgt:function(t){t.exports={copyright:"copyright__2FTnU"}},afj4:function(){},hosL:function(t,e,n){"use strict";function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t){var e=t.parentNode;e&&e.removeChild(t)}function i(t,e,n){var o,r=arguments,i={};for(o in e)"key"!==o&&"ref"!==o&&(i[o]=e[o]);if(arguments.length>3)for(n=[n],o=3;o2&&(e.children=R.slice.call(arguments,2)),a(t.type,e,e.key||t.key,e.ref||t.ref,null)}function P(t){var e={},n={__c:"__cC"+D++,__:t,Consumer:function(t,e){return t.children(e)},Provider:function(t){var o,r=this;return this.getChildContext||(o=[],this.getChildContext=function(){return e[n.__c]=r,e},this.shouldComponentUpdate=function(t){r.props.value!==t.value&&o.some((function(e){e.context=t.value,f(e)}))},this.sub=function(t){o.push(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){o.splice(o.indexOf(t),1),e&&e.call(t)}}),t.children}};return n.Consumer.contextType=n,n}n.r(e),n.d(e,"render",(function(){return O})),n.d(e,"hydrate",(function(){return S})),n.d(e,"createElement",(function(){return i})),n.d(e,"h",(function(){return i})),n.d(e,"Fragment",(function(){return c})),n.d(e,"createRef",(function(){return u})),n.d(e,"isValidElement",(function(){return A})),n.d(e,"Component",(function(){return l})),n.d(e,"cloneElement",(function(){return x})),n.d(e,"createContext",(function(){return P})),n.d(e,"toChildArray",(function(){return _})),n.d(e,"_unmount",(function(){return C})),n.d(e,"options",(function(){return T}));var T,A,L,j,U,N,I,D,M={},R=[],W=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;T={__e:function(t,e){for(var n,o;e=e.__;)if((n=e.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(o=!0,n.setState(n.constructor.getDerivedStateFromError(t))),null!=n.componentDidCatch&&(o=!0,n.componentDidCatch(t)),o)return f(n.__E=n)}catch(e){t=e}throw t}},A=function(t){return null!=t&&void 0===t.constructor},l.prototype.setState=function(t,e){var n;n=this.__s!==this.state?this.__s:this.__s=o({},this.state),"function"==typeof t&&(t=t(n,this.props)),t&&o(n,t),null!=t&&this.__v&&(e&&this.__h.push(e),f(this))},l.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),f(this))},l.prototype.render=c,L=[],j=0,U="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,I=M,D=0},mIK7:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){n.e(8).then(function(){t(n("/fDt"))}.bind(null,n)).catch(n.oe)}))},mdyV:function(t,e,n){"use strict";n.r(e);var o=n("hosL"),r=o.h,i=o.render,a=function(t){return t&&t.default?t.default:t};if("serviceWorker"in navigator&&navigator.serviceWorker.register(n.p+"sw.js"),"function"==typeof a(n("QfWi"))){var u=document.getElementById("preact_root")||document.body.firstElementChild;0,function(){var t=a(n("QfWi")),e={},o=document.querySelector('[type="__PREACT_CLI_DATA__"]');o&&(e=JSON.parse(o.innerHTML).preRenderData||e);var c;e.url&&(c=e.url);u=i(r(t,{CLI_DATA:{preRenderData:e}}),document.body,u)}()}},ve3R:function(t,e,n){"use strict";function o(){return(o=Object.assign||function(t){for(var e=1;e=0;f--){var h=a[f];"."===h?i(a,f):".."===h?(i(a,f),p++):p&&(i(a,f),p--)}if(!l)for(;p--;p)a.unshift("..");!l||""===a[0]||a[0]&&r(a[0])||a.unshift("");var d=a.join("/");return n&&"/"!==d.substr(-1)&&(d+="/"),d},g=function(t){if(!t)throw new Error("Invariant failed")},b=!("undefined"==typeof window||!window.document||!window.document.createElement),w={hashbang:{encodePath:function(t){return"!"===t.charAt(0)?t:"!/"+u(t)},decodePath:function(t){return"!"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:u,decodePath:a},slash:{encodePath:a,decodePath:a}}},"y+LV":function(t,e,n){"use strict";function o(t){return t.type===c.Fragment?"Fragment":"function"==typeof t.type?t.type.displayName||t.type.name:"string"==typeof t.type?t.type:"#text"}function r(){return s.length>0?s[s.length-1]:null}function i(t){return"function"==typeof t.type&&t.type!=c.Fragment}function a(t){for(var e=[t],n=t;null!=n.__o;)e.push(n.__o),n=n.__o;return e.reduce((function(t,e){t+=" in "+o(e);var n=e.__source;return n?t+=" (at "+n.fileName+":"+n.lineNumber+")":f||(f=!0,console.warn("Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.")),t+"\n"}),"")}function u(t){var e=t.props,n=o(t),r="";for(var i in e)if(e.hasOwnProperty(i)&&"children"!==i){var a=e[i];"function"==typeof a&&(a="function "+(a.displayName||a.name)+"() {}"),a=Object(a)!==a||a.toString?a+"":Object.prototype.toString.call(a),r+=" "+i+"="+JSON.stringify(a)}var u=e.children;return"<"+n+r+(u&&u.length?">..":" />")}var c=n("hosL");"undefined"!=typeof window&&window.__PREACT_DEVTOOLS__&&window.__PREACT_DEVTOOLS__.attachPreact("10.0.5",c.options,{Fragment:c.Fragment});var l={},s=[],p=[],f=!1,h="function"==typeof WeakMap,d=c.Component.prototype.setState;c.Component.prototype.setState=function(t,e){return null==this.__v?null==this.state&&console.warn('Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.setState" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),d.call(this,t,e)};var _=c.Component.prototype.forceUpdate;c.Component.prototype.forceUpdate=function(t){return null==this.__v?console.warn('Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),_.call(this,t)},function(){!function(){var t=c.options.__b,e=c.options.diffed,n=c.options.__,o=c.options.vnode,r=c.options.__r;c.options.diffed=function(t){i(t)&&p.pop(),s.pop(),e&&e(t)},c.options.__b=function(e){i(e)&&s.push(e),t&&t(e)},c.options.__=function(t,e){p=[],n&&n(t,e)},c.options.vnode=function(t){t.__o=p.length>0?p[p.length-1]:null,o&&o(t)},c.options.__r=function(t){i(t)&&p.push(t),r&&r(t)}}();var t=c.options.__b,e=c.options.diffed,n=c.options.vnode,r=c.options.__e,f=c.options.__,d=c.options.__h,_=h?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null;c.options.__e=function(t,e,n){if(e&&e.__c&&"function"==typeof t.then){var i=t;t=new Error("Missing Suspense. The throwing component was: "+o(e));for(var a=e;a;a=a.__)if(a.__c&&a.__c.__c){t=i;break}if(t instanceof Error)throw t}r(t,e,n)},c.options.__=function(t,e){if(!e)throw new Error("Undefined parent passed to render(), this is the second argument.\nCheck if the element is available in the DOM/has the correct id.");var n;switch(e.nodeType){case 1:case 11:case 9:n=!0;break;default:n=!1}if(!n){var r=o(t);throw new Error("Expected a valid HTML node as a second argument to render.\tReceived "+e+" instead: render(<"+r+" />, "+e+");")}f&&f(t,e)},c.options.__b=function(e){var n,r,i,c=e.type,s=function t(e){return e?"function"==typeof e.type?t(e.__):e:{}}(e.__);if(void 0===c)throw new Error("Undefined component passed to createElement()\n\nYou likely forgot to export your component or might have mixed up default and named imports"+u(e)+"\n\n"+a(e));if(null!=c&&"object"==typeof c){if(void 0!==c.__k&&void 0!==c.__e)throw new Error("Invalid type passed to createElement(): "+c+"\n\nDid you accidentally pass a JSX literal as JSX twice?\n\n let My"+o(e)+" = "+u(c)+";\n let vnode = ;\n\nThis usually happens when you export a JSX literal and not the component.\n\n"+a(e));throw new Error("Invalid type passed to createElement(): "+(Array.isArray(c)?"array":c))}if("thead"!==c&&"tfoot"!==c&&"tbody"!==c||"table"===s.type?"tr"===c&&"thead"!==s.type&&"tfoot"!==s.type&&"tbody"!==s.type&&"table"!==s.type?console.error("Improper nesting of table. Your should have a parent."+u(e)+"\n\n"+a(e)):"td"===c&&"tr"!==s.type?console.error("Improper nesting of table. Your parent."+u(e)+"\n\n"+a(e)):"th"===c&&"tr"!==s.type&&console.error("Improper nesting of table. Your ."+u(e)+"\n\n"+a(e)):console.error("Improper nesting of table. Your should have a
should have a
should have a
parent."+u(e)+"\n\n"+a(e)),void 0!==e.ref&&"function"!=typeof e.ref&&"object"!=typeof e.ref&&!("$$typeof"in e))throw new Error('Component\'s "ref" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+"] instead\n"+u(e)+"\n\n"+a(e));if("string"==typeof e.type)for(var p in e.props)if("o"===p[0]&&"n"===p[1]&&"function"!=typeof e.props[p]&&null!=e.props[p])throw new Error("Component's \""+p+'" property should be a function, but got ['+typeof e.props[p]+"] instead\n"+u(e)+"\n\n"+a(e));if("function"==typeof e.type&&e.type.propTypes){if("Lazy"===e.type.displayName&&_&&!_.lazyPropTypes.has(e.type)){var f="PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ";try{var h=e.type();_.lazyPropTypes.set(e.type,!0),console.warn(f+"Component wrapped in lazy() is "+o(h))}catch(e){console.warn(f+"We will log the wrapped component's name once it is loaded.")}}n=e.type.propTypes,r=e.props,i=o(e),Object.keys(n).forEach((function(t){var e;try{e=n[t](r,t,i,"prop",null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(t){e=t}!e||e.message in l||(l[e.message]=!0,console.error("Failed prop type: "+e.message))}))}t&&t(e)},c.options.__h=function(t){if(!t)throw new Error("Hook can only be invoked from render methods.");d&&d(t)};var y=function(t,e){return{get:function(){throw new Error("getting vnode."+t+" is deprecated, "+e)},set:function(){throw new Error("setting vnode."+t+" is not allowed, "+e)}}},v={nodeName:y("nodeName","use vnode.type"),attributes:y("attributes","use vnode.props"),children:y("children","use vnode.props.children")},m=Object.create({},v);c.options.vnode=function(t){var e=t.props;if(null!==t.type&&null!=e&&("__source"in e||"__self"in e)){var o=t.props={};for(var r in e){var i=e[r];"__source"===r?t.__source=i:"__self"===r?t.__self=i:o[r]=i}}Object.setPrototypeOf(t,m),n&&n(t)},c.options.diffed=function(t){t.__k&&t.__k.forEach((function(e){if(e&&void 0===e.type){delete e.__,delete e.__b;var n=Object.keys(e).join(",");throw new Error("Objects are not valid as a child. Encountered an object with the keys {"+n+"}.\n\n"+a(t))}}));var n=t.__c;if(n&&n.__H){var r=n.__H;Array.isArray(r.__)&&r.__.forEach((function(e){if(e.__h&&(!e.__H||!Array.isArray(e.__H))){var n=o(t);console.warn("In "+n+" you are calling useMemo/useCallback without passing arguments.\nThis is a noop since it will not be able to memoize, it will execute it every render.\n\n"+a(t))}}))}if(e&&e(t),null!=t.__k)for(var i=[],c=0;c\n\t\t\t\t

Appuntiweb di Steffo

\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n","import style from './copyright.css';\r\nimport { Component } from 'preact';\r\n\r\nexport default class Copyright extends Component {\r\n\trender() {\r\n\t\treturn
© 2019 - Stefano Pigozzi - CC BY-SA 4.0 - Codice sorgente - Supportami
;\r\n\t}\r\n}\r\n","import { h, Component } from 'preact';\n\nexport default function(req) {\n\tfunction Async() {\n\t\tComponent.call(this);\n\n\t\tlet b, old;\n\t\tthis.componentWillMount = () => {\n\t\t\tb = this.base = this.nextBase || this.__b; // short circuits 1st render\n\t\t\treq(m => {\n\t\t\t\tthis.setState({ child: m.default || m });\n\t\t\t});\n\t\t};\n\n\t\tthis.shouldComponentUpdate = (_, nxt) => {\n\t\t\tnxt = nxt.child === void 0;\n\t\t\tif (nxt && old === void 0 && b) {\n\t\t\t\t// Node.TEXT_NODE\n\t\t\t\tif (b.nodeType === 3) {\n\t\t\t\t\told = b.data;\n\t\t\t\t} else {\n\t\t\t\t\told = h(b.nodeName, {\n\t\t\t\t\t\tdangerouslySetInnerHTML: { __html: b.innerHTML },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\told = ''; // dump it\n\t\t\t}\n\t\t\treturn !nxt;\n\t\t};\n\n\t\tthis.render = (p, s) => (s.child ? h(s.child, p) : old);\n\t}\n\t(Async.prototype = new Component()).constructor = Async;\n\treturn Async;\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./basiDiDati.js\") );\n\t\t\t}, \"route-basiDiDati\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./home.js\") );\n\t\t\t}, \"route-home\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { cloneElement, createElement, Component, toChildArray } from 'preact';\nimport { exec, prepareVNodeForRanking, assign, pathRankSort } from './util';\n\nlet customHistory = null;\n\nconst ROUTERS = [];\n\nconst subscribers = [];\n\nconst EMPTY = {};\n\nfunction setUrl(url, type='push') {\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tlet url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn `${url.pathname || ''}${url.search || ''}`;\n}\n\n\n\nfunction route(url, replace=false) {\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (let i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) return true;\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tlet didRoute = false;\n\tfor (let i=0; i {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"copyright\":\"copyright__2FTnU\"};","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children == 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children == 'string' || typeof children == 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null, children)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(\n\t\t\t\tcreateVNode(\n\t\t\t\t\tchildren.type,\n\t\t\t\t\tchildren.props,\n\t\t\t\t\tchildren.key,\n\t\t\t\t\tnull,\n\t\t\t\t\tchildren._original\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value == 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nfunction setProperty(dom, name, value, oldValue, isSvg) {\n\tlet s, useCapture, nameLower;\n\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'style') {\n\t\ts = dom.style;\n\n\t\tif (typeof value == 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tnameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t(newVNode._original === oldVNode._original && !c._processingException)\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\tnewVNode._children = newVNode.props.children;\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (!newHtml) {\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\tnewProps.value !== undefined &&\n\t\t\t\tnewProps.value !== dom.value\n\t\t\t) {\n\t\t\t\tdom.value = newProps.value == null ? '' : newProps.value;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\tnewProps.checked !== undefined &&\n\t\t\t\tnewProps.checked !== dom.checked\n\t\t\t) {\n\t\t\t\tdom.checked = newProps.checked;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\treturn createVNode(\n\t\tvnode.type,\n\t\tprops,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\treturn context;\n}\n","export const ELEMENT_NODE = 1;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./ottimizzazioneLineare.js\") );\n\t\t\t}, \"route-ottimizzazioneLineare\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\tif (process.env.RHL) {\n\t\t// enable hot loader\n\t\tconst hotLoader = interopDefault(require('react-hot-loader'));\n\t\thotLoader.preact(interopDefault(require('preact')));\n\t}\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(inlineDataElement.innerHTML).preRenderData || preRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === location.pathname;\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","import { options, Fragment } from 'preact';\n\n/**\n * Get human readable name of the component/dom node\n * @param {import('./internal').VNode} vnode\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function getDisplayName(vnode) {\n\tif (vnode.type === Fragment) {\n\t\treturn 'Fragment';\n\t} else if (typeof vnode.type == 'function') {\n\t\treturn vnode.type.displayName || vnode.type.name;\n\t} else if (typeof vnode.type == 'string') {\n\t\treturn vnode.type;\n\t}\n\n\treturn '#text';\n}\n\n/**\n * Used to keep track of the currently rendered `vnode` and print it\n * in debug messages.\n */\nlet renderStack = [];\n\n/**\n * Keep track of the current owners. An owner describes a component\n * which was responsible to render a specific `vnode`. This exclude\n * children that are passed via `props.children`, because they belong\n * to the parent owner.\n *\n * ```jsx\n * const Foo = props =>
{props.children}
// div's owner is Foo\n * const Bar = props => {\n * return (\n * // Foo's owner is Bar, span's owner is Bar\n * )\n * }\n * ```\n *\n * Note: A `vnode` may be hoisted to the root scope due to compiler\n * optimiztions. In these cases the `_owner` will be different.\n */\nlet ownerStack = [];\n\n/**\n * Get the currently rendered `vnode`\n * @returns {import('./internal').VNode | null}\n */\nexport function getCurrentVNode() {\n\treturn renderStack.length > 0 ? renderStack[renderStack.length - 1] : null;\n}\n\n/**\n * If the user doesn't have `@babel/plugin-transform-react-jsx-source`\n * somewhere in his tool chain we can't print the filename and source\n * location of a component. In that case we just omit that, but we'll\n * print a helpful message to the console, notifying the user of it.\n */\nlet hasBabelPlugin = false;\n\n/**\n * Check if a `vnode` is a possible owner.\n * @param {import('./internal').VNode} vnode\n */\nfunction isPossibleOwner(vnode) {\n\treturn typeof vnode.type == 'function' && vnode.type != Fragment;\n}\n\n/**\n * Return the component stack that was captured up to this point.\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function getOwnerStack(vnode) {\n\tconst stack = [vnode];\n\tlet next = vnode;\n\twhile (next._owner != null) {\n\t\tstack.push(next._owner);\n\t\tnext = next._owner;\n\t}\n\n\treturn stack.reduce((acc, owner) => {\n\t\tacc += ` in ${getDisplayName(owner)}`;\n\n\t\tconst source = owner.__source;\n\t\tif (source) {\n\t\t\tacc += ` (at ${source.fileName}:${source.lineNumber})`;\n\t\t} else if (!hasBabelPlugin) {\n\t\t\thasBabelPlugin = true;\n\t\t\tconsole.warn(\n\t\t\t\t'Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.'\n\t\t\t);\n\t\t}\n\n\t\treturn (acc += '\\n');\n\t}, '');\n}\n\n/**\n * Setup code to capture the component trace while rendering. Note that\n * we cannot simply traverse `vnode._parent` upwards, because we have some\n * debug messages for `this.setState` where the `vnode` is `undefined`.\n */\nexport function setupComponentStack() {\n\tlet oldDiff = options._diff;\n\tlet oldDiffed = options.diffed;\n\tlet oldRoot = options._root;\n\tlet oldVNode = options.vnode;\n\tlet oldRender = options._render;\n\n\toptions.diffed = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\townerStack.pop();\n\t\t}\n\t\trenderStack.pop();\n\t\tif (oldDiffed) oldDiffed(vnode);\n\t};\n\n\toptions._diff = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\trenderStack.push(vnode);\n\t\t}\n\t\tif (oldDiff) oldDiff(vnode);\n\t};\n\n\toptions._root = (vnode, parent) => {\n\t\townerStack = [];\n\t\tif (oldRoot) oldRoot(vnode, parent);\n\t};\n\n\toptions.vnode = vnode => {\n\t\tvnode._owner =\n\t\t\townerStack.length > 0 ? ownerStack[ownerStack.length - 1] : null;\n\t\tif (oldVNode) oldVNode(vnode);\n\t};\n\n\toptions._render = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\townerStack.push(vnode);\n\t\t}\n\n\t\tif (oldRender) oldRender(vnode);\n\t};\n}\n","import { checkPropTypes } from './check-props';\nimport { options, Component } from 'preact';\nimport {\n\tELEMENT_NODE,\n\tDOCUMENT_NODE,\n\tDOCUMENT_FRAGMENT_NODE\n} from './constants';\nimport {\n\tgetOwnerStack,\n\tsetupComponentStack,\n\tgetCurrentVNode,\n\tgetDisplayName\n} from './component-stack';\n\nconst isWeakMapSupported = typeof WeakMap == 'function';\n\nfunction getClosestDomNodeParent(parent) {\n\tif (!parent) return {};\n\tif (typeof parent.type == 'function') {\n\t\treturn getClosestDomNodeParent(parent._parent);\n\t}\n\treturn parent;\n}\n\nexport function initDebug() {\n\tsetupComponentStack();\n\n\t/* eslint-disable no-console */\n\tlet oldBeforeDiff = options._diff;\n\tlet oldDiffed = options.diffed;\n\tlet oldVnode = options.vnode;\n\tlet oldCatchError = options._catchError;\n\tlet oldRoot = options._root;\n\tlet oldHook = options._hook;\n\tconst warnedComponents = !isWeakMapSupported\n\t\t? null\n\t\t: {\n\t\t\t\tuseEffect: new WeakMap(),\n\t\t\t\tuseLayoutEffect: new WeakMap(),\n\t\t\t\tlazyPropTypes: new WeakMap()\n\t\t };\n\n\toptions._catchError = (error, vnode, oldVNode) => {\n\t\tlet component = vnode && vnode._component;\n\t\tif (component && typeof error.then == 'function') {\n\t\t\tconst promise = error;\n\t\t\terror = new Error(\n\t\t\t\t`Missing Suspense. The throwing component was: ${getDisplayName(vnode)}`\n\t\t\t);\n\n\t\t\tlet parent = vnode;\n\t\t\tfor (; parent; parent = parent._parent) {\n\t\t\t\tif (parent._component && parent._component._childDidSuspend) {\n\t\t\t\t\terror = promise;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// We haven't recovered and we know at this point that there is no\n\t\t\t// Suspense component higher up in the tree\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\toldCatchError(error, vnode, oldVNode);\n\t};\n\n\toptions._root = (vnode, parentNode) => {\n\t\tif (!parentNode) {\n\t\t\tthrow new Error(\n\t\t\t\t'Undefined parent passed to render(), this is the second argument.\\n' +\n\t\t\t\t\t'Check if the element is available in the DOM/has the correct id.'\n\t\t\t);\n\t\t}\n\t\tlet isValid;\n\t\tswitch (parentNode.nodeType) {\n\t\t\tcase ELEMENT_NODE:\n\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\tcase DOCUMENT_NODE:\n\t\t\t\tisValid = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tisValid = false;\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\tlet componentName = getDisplayName(vnode);\n\t\t\tthrow new Error(\n\t\t\t\t`Expected a valid HTML node as a second argument to render.\tReceived ${parentNode} instead: render(<${componentName} />, ${parentNode});`\n\t\t\t);\n\t\t}\n\n\t\tif (oldRoot) oldRoot(vnode, parentNode);\n\t};\n\n\toptions._diff = vnode => {\n\t\tlet { type, _parent: parent } = vnode;\n\t\tlet parentVNode = getClosestDomNodeParent(parent);\n\n\t\tif (type === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t'Undefined component passed to createElement()\\n\\n' +\n\t\t\t\t\t'You likely forgot to export your component or might have mixed up default and named imports' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type != null && typeof type == 'object') {\n\t\t\tif (type._children !== undefined && type._dom !== undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Invalid type passed to createElement(): ${type}\\n\\n` +\n\t\t\t\t\t\t'Did you accidentally pass a JSX literal as JSX twice?\\n\\n' +\n\t\t\t\t\t\t` let My${getDisplayName(vnode)} = ${serializeVNode(type)};\\n` +\n\t\t\t\t\t\t` let vnode = ;\\n\\n` +\n\t\t\t\t\t\t'This usually happens when you export a JSX literal and not the component.' +\n\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t'Invalid type passed to createElement(): ' +\n\t\t\t\t\t(Array.isArray(type) ? 'array' : type)\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\t(type === 'thead' || type === 'tfoot' || type === 'tbody') &&\n\t\t\tparentVNode.type !== 'table'\n\t\t) {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your
should have a
parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (\n\t\t\ttype === 'tr' &&\n\t\t\tparentVNode.type !== 'thead' &&\n\t\t\tparentVNode.type !== 'tfoot' &&\n\t\t\tparentVNode.type !== 'tbody' &&\n\t\t\tparentVNode.type !== 'table'\n\t\t) {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your should have a parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type === 'td' && parentVNode.type !== 'tr') {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type === 'th' && parentVNode.type !== 'tr') {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your .' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\tvnode.ref !== undefined &&\n\t\t\ttypeof vnode.ref != 'function' &&\n\t\t\ttypeof vnode.ref != 'object' &&\n\t\t\t!('$$typeof' in vnode) // allow string refs when preact-compat is installed\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t`Component's \"ref\" property should be a function, or an object created ` +\n\t\t\t\t\t`by createRef(), but got [${typeof vnode.ref}] instead\\n` +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t}\n\n\t\tif (typeof vnode.type == 'string') {\n\t\t\tfor (const key in vnode.props) {\n\t\t\t\tif (\n\t\t\t\t\tkey[0] === 'o' &&\n\t\t\t\t\tkey[1] === 'n' &&\n\t\t\t\t\ttypeof vnode.props[key] != 'function' &&\n\t\t\t\t\tvnode.props[key] != null\n\t\t\t\t) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Component's \"${key}\" property should be a function, ` +\n\t\t\t\t\t\t\t`but got [${typeof vnode.props[key]}] instead\\n` +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Check prop-types if available\n\t\tif (typeof vnode.type == 'function' && vnode.type.propTypes) {\n\t\t\tif (\n\t\t\t\tvnode.type.displayName === 'Lazy' &&\n\t\t\t\twarnedComponents &&\n\t\t\t\t!warnedComponents.lazyPropTypes.has(vnode.type)\n\t\t\t) {\n\t\t\t\tconst m =\n\t\t\t\t\t'PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ';\n\t\t\t\ttry {\n\t\t\t\t\tconst lazyVNode = vnode.type();\n\t\t\t\t\twarnedComponents.lazyPropTypes.set(vnode.type, true);\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tm + `Component wrapped in lazy() is ${getDisplayName(lazyVNode)}`\n\t\t\t\t\t);\n\t\t\t\t} catch (promise) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tm + \"We will log the wrapped component's name once it is loaded.\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcheckPropTypes(\n\t\t\t\tvnode.type.propTypes,\n\t\t\t\tvnode.props,\n\t\t\t\t'prop',\n\t\t\t\tgetDisplayName(vnode)\n\t\t\t);\n\t\t}\n\n\t\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n\t};\n\n\toptions._hook = comp => {\n\t\tif (!comp) {\n\t\t\tthrow new Error('Hook can only be invoked from render methods.');\n\t\t}\n\n\t\tif (oldHook) oldHook(comp);\n\t};\n\n\tconst warn = (property, err) => ({\n\t\tget() {\n\t\t\tthrow new Error(`getting vnode.${property} is deprecated, ${err}`);\n\t\t},\n\t\tset() {\n\t\t\tthrow new Error(`setting vnode.${property} is not allowed, ${err}`);\n\t\t}\n\t});\n\n\tconst deprecatedAttributes = {\n\t\tnodeName: warn('nodeName', 'use vnode.type'),\n\t\tattributes: warn('attributes', 'use vnode.props'),\n\t\tchildren: warn('children', 'use vnode.props.children')\n\t};\n\n\tconst deprecatedProto = Object.create({}, deprecatedAttributes);\n\n\toptions.vnode = vnode => {\n\t\tconst props = vnode.props;\n\t\tif (\n\t\t\tvnode.type !== null &&\n\t\t\tprops != null &&\n\t\t\t('__source' in props || '__self' in props)\n\t\t) {\n\t\t\tconst newProps = (vnode.props = {});\n\t\t\tfor (let i in props) {\n\t\t\t\tconst v = props[i];\n\t\t\t\tif (i === '__source') vnode.__source = v;\n\t\t\t\telse if (i === '__self') vnode.__self = v;\n\t\t\t\telse newProps[i] = v;\n\t\t\t}\n\t\t}\n\t\tObject.setPrototypeOf(vnode, deprecatedProto);\n\t\tif (oldVnode) oldVnode(vnode);\n\t};\n\n\toptions.diffed = vnode => {\n\t\t// Check if the user passed plain objects as children. Note that we cannot\n\t\t// move this check into `options.vnode` because components can receive\n\t\t// children in any shape they want (e.g.\n\t\t// `{{ foo: 123, bar: \"abc\" }}`).\n\t\t// Putting this check in `options.diffed` ensures that\n\t\t// `vnode._children` is set and that we only validate the children\n\t\t// that were actually rendered.\n\t\tif (vnode._children) {\n\t\t\tvnode._children.forEach(child => {\n\t\t\t\tif (child && child.type === undefined) {\n\t\t\t\t\t// Remove internal vnode keys that will always be patched\n\t\t\t\t\tdelete child._parent;\n\t\t\t\t\tdelete child._depth;\n\t\t\t\t\tconst keys = Object.keys(child).join(',');\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Objects are not valid as a child. Encountered an object with the keys {${keys}}.` +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/** @type {import('./internal').Component} */\n\t\tconst component = vnode._component;\n\t\tif (component && component.__hooks) {\n\t\t\tlet hooks = component.__hooks;\n\t\t\tif (Array.isArray(hooks._list)) {\n\t\t\t\thooks._list.forEach(hook => {\n\t\t\t\t\tif (hook._factory && (!hook._args || !Array.isArray(hook._args))) {\n\t\t\t\t\t\tlet componentName = getDisplayName(vnode);\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`In ${componentName} you are calling useMemo/useCallback without passing arguments.\\n` +\n\t\t\t\t\t\t\t\t`This is a noop since it will not be able to memoize, it will execute it every render.` +\n\t\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (oldDiffed) oldDiffed(vnode);\n\n\t\tif (vnode._children != null) {\n\t\t\tconst keys = [];\n\t\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\t\tconst child = vnode._children[i];\n\t\t\t\tif (!child || child.key == null) continue;\n\n\t\t\t\tconst key = child.key;\n\t\t\t\tif (keys.indexOf(key) !== -1) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'Following component has two or more children with the ' +\n\t\t\t\t\t\t\t`same key attribute: \"${key}\". This may cause glitches and misbehavior ` +\n\t\t\t\t\t\t\t'in rendering process. Component: \\n\\n' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\n\t\t\t\t\t// Break early to not spam the console\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tkeys.push(key);\n\t\t\t}\n\t\t}\n\t};\n}\n\nconst setState = Component.prototype.setState;\nComponent.prototype.setState = function(update, callback) {\n\tif (this._vnode == null) {\n\t\t// `this._vnode` will be `null` during componentWillMount. But it\n\t\t// is perfectly valid to call `setState` during cWM. So we\n\t\t// need an additional check to verify that we are dealing with a\n\t\t// call inside constructor.\n\t\tif (this.state == null) {\n\t\t\tconsole.warn(\n\t\t\t\t`Calling \"this.setState\" inside the constructor of a component is a ` +\n\t\t\t\t\t`no-op and might be a bug in your application. Instead, set ` +\n\t\t\t\t\t`\"this.state = {}\" directly.\\n\\n${getOwnerStack(getCurrentVNode())}`\n\t\t\t);\n\t\t}\n\t} else if (this._parentDom == null) {\n\t\tconsole.warn(\n\t\t\t`Can't call \"this.setState\" on an unmounted component. This is a no-op, ` +\n\t\t\t\t`but it indicates a memory leak in your application. To fix, cancel all ` +\n\t\t\t\t`subscriptions and asynchronous tasks in the componentWillUnmount method.` +\n\t\t\t\t`\\n\\n${getOwnerStack(this._vnode)}`\n\t\t);\n\t}\n\n\treturn setState.call(this, update, callback);\n};\n\nconst forceUpdate = Component.prototype.forceUpdate;\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode == null) {\n\t\tconsole.warn(\n\t\t\t`Calling \"this.forceUpdate\" inside the constructor of a component is a ` +\n\t\t\t\t`no-op and might be a bug in your application.\\n\\n${getOwnerStack(\n\t\t\t\t\tgetCurrentVNode()\n\t\t\t\t)}`\n\t\t);\n\t} else if (this._parentDom == null) {\n\t\tconsole.warn(\n\t\t\t`Can't call \"this.forceUpdate\" on an unmounted component. This is a no-op, ` +\n\t\t\t\t`but it indicates a memory leak in your application. To fix, cancel all ` +\n\t\t\t\t`subscriptions and asynchronous tasks in the componentWillUnmount method.` +\n\t\t\t\t`\\n\\n${getOwnerStack(this._vnode)}`\n\t\t);\n\t}\n\treturn forceUpdate.call(this, callback);\n};\n\n/**\n * Serialize a vnode tree to a string\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function serializeVNode(vnode) {\n\tlet { props } = vnode;\n\tlet name = getDisplayName(vnode);\n\n\tlet attrs = '';\n\tfor (let prop in props) {\n\t\tif (props.hasOwnProperty(prop) && prop !== 'children') {\n\t\t\tlet value = props[prop];\n\n\t\t\t// If it is an object but doesn't have toString(), use Object.toString\n\t\t\tif (typeof value == 'function') {\n\t\t\t\tvalue = `function ${value.displayName || value.name}() {}`;\n\t\t\t}\n\n\t\t\tvalue =\n\t\t\t\tObject(value) === value && !value.toString\n\t\t\t\t\t? Object.prototype.toString.call(value)\n\t\t\t\t\t: value + '';\n\n\t\t\tattrs += ` ${prop}=${JSON.stringify(value)}`;\n\t\t}\n\t}\n\n\tlet children = props.children;\n\treturn `<${name}${attrs}${\n\t\tchildren && children.length ? '>..' : ' />'\n\t}`;\n}\n","import { options, Fragment } from 'preact';\n\nexport function initDevTools() {\n\tif (typeof window != 'undefined' && window.__PREACT_DEVTOOLS__) {\n\t\twindow.__PREACT_DEVTOOLS__.attachPreact('10.0.5', options, {\n\t\t\tFragment\n\t\t});\n\t}\n}\n","const ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nlet loggedTypeFailures = {};\n\n/**\n * Reset the history of which prop type warnings have been logged.\n */\nexport function resetPropWarnings() {\n\tloggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * Adapted from https://github.com/facebook/prop-types/blob/master/checkPropTypes.js\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n */\nexport function checkPropTypes(\n\ttypeSpecs,\n\tvalues,\n\tlocation,\n\tcomponentName,\n\tgetStack\n) {\n\tObject.keys(typeSpecs).forEach(typeSpecName => {\n\t\tlet error;\n\t\ttry {\n\t\t\terror = typeSpecs[typeSpecName](\n\t\t\t\tvalues,\n\t\t\t\ttypeSpecName,\n\t\t\t\tcomponentName,\n\t\t\t\tlocation,\n\t\t\t\tnull,\n\t\t\t\tReactPropTypesSecret\n\t\t\t);\n\t\t} catch (e) {\n\t\t\terror = e;\n\t\t}\n\t\tif (error && !(error.message in loggedTypeFailures)) {\n\t\t\tloggedTypeFailures[error.message] = true;\n\t\t\tconsole.error(\n\t\t\t\t`Failed ${location} type: ${error.message}${(getStack && getStack()) ||\n\t\t\t\t\t''}`\n\t\t\t);\n\t\t}\n\t});\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./fisica.js\") );\n\t\t\t}, \"route-fisica\");\n\t\t}\n\n\t\texport default Async(load);\n\t"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 3f0f289..e0a69a7 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -Appunti Web \ No newline at end of file +Appunti Web \ No newline at end of file diff --git a/docs/precache-manifest.712081d862b6875737d79df2320f3230.esm.js b/docs/precache-manifest.20dc31c2fd802449f3ea3bbd9638e1d1.esm.js similarity index 86% rename from docs/precache-manifest.712081d862b6875737d79df2320f3230.esm.js rename to docs/precache-manifest.20dc31c2fd802449f3ea3bbd9638e1d1.esm.js index 1b1dac7..6c81b97 100644 --- a/docs/precache-manifest.712081d862b6875737d79df2320f3230.esm.js +++ b/docs/precache-manifest.20dc31c2fd802449f3ea3bbd9638e1d1.esm.js @@ -4,15 +4,15 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/assets/icon.png" }, { - "revision": "109dba3110c03847e5e8", + "revision": "e705dde40af724cef2de", "url": "/bundle.69171.css" }, { - "revision": "109dba3110c03847e5e8", - "url": "/bundle.6b8a3.esm.js" + "revision": "e705dde40af724cef2de", + "url": "/bundle.cad64.esm.js" }, { - "revision": "826355f5c78fb720ccc19bd121683d0e", + "revision": "d61067c83e381792ce0e238029f803fe", "url": "/index.html" }, { @@ -36,12 +36,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/route-basiDiDati.chunk.fad1f.esm.js" }, { - "revision": "f5c66ad2f48171900698", - "url": "/route-calcoloNumerico.chunk.9cc26.css" + "revision": "5e3f85501199dc34b0af", + "url": "/route-calcoloNumerico.chunk.32e83.esm.js" }, { - "revision": "f5c66ad2f48171900698", - "url": "/route-calcoloNumerico.chunk.9d1fa.esm.js" + "revision": "5e3f85501199dc34b0af", + "url": "/route-calcoloNumerico.chunk.9cc26.css" }, { "revision": "3f6c6e546e25cd8e9a13", diff --git a/docs/precache-manifest.812c022b607ffd6b3904af385980122b.js b/docs/precache-manifest.53b02f2890f01147a2a2ea3eafd01aea.js similarity index 86% rename from docs/precache-manifest.812c022b607ffd6b3904af385980122b.js rename to docs/precache-manifest.53b02f2890f01147a2a2ea3eafd01aea.js index 5ba2efa..1969894 100644 --- a/docs/precache-manifest.812c022b607ffd6b3904af385980122b.js +++ b/docs/precache-manifest.53b02f2890f01147a2a2ea3eafd01aea.js @@ -4,15 +4,15 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/assets/icon.png" }, { - "revision": "109dba3110c03847e5e8", - "url": "/bundle.109db.js" - }, - { - "revision": "109dba3110c03847e5e8", + "revision": "e705dde40af724cef2de", "url": "/bundle.69171.css" }, { - "revision": "826355f5c78fb720ccc19bd121683d0e", + "revision": "e705dde40af724cef2de", + "url": "/bundle.e705d.js" + }, + { + "revision": "d61067c83e381792ce0e238029f803fe", "url": "/index.html" }, { @@ -36,12 +36,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/route-basiDiDati.chunk.9cc26.css" }, { - "revision": "f5c66ad2f48171900698", - "url": "/route-calcoloNumerico.chunk.9cc26.css" + "revision": "5e3f85501199dc34b0af", + "url": "/route-calcoloNumerico.chunk.5e3f8.js" }, { - "revision": "f5c66ad2f48171900698", - "url": "/route-calcoloNumerico.chunk.f5c66.js" + "revision": "5e3f85501199dc34b0af", + "url": "/route-calcoloNumerico.chunk.9cc26.css" }, { "revision": "3f6c6e546e25cd8e9a13", @@ -96,7 +96,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/sw-debug.js" }, { - "revision": "1f9db8e78d97e7e4e84783ab54aec767", + "revision": "fe17aaaaaccb2deed903e18267256258", "url": "/sw-esm.js" }, { diff --git a/docs/push-manifest.json b/docs/push-manifest.json index 7d594e8..2f40302 100644 --- a/docs/push-manifest.json +++ b/docs/push-manifest.json @@ -1 +1 @@ -{"/":{"bundle.69171.css":{"type":"style","weight":1},"bundle.6b8a3.esm.js":{"type":"script","weight":1},"route-home.chunk.86a07.esm.js":{"type":"script","weight":0.9},"route-home.chunk.deccf.css":{"type":"style","weight":0.9}},"/apprendimentoSistemiArtificiali":{"bundle.69171.css":{"type":"style","weight":1},"bundle.6b8a3.esm.js":{"type":"script","weight":1},"route-apprendimentoSistemiArtificiali.chunk.bcba4.esm.js":{"type":"script","weight":0.9},"route-apprendimentoSistemiArtificiali.chunk.c2edb.css":{"type":"style","weight":0.9}},"/basiDiDati":{"bundle.69171.css":{"type":"style","weight":1},"bundle.6b8a3.esm.js":{"type":"script","weight":1},"route-basiDiDati.chunk.fad1f.esm.js":{"type":"script","weight":0.9},"route-basiDiDati.chunk.9cc26.css":{"type":"style","weight":0.9}},"/calcoloNumerico":{"bundle.69171.css":{"type":"style","weight":1},"bundle.6b8a3.esm.js":{"type":"script","weight":1},"route-calcoloNumerico.chunk.9d1fa.esm.js":{"type":"script","weight":0.9},"route-calcoloNumerico.chunk.9cc26.css":{"type":"style","weight":0.9}},"/fisica":{"bundle.69171.css":{"type":"style","weight":1},"bundle.6b8a3.esm.js":{"type":"script","weight":1},"route-fisica.chunk.4ed8c.esm.js":{"type":"script","weight":0.9},"route-fisica.chunk.0b01a.css":{"type":"style","weight":0.9}},"/mingwinstall":{"bundle.69171.css":{"type":"style","weight":1},"bundle.6b8a3.esm.js":{"type":"script","weight":1},"route-mingwinstall.chunk.ea3ae.esm.js":{"type":"script","weight":0.9},"route-mingwinstall.chunk.4f81b.css":{"type":"style","weight":0.9}},"/ottimizzazioneLineare":{"bundle.69171.css":{"type":"style","weight":1},"bundle.6b8a3.esm.js":{"type":"script","weight":1},"route-ottimizzazioneLineare.chunk.050ec.esm.js":{"type":"script","weight":0.9},"route-ottimizzazioneLineare.chunk.ab1d9.css":{"type":"style","weight":0.9}},"/statistica":{"bundle.69171.css":{"type":"style","weight":1},"bundle.6b8a3.esm.js":{"type":"script","weight":1},"route-statistica.chunk.26925.esm.js":{"type":"script","weight":0.9},"route-statistica.chunk.025c9.css":{"type":"style","weight":0.9}},"/vldigeometria":{"bundle.69171.css":{"type":"style","weight":1},"bundle.6b8a3.esm.js":{"type":"script","weight":1},"route-vldigeometria.chunk.24244.esm.js":{"type":"script","weight":0.9},"route-vldigeometria.chunk.e54c2.css":{"type":"style","weight":0.9}}} \ No newline at end of file +{"/":{"bundle.69171.css":{"type":"style","weight":1},"bundle.cad64.esm.js":{"type":"script","weight":1},"route-home.chunk.86a07.esm.js":{"type":"script","weight":0.9},"route-home.chunk.deccf.css":{"type":"style","weight":0.9}},"/apprendimentoSistemiArtificiali":{"bundle.69171.css":{"type":"style","weight":1},"bundle.cad64.esm.js":{"type":"script","weight":1},"route-apprendimentoSistemiArtificiali.chunk.bcba4.esm.js":{"type":"script","weight":0.9},"route-apprendimentoSistemiArtificiali.chunk.c2edb.css":{"type":"style","weight":0.9}},"/basiDiDati":{"bundle.69171.css":{"type":"style","weight":1},"bundle.cad64.esm.js":{"type":"script","weight":1},"route-basiDiDati.chunk.fad1f.esm.js":{"type":"script","weight":0.9},"route-basiDiDati.chunk.9cc26.css":{"type":"style","weight":0.9}},"/calcoloNumerico":{"bundle.69171.css":{"type":"style","weight":1},"bundle.cad64.esm.js":{"type":"script","weight":1},"route-calcoloNumerico.chunk.32e83.esm.js":{"type":"script","weight":0.9},"route-calcoloNumerico.chunk.9cc26.css":{"type":"style","weight":0.9}},"/fisica":{"bundle.69171.css":{"type":"style","weight":1},"bundle.cad64.esm.js":{"type":"script","weight":1},"route-fisica.chunk.4ed8c.esm.js":{"type":"script","weight":0.9},"route-fisica.chunk.0b01a.css":{"type":"style","weight":0.9}},"/mingwinstall":{"bundle.69171.css":{"type":"style","weight":1},"bundle.cad64.esm.js":{"type":"script","weight":1},"route-mingwinstall.chunk.ea3ae.esm.js":{"type":"script","weight":0.9},"route-mingwinstall.chunk.4f81b.css":{"type":"style","weight":0.9}},"/ottimizzazioneLineare":{"bundle.69171.css":{"type":"style","weight":1},"bundle.cad64.esm.js":{"type":"script","weight":1},"route-ottimizzazioneLineare.chunk.050ec.esm.js":{"type":"script","weight":0.9},"route-ottimizzazioneLineare.chunk.ab1d9.css":{"type":"style","weight":0.9}},"/statistica":{"bundle.69171.css":{"type":"style","weight":1},"bundle.cad64.esm.js":{"type":"script","weight":1},"route-statistica.chunk.26925.esm.js":{"type":"script","weight":0.9},"route-statistica.chunk.025c9.css":{"type":"style","weight":0.9}},"/vldigeometria":{"bundle.69171.css":{"type":"style","weight":1},"bundle.cad64.esm.js":{"type":"script","weight":1},"route-vldigeometria.chunk.24244.esm.js":{"type":"script","weight":0.9},"route-vldigeometria.chunk.e54c2.css":{"type":"style","weight":0.9}}} \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.32e83.esm.js b/docs/route-calcoloNumerico.chunk.32e83.esm.js new file mode 100644 index 0000000..bd75c98 --- /dev/null +++ b/docs/route-calcoloNumerico.chunk.32e83.esm.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{"+AyP":function(e){e.exports={latex:"latex__3Esv7"}},"1nLj":function(e){e.exports={panel:"panel__1ubJw"}},"68UE":function(e){e.exports={example:"example__P0_NL"}},"6GOG":function(e,i,l){"use strict";l.r(i),function(e){l.d(i,"default",(function(){return F}));var n=l("hosL"),t=l("ddBW"),a=l("ZsnK"),o=l("9yVG"),r=l("PEwj"),s=l("7bXG"),u=l("810C");let p,c,d,m,h,f,v,g,_,x,b,z,E,w,L,V,y,M,N,A,C,q,k,I=e=>e;const j=String.raw;class F extends n.Component{render(){return e("div",null,e("h1",null,"Calcolo Numerico"),e(t.a,{title:"Contatti"},e(o.a,{title:"Email della prof.ssa"},e("p",null,e("a",{href:"mailto:silvia.bonettini@unimore.it"},"silvia.bonettini@unimore.it"))),e(o.a,{title:"Ricevimento"},e("p",null,"Su appuntamento."))),e(t.a,{title:"Esame"},e(o.a,{title:"Orale"},e("p",null,"E' composto da:"),e("ul",null,e("li",null,"2 domande sugli argomenti teorici"),e("li",null,"1 domanda di implementazione algoritmo in MATLAB ",e("small",null,"(facoltativa per i punteggi migliori del TBL)"))),e("p",null,"Prossimo appello:",e(u.a,null)))),e(t.a,{title:"Algoritmi"},e(o.a,{title:"Algoritmi numerici"},e("p",null,"Algoritmi che hanno:"),e("ul",null,e("li",null,"numeri reali in input e output"),e("li",null,"successioni delle quattro operazioni aritmetiche fondamentali come passi")))),e(t.a,{title:"Errore di rappresentazione"},e(o.a,{title:"Errore di rappresentazione"},e("p",null,"Con i numeri floating point può capitare che un certo numero ",e(a.a,null,j(p||(p=I`\alpha`)))," non sia rappresentato correttamente."),e("p",null,"In tal caso, il numero si indica con ",e(a.a,null,j(c||(c=I`\alpha^*`))),".")),e(o.a,{title:"Errore assoluto"},e("p",null,"È la differenza tra il numero desiderato e il numero rappresentato:"),e("p",null,e(a.a,null,j(d||(d=I`E_a = \left | \alpha - \alpha^* \right |`)))),e(r.a,null,"Vale sempre 0, tranne in caso di underflow o overflow.")),e(o.a,{title:"Errore relativo"},e("p",null,"Indica quanto il numero rappresentato differisce dal numero desiderato:"),e("p",null,e(a.a,null,j(m||(m=I`\forall \alpha \neq 0, E_r = \frac{E_a}{\left | \alpha \right |}`)))))),e(t.a,{title:"Floating point"},e(o.a,{title:"Precisione di macchina"},e("p",null,"L'errore relativo di un numero reale rappresentato in virgola mobile è minore o uguale alla ",e("i",null,"precisione di macchina"),":"),e("p",null,e(a.a,null,j(h||(h=I`E_r \leq k \cdot \beta^{1-t}`)))),e("ul",null,e("li",null,e(a.a,null,"\\beta")," è uguale alla base utilizzata (solitamente 2)."),e("li",null,e(a.a,null,"t")," è uguale al numero di cifre della mantissa."),e("li",null,e(a.a,null,"k")," è uguale a ",e(a.a,null,"1")," se il numero viene rappresentato per troncamento oppure a ",e(a.a,null,j(f||(f=I`\frac{1}{2}`)))," se viene rappresentato per arrotondamento.")))),e(t.a,{title:"Operazioni di macchina"},e(o.a,{title:"Un nuovo insieme"},e("p",null,"L'insieme ",e(a.a,null,"F")," è il sottoinsieme dei numeri reali rappresentabili in floating point dalla macchina che stiamo usando."),e("p",null,"Operazioni tra elementi di ",e(a.a,null,"F")," producono risultati in ",e(a.a,null,j(v||(v=I`\mathbb{R}`))),", che però decaderanno nuovamente a elementi di ",e(a.a,null,"F"),", perdendo informazioni."),e("p",null,"Il teorema della precisione di macchina si applica quindi anche ai risultati delle operazioni.")),e(o.a,{title:"Caratteristiche delle operazioni di macchina"},e("ul",null,e("li",null,"Hanno più di un elemento neutro."),e("li",null,"Un numero ha più opposti."),e("li",null,"Non sono associative."),e("li",null,"Non sono distributive."),e("li",null,"Non vale la legge di annullamento del prodotto."))),e(o.a,{title:"La funzione fl"},e("p",null,"Indica che un valore è soggetto alla precisione di macchina:"),e("p",null,e(a.a,null,j(g||(g=I`fl(x) = (x)(1 + \epsilon_x)`)))))),e(t.a,{title:"Errori nelle operazioni di macchina"},e(o.a,{title:"Errore inerente"},e("p",null,"Errore dipendente ",e("b",null,"solo dai dati"),"."),e("p",null,e(s.a,null,"TODO: qual è la formula?")),e("p",null,"È l'errore che si presenterebbe se ",e(a.a,null,j(_||(_=I`\epsilon_1 = \epsilon_2 = \dots = 0`))),".")),e(o.a,{title:"Errore algoritmico"},e("p",null,"Errore dipendente ",e("b",null,"solo dalle operazioni effettuate"),"."),e("p",null,e(s.a,null,"TODO: qual è la formula?")),e("p",null,"È l'errore che si presenterebbe se ",e(a.a,null,j(x||(x=I`\epsilon_x = \epsilon_y = \dots = 0`))),"."))),e(t.a,null,e(o.a,{title:"Problema ben condizionato"},e("p",null,"Un problema poco sensibile all'",e("b",null,"errore inerente"),"."),e(r.a,null,e(a.a,null,j(b||(b=I`y = \frac{1}{x}`)))," è mal condizionato intorno allo 0 e ben condizionato lontano dallo 0.")),e(o.a,{title:"Algoritmo stabile"},e("p",null,"Un algoritmo poco sensibile all'",e("b",null,"errore algoritmico"),"."),e(r.a,null,e("p",null,"Cerchiamo un algoritmo che risolva ",e(a.a,null,j(z||(z=I`2x = 4`))),"."),e("p",null,"Calcolare prima ",e(a.a,null,j(E||(E=I`t = fl \left( \frac{1}{4} \right)`)))," e poi ",e(a.a,null,j(w||(w=I`x^* = fl ( 2 \cdot t )`)))," porta a una perdita di precisione."),e("p",null,"Calcolare direttamente ",e(a.a,null,j(L||(L=I`x^* = fl \left( \frac{2}{4} \right)`)))," non ha alcuna perdita di precisione e rende l'algoritmo ",e("b",null,"più stabile")," del precedente.")))),e(t.a,null,e(o.a,{title:"Indice di condizionamento"},e("p",null,"È il coefficiente di proporzionalità tra i dati e l'",e("b",null,"errore inerente"),"."),e("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."),e("p",null,"Minore è l'indice di condizionamento, meglio condizionato è un problema.")),e(o.a,{title:"Indice algoritmico"},e("p",null,"È il coefficiente di proporzionalità tra i dati e l'",e("b",null,"errore algoritmico"),"."),e("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."))),e(t.a,{title:"Le cose più difficili di Algebra Lineare"},e(o.a,{title:"Matrice singolare"},e("p",null,"Matrice con determinante 0."),e("p",null,"Le matrici singolari ",e("b",null,"non sono invertibili"),"."))),e(t.a,{title:"Norme"},e(o.a,{title:"Norma vettoriale"},e("p",null,"Funzione che associa un valore positivo a ogni vettore diverso da 0, e 0 al vettore zero."),e(r.a,null,e("a",{href:"https://it.wikipedia.org/wiki/Norma_(matematica)#/media/File:Vector_norms.svg"},"Esempi su Wikipedia"))),e(o.a,{title:"Norma a infinito"},e("p",null,"Massimo dei valori assoluti di tutti gli elementi del vettore."),e("p",null,e(a.a,null,j(V||(V=I`\Vert x \Vert_\infty = max_{i = 1..n} | x_i |`))))),e(o.a,{title:"Norma a 1"},e("p",null,"Somma dei valori assoluti di tutti gli elementi del vettore."),e("p",null,e(a.a,null,j(y||(y=I`\Vert x \Vert_1 = \sum_{i = 1}^n | x_i |`))))),e(o.a,{title:"Norma a 2"},e("p",null,"Radice quadrata della somma dei quadrati di tutti gli elementi del vettore."),e("p",null,e(a.a,null,j(M||(M=I`\Vert x \Vert_2 = \sqrt{\sum_{i = 1}^n x_i^2}`)))))),e(t.a,null,e(o.a,{title:"Norma matriciale indotta"},e("p",null,"Funzione che associa un valore positivo a ogni matrice diversa da 0, e 0 alla matrice zero."),e("p",null,"Si ricavano dalle norme vettoriali:"),e("p",null,e(a.a,null,j(N||(N=I`\Vert A \Vert = sup_{x \in \mathbb{R}, x \neq 0} \frac{\Vert A \cdot x \Vert}{\Vert x \Vert}`)))),e(r.a,null,e(a.a,null,"sup")," è l'estremo superiore di un insieme. E' molto simile al massimo: ricordi le prime lezioni di Analisi?")),e(o.a,{title:"Norma a infinito"},e("p",null,"Massimo delle somme dei valori assoluti di tutti gli elementi di ogni riga di una matrice."),e("p",null,e(a.a,null,j(A||(A=I`\Vert A \Vert_\infty = max_{i = 1..n} \sum_{j = 1}^n | a_{ij} |`))))),e(o.a,{title:"Norma a 1"},e("p",null,"Massimo delle somme dei valori assoluti di tutti gli elementi di ogni colonna di una matrice."),e("p",null,e(a.a,null,j(C||(C=I`\Vert A \Vert_1 = max_{j = 1..n} \sum_{i = 1}^n | a_{ij} |`))))),e(o.a,{title:"Norma a 2"},e("p",null,"Radice quadrata del rango del prodotto tra una matrice e la sua trasposta."),e("p",null,e(a.a,null,j(q||(q=I`\Vert A \Vert_2 = \sqrt{\rho ( A^T \times A ) }`)))))),e(t.a,null,e(o.a,{title:"Errore relativo tra vettori e matrici"},e("p",null,"Le norme sono usate per calcolare l'errore relativo tra due vettori o matrici:"),e("p",null,e(a.a,null,j(k||(k=I`\frac{\Vert x - y \Vert}{\Vert x \Vert}`)))))),e(t.a,{title:"Fattorizzazione"},e(o.a,{title:"Cos'è?"},e("p",null,"La fattorizzazione è il processo che permette di risolvere sistemi di equazioni lineari rappresentati in forma di matrice."),e("p",null,"Esistono molteplici algoritmi in grado di realizzarla: mentre tutti portano alla stessa soluzione, possono avere ",e("b",null,"velocità")," e ",e("b",null,"indici algoritmici")," diversi."),e("p",null,"Il sistema lineare da risolvere viene diviso in due parti: la ",e("i",null,"matrice dei coefficienti")," e il ",e("i",null,"vettore termine noto"),".")),e(o.a,{title:"Teorema di Rouché-Capélli"},e("p",null))))}}}.call(this,l("hosL").h)},"7bXG":function(e,i,l){"use strict";(function(e){l.d(i,"a",(function(){return o}));var n=l("kpQM"),t=l.n(n),a=l("hosL");class o extends a.Component{render(){return e("span",{class:t.a.todo},this.props.children)}}}).call(this,l("hosL").h)},"810C":function(e,i,l){"use strict";(function(e){l.d(i,"a",(function(){return o}));var n=l("hosL"),t=l("Q3JM"),a=l.n(t);class o extends n.Component{constructor(){super(),this.state={now:Date.now()},this.timer=null}componentDidMount(){this.timer=setInterval(()=>{this.setState({now:Date.now()})},1e3)}componentWillUnmount(){null!==this.timer&&clearInterval(this.timer)}render(){let i="Unknown date",l=a.a.timer,n={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){i=new Date(this.props.to);let e=i-this.state.now;e>0?n={milliseconds:e%1e3,seconds:Math.floor(e/1e3)%60,minutes:Math.floor(e/6e4)%60,hours:Math.floor(e/36e5)%24,days:Math.floor(e/864e5)}:(n={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},l+=" "+a.a.expired)}else l+=" "+a.a.unknown;return e("div",{class:l,title:i},e("div",{class:a.a.days+" "+a.a.count},n.days),e("div",{className:a.a.days+" "+a.a.text},"giorni"),e("div",{class:a.a.hours+" "+a.a.count},n.hours),e("div",{className:a.a.hours+" "+a.a.text},"ore"),e("div",{class:a.a.minutes+" "+a.a.count},n.minutes),e("div",{className:a.a.minutes+" "+a.a.text},"minuti"),e("div",{class:a.a.seconds+" "+a.a.count},n.seconds),e("div",{class:a.a.seconds+" "+a.a.text},"secondi"),e("div",{class:a.a.remaining},"rimasti"))}}}).call(this,l("hosL").h)},"9yVG":function(e,i,l){"use strict";(function(e){l.d(i,"a",(function(){return o}));var n=l("1nLj"),t=l.n(n),a=l("hosL");class o extends a.Component{getStyle(){return t.a.panel}render(){let i=null;return void 0!==this.props.title&&(i=e("h3",null,this.props.title)),e("div",{class:this.getStyle(),id:this.props.id},i,this.props.children)}}}).call(this,l("hosL").h)},PEwj:function(e,i,l){"use strict";(function(e){l.d(i,"a",(function(){return o}));var n=l("68UE"),t=l.n(n),a=l("hosL");class o extends a.Component{render(){return e("blockquote",{class:t.a.example},this.props.children)}}}).call(this,l("hosL").h)},Q3JM:function(e){e.exports={timer:"timer__23gHK",days:"days__3ZzFX",hours:"hours__3LtGw",minutes:"minutes__1_j61",seconds:"seconds__gE-gj",count:"count__28Md8",text:"text__2kIQZ",remaining:"remaining__1HVwa",unknown:"unknown__teMQN",expired:"expired__3wewI"}},ZsnK:function(e,i,l){"use strict";(function(e){l.d(i,"a",(function(){return o}));var n=l("+AyP"),t=l.n(n),a=l("hosL");class o extends a.Component{render(){return e("img",{src:`https://latex.codecogs.com/svg.latex?${`{\\color{White} ${this.props.children} }`}`,alt:this.props.children,title:this.props.children,class:t.a.latex})}}}).call(this,l("hosL").h)},ddBW:function(e,i,l){"use strict";(function(e){l.d(i,"a",(function(){return o}));var n=l("rMrT"),t=l.n(n),a=l("hosL");class o extends a.Component{render(){let i,l=null;return void 0!==this.props.title&&(l=e("h2",null,this.props.title)),i=Array.isArray(this.props.children)?this.props.children.map(i=>e("div",{class:t.a.splitchild},i)):e("div",{class:t.a.splitchild},this.props.children),e("div",{class:t.a.split},l,e("div",{class:t.a.splitparent},i))}}}).call(this,l("hosL").h)},kpQM:function(e){e.exports={todo:"todo__1pOoN"}},rMrT:function(e){e.exports={split:"split__3qCWp",splitparent:"splitparent__2xagg",splitchild:"splitchild__3cEoc"}}}]); +//# sourceMappingURL=route-calcoloNumerico.chunk.32e83.esm.js.map \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.9d1fa.esm.js.map b/docs/route-calcoloNumerico.chunk.32e83.esm.js.map similarity index 54% rename from docs/route-calcoloNumerico.chunk.9d1fa.esm.js.map rename to docs/route-calcoloNumerico.chunk.32e83.esm.js.map index 2913eb5..941dc97 100644 --- a/docs/route-calcoloNumerico.chunk.9d1fa.esm.js.map +++ b/docs/route-calcoloNumerico.chunk.32e83.esm.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"route-calcoloNumerico.chunk.9d1fa.esm.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"route-calcoloNumerico.chunk.32e83.esm.js","sourceRoot":""} \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.5e3f8.js b/docs/route-calcoloNumerico.chunk.5e3f8.js new file mode 100644 index 0000000..997b111 --- /dev/null +++ b/docs/route-calcoloNumerico.chunk.5e3f8.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{"+AyP":function(t){t.exports={latex:"latex__3Esv7"}},"1nLj":function(t){t.exports={panel:"panel__1ubJw"}},"68UE":function(t){t.exports={example:"example__P0_NL"}},"6GOG":function(t,e,n){"use strict";n.r(e),function(t){function i(){var t=L(["\frac{Vert x - y Vert}{Vert x Vert}"],["\\frac{\\Vert x - y \\Vert}{\\Vert x \\Vert}"]);return i=function(){return t},t}function r(){var t=L(["Vert A Vert_2 = sqrt{\rho ( A^T \times A ) }"],["\\Vert A \\Vert_2 = \\sqrt{\\rho ( A^T \\times A ) }"]);return r=function(){return t},t}function l(){var t=L(["Vert A Vert_1 = max_{j = 1..n} sum_{i = 1}^n | a_{ij} |"],["\\Vert A \\Vert_1 = max_{j = 1..n} \\sum_{i = 1}^n | a_{ij} |"]);return l=function(){return t},t}function o(){var t=L(["Vert A Vert_infty = max_{i = 1..n} sum_{j = 1}^n | a_{ij} |"],["\\Vert A \\Vert_\\infty = max_{i = 1..n} \\sum_{j = 1}^n | a_{ij} |"]);return o=function(){return t},t}function a(){var t=L(["Vert A Vert = sup_{x in mathbb{R}, x \neq 0} \frac{Vert A cdot x Vert}{Vert x Vert}"],["\\Vert A \\Vert = sup_{x \\in \\mathbb{R}, x \\neq 0} \\frac{\\Vert A \\cdot x \\Vert}{\\Vert x \\Vert}"]);return a=function(){return t},t}function u(){var t=L(["Vert x Vert_2 = sqrt{sum_{i = 1}^n x_i^2}"],["\\Vert x \\Vert_2 = \\sqrt{\\sum_{i = 1}^n x_i^2}"]);return u=function(){return t},t}function s(){var t=L(["Vert x Vert_1 = sum_{i = 1}^n | x_i |"],["\\Vert x \\Vert_1 = \\sum_{i = 1}^n | x_i |"]);return s=function(){return t},t}function c(){var t=L(["Vert x Vert_infty = max_{i = 1..n} | x_i |"],["\\Vert x \\Vert_\\infty = max_{i = 1..n} | x_i |"]);return c=function(){return t},t}function p(){var t=L(["x^* = fl left( \frac{2}{4} \right)"],["x^* = fl \\left( \\frac{2}{4} \\right)"]);return p=function(){return t},t}function d(){var t=L(["x^* = fl ( 2 cdot t )"],["x^* = fl ( 2 \\cdot t )"]);return d=function(){return t},t}function m(){var t=L(["t = fl left( \frac{1}{4} \right)"],["t = fl \\left( \\frac{1}{4} \\right)"]);return m=function(){return t},t}function f(){var t=L(["2x = 4"]);return f=function(){return t},t}function h(){var t=L(["y = \frac{1}{x}"],["y = \\frac{1}{x}"]);return h=function(){return t},t}function _(){var t=L(["epsilon_x = epsilon_y = dots = 0"],["\\epsilon_x = \\epsilon_y = \\dots = 0"]);return _=function(){return t},t}function v(){var t=L(["epsilon_1 = epsilon_2 = dots = 0"],["\\epsilon_1 = \\epsilon_2 = \\dots = 0"]);return v=function(){return t},t}function g(){var t=L(["fl(x) = (x)(1 + epsilon_x)"],["fl(x) = (x)(1 + \\epsilon_x)"]);return g=function(){return t},t}function x(){var t=L(["mathbb{R}"],["\\mathbb{R}"]);return x=function(){return t},t}function y(){var t=L(["\frac{1}{2}"],["\\frac{1}{2}"]);return y=function(){return t},t}function b(){var t=L(["E_r leq k cdot \beta^{1-t}"],["E_r \\leq k \\cdot \\beta^{1-t}"]);return b=function(){return t},t}function V(){var t=L(["\forall alpha \neq 0, E_r = \frac{E_a}{left | alpha \right |}"],["\\forall \\alpha \\neq 0, E_r = \\frac{E_a}{\\left | \\alpha \\right |}"]);return V=function(){return t},t}function z(){var t=L(["E_a = left | alpha - alpha^* \right |"],["E_a = \\left | \\alpha - \\alpha^* \\right |"]);return z=function(){return t},t}function E(){var t=L(["alpha^*"],["\\alpha^*"]);return E=function(){return t},t}function w(){var t=L(["alpha"],["\\alpha"]);return w=function(){return t},t}function L(t,e){return e||(e=t.slice(0)),t.raw=e,t}n.d(e,"default",(function(){return I}));var A=n("hosL"),j=n("ddBW"),q=n("ZsnK"),M=n("9yVG"),N=n("PEwj"),C=n("7bXG"),k=n("810C"),O=String.raw,I=function(e){function n(){return e.apply(this,arguments)||this}var L,A;return A=e,(L=n).prototype=Object.create(A.prototype),L.prototype.constructor=L,L.__proto__=A,n.prototype.render=function(){return t("div",null,t("h1",null,"Calcolo Numerico"),t(j.a,{title:"Contatti"},t(M.a,{title:"Email della prof.ssa"},t("p",null,t("a",{href:"mailto:silvia.bonettini@unimore.it"},"silvia.bonettini@unimore.it"))),t(M.a,{title:"Ricevimento"},t("p",null,"Su appuntamento."))),t(j.a,{title:"Esame"},t(M.a,{title:"Orale"},t("p",null,"E' composto da:"),t("ul",null,t("li",null,"2 domande sugli argomenti teorici"),t("li",null,"1 domanda di implementazione algoritmo in MATLAB ",t("small",null,"(facoltativa per i punteggi migliori del TBL)"))),t("p",null,"Prossimo appello:",t(k.a,null)))),t(j.a,{title:"Algoritmi"},t(M.a,{title:"Algoritmi numerici"},t("p",null,"Algoritmi che hanno:"),t("ul",null,t("li",null,"numeri reali in input e output"),t("li",null,"successioni delle quattro operazioni aritmetiche fondamentali come passi")))),t(j.a,{title:"Errore di rappresentazione"},t(M.a,{title:"Errore di rappresentazione"},t("p",null,"Con i numeri floating point può capitare che un certo numero ",t(q.a,null,O(w()))," non sia rappresentato correttamente."),t("p",null,"In tal caso, il numero si indica con ",t(q.a,null,O(E())),".")),t(M.a,{title:"Errore assoluto"},t("p",null,"È la differenza tra il numero desiderato e il numero rappresentato:"),t("p",null,t(q.a,null,O(z()))),t(N.a,null,"Vale sempre 0, tranne in caso di underflow o overflow.")),t(M.a,{title:"Errore relativo"},t("p",null,"Indica quanto il numero rappresentato differisce dal numero desiderato:"),t("p",null,t(q.a,null,O(V()))))),t(j.a,{title:"Floating point"},t(M.a,{title:"Precisione di macchina"},t("p",null,"L'errore relativo di un numero reale rappresentato in virgola mobile è minore o uguale alla ",t("i",null,"precisione di macchina"),":"),t("p",null,t(q.a,null,O(b()))),t("ul",null,t("li",null,t(q.a,null,"\\beta")," è uguale alla base utilizzata (solitamente 2)."),t("li",null,t(q.a,null,"t")," è uguale al numero di cifre della mantissa."),t("li",null,t(q.a,null,"k")," è uguale a ",t(q.a,null,"1")," se il numero viene rappresentato per troncamento oppure a ",t(q.a,null,O(y()))," se viene rappresentato per arrotondamento.")))),t(j.a,{title:"Operazioni di macchina"},t(M.a,{title:"Un nuovo insieme"},t("p",null,"L'insieme ",t(q.a,null,"F")," è il sottoinsieme dei numeri reali rappresentabili in floating point dalla macchina che stiamo usando."),t("p",null,"Operazioni tra elementi di ",t(q.a,null,"F")," producono risultati in ",t(q.a,null,O(x())),", che però decaderanno nuovamente a elementi di ",t(q.a,null,"F"),", perdendo informazioni."),t("p",null,"Il teorema della precisione di macchina si applica quindi anche ai risultati delle operazioni.")),t(M.a,{title:"Caratteristiche delle operazioni di macchina"},t("ul",null,t("li",null,"Hanno più di un elemento neutro."),t("li",null,"Un numero ha più opposti."),t("li",null,"Non sono associative."),t("li",null,"Non sono distributive."),t("li",null,"Non vale la legge di annullamento del prodotto."))),t(M.a,{title:"La funzione fl"},t("p",null,"Indica che un valore è soggetto alla precisione di macchina:"),t("p",null,t(q.a,null,O(g()))))),t(j.a,{title:"Errori nelle operazioni di macchina"},t(M.a,{title:"Errore inerente"},t("p",null,"Errore dipendente ",t("b",null,"solo dai dati"),"."),t("p",null,t(C.a,null,"TODO: qual è la formula?")),t("p",null,"È l'errore che si presenterebbe se ",t(q.a,null,O(v())),".")),t(M.a,{title:"Errore algoritmico"},t("p",null,"Errore dipendente ",t("b",null,"solo dalle operazioni effettuate"),"."),t("p",null,t(C.a,null,"TODO: qual è la formula?")),t("p",null,"È l'errore che si presenterebbe se ",t(q.a,null,O(_())),"."))),t(j.a,null,t(M.a,{title:"Problema ben condizionato"},t("p",null,"Un problema poco sensibile all'",t("b",null,"errore inerente"),"."),t(N.a,null,t(q.a,null,O(h()))," è mal condizionato intorno allo 0 e ben condizionato lontano dallo 0.")),t(M.a,{title:"Algoritmo stabile"},t("p",null,"Un algoritmo poco sensibile all'",t("b",null,"errore algoritmico"),"."),t(N.a,null,t("p",null,"Cerchiamo un algoritmo che risolva ",t(q.a,null,O(f())),"."),t("p",null,"Calcolare prima ",t(q.a,null,O(m()))," e poi ",t(q.a,null,O(d()))," porta a una perdita di precisione."),t("p",null,"Calcolare direttamente ",t(q.a,null,O(p()))," non ha alcuna perdita di precisione e rende l'algoritmo ",t("b",null,"più stabile")," del precedente.")))),t(j.a,null,t(M.a,{title:"Indice di condizionamento"},t("p",null,"È il coefficiente di proporzionalità tra i dati e l'",t("b",null,"errore inerente"),"."),t("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."),t("p",null,"Minore è l'indice di condizionamento, meglio condizionato è un problema.")),t(M.a,{title:"Indice algoritmico"},t("p",null,"È il coefficiente di proporzionalità tra i dati e l'",t("b",null,"errore algoritmico"),"."),t("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."))),t(j.a,{title:"Le cose più difficili di Algebra Lineare"},t(M.a,{title:"Matrice singolare"},t("p",null,"Matrice con determinante 0."),t("p",null,"Le matrici singolari ",t("b",null,"non sono invertibili"),"."))),t(j.a,{title:"Norme"},t(M.a,{title:"Norma vettoriale"},t("p",null,"Funzione che associa un valore positivo a ogni vettore diverso da 0, e 0 al vettore zero."),t(N.a,null,t("a",{href:"https://it.wikipedia.org/wiki/Norma_(matematica)#/media/File:Vector_norms.svg"},"Esempi su Wikipedia"))),t(M.a,{title:"Norma a infinito"},t("p",null,"Massimo dei valori assoluti di tutti gli elementi del vettore."),t("p",null,t(q.a,null,O(c())))),t(M.a,{title:"Norma a 1"},t("p",null,"Somma dei valori assoluti di tutti gli elementi del vettore."),t("p",null,t(q.a,null,O(s())))),t(M.a,{title:"Norma a 2"},t("p",null,"Radice quadrata della somma dei quadrati di tutti gli elementi del vettore."),t("p",null,t(q.a,null,O(u()))))),t(j.a,null,t(M.a,{title:"Norma matriciale indotta"},t("p",null,"Funzione che associa un valore positivo a ogni matrice diversa da 0, e 0 alla matrice zero."),t("p",null,"Si ricavano dalle norme vettoriali:"),t("p",null,t(q.a,null,O(a()))),t(N.a,null,t(q.a,null,"sup")," è l'estremo superiore di un insieme. E' molto simile al massimo: ricordi le prime lezioni di Analisi?")),t(M.a,{title:"Norma a infinito"},t("p",null,"Massimo delle somme dei valori assoluti di tutti gli elementi di ogni riga di una matrice."),t("p",null,t(q.a,null,O(o())))),t(M.a,{title:"Norma a 1"},t("p",null,"Massimo delle somme dei valori assoluti di tutti gli elementi di ogni colonna di una matrice."),t("p",null,t(q.a,null,O(l())))),t(M.a,{title:"Norma a 2"},t("p",null,"Radice quadrata del rango del prodotto tra una matrice e la sua trasposta."),t("p",null,t(q.a,null,O(r()))))),t(j.a,null,t(M.a,{title:"Errore relativo tra vettori e matrici"},t("p",null,"Le norme sono usate per calcolare l'errore relativo tra due vettori o matrici:"),t("p",null,t(q.a,null,O(i()))))),t(j.a,{title:"Fattorizzazione"},t(M.a,{title:"Cos'è?"},t("p",null,"La fattorizzazione è il processo che permette di risolvere sistemi di equazioni lineari rappresentati in forma di matrice."),t("p",null,"Esistono molteplici algoritmi in grado di realizzarla: mentre tutti portano alla stessa soluzione, possono avere ",t("b",null,"velocità")," e ",t("b",null,"indici algoritmici")," diversi."),t("p",null,"Il sistema lineare da risolvere viene diviso in due parti: la ",t("i",null,"matrice dei coefficienti")," e il ",t("i",null,"vettore termine noto"),".")),t(M.a,{title:"Teorema di Rouché-Capélli"},t("p",null))))},n}(A.Component)}.call(this,n("hosL").h)},"7bXG":function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return l}));var i=n("kpQM"),r=n.n(i),l=function(e){function n(){return e.apply(this,arguments)||this}var i,l;return l=e,(i=n).prototype=Object.create(l.prototype),i.prototype.constructor=i,i.__proto__=l,n.prototype.render=function(){return t("span",{class:r.a.todo},this.props.children)},n}(n("hosL").Component)}).call(this,n("hosL").h)},"810C":function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return o}));var i=n("hosL"),r=n("Q3JM"),l=n.n(r),o=function(e){function n(){var t;return(t=e.call(this)||this).state={now:Date.now()},t.timer=null,t}var i,r;r=e,(i=n).prototype=Object.create(r.prototype),i.prototype.constructor=i,i.__proto__=r;var o=n.prototype;return o.componentDidMount=function(){var t=this;this.timer=setInterval((function(){t.setState({now:Date.now()})}),1e3)},o.componentWillUnmount=function(){null!==this.timer&&clearInterval(this.timer)},o.render=function(){var e="Unknown date",n=l.a.timer,i={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){var r=(e=new Date(this.props.to))-this.state.now;r>0?i={milliseconds:r%1e3,seconds:Math.floor(r/1e3)%60,minutes:Math.floor(r/6e4)%60,hours:Math.floor(r/36e5)%24,days:Math.floor(r/864e5)}:(i={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},n+=" "+l.a.expired)}else n+=" "+l.a.unknown;return t("div",{class:n,title:e},t("div",{class:l.a.days+" "+l.a.count},i.days),t("div",{className:l.a.days+" "+l.a.text},"giorni"),t("div",{class:l.a.hours+" "+l.a.count},i.hours),t("div",{className:l.a.hours+" "+l.a.text},"ore"),t("div",{class:l.a.minutes+" "+l.a.count},i.minutes),t("div",{className:l.a.minutes+" "+l.a.text},"minuti"),t("div",{class:l.a.seconds+" "+l.a.count},i.seconds),t("div",{class:l.a.seconds+" "+l.a.text},"secondi"),t("div",{class:l.a.remaining},"rimasti"))},n}(i.Component)}).call(this,n("hosL").h)},"9yVG":function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return l}));var i=n("1nLj"),r=n.n(i),l=function(e){function n(){return e.apply(this,arguments)||this}var i,l;l=e,(i=n).prototype=Object.create(l.prototype),i.prototype.constructor=i,i.__proto__=l;var o=n.prototype;return o.getStyle=function(){return r.a.panel},o.render=function(){var e=null;return void 0!==this.props.title&&(e=t("h3",null,this.props.title)),t("div",{class:this.getStyle(),id:this.props.id},e,this.props.children)},n}(n("hosL").Component)}).call(this,n("hosL").h)},PEwj:function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return l}));var i=n("68UE"),r=n.n(i),l=function(e){function n(){return e.apply(this,arguments)||this}var i,l;return l=e,(i=n).prototype=Object.create(l.prototype),i.prototype.constructor=i,i.__proto__=l,n.prototype.render=function(){return t("blockquote",{class:r.a.example},this.props.children)},n}(n("hosL").Component)}).call(this,n("hosL").h)},Q3JM:function(t){t.exports={timer:"timer__23gHK",days:"days__3ZzFX",hours:"hours__3LtGw",minutes:"minutes__1_j61",seconds:"seconds__gE-gj",count:"count__28Md8",text:"text__2kIQZ",remaining:"remaining__1HVwa",unknown:"unknown__teMQN",expired:"expired__3wewI"}},ZsnK:function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return l}));var i=n("+AyP"),r=n.n(i),l=function(e){function n(){return e.apply(this,arguments)||this}var i,l;return l=e,(i=n).prototype=Object.create(l.prototype),i.prototype.constructor=i,i.__proto__=l,n.prototype.render=function(){return t("img",{src:"https://latex.codecogs.com/svg.latex?"+("{\\color{White} "+this.props.children+" }"),alt:this.props.children,title:this.props.children,class:r.a.latex})},n}(n("hosL").Component)}).call(this,n("hosL").h)},ddBW:function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return l}));var i=n("rMrT"),r=n.n(i),l=function(e){function n(){return e.apply(this,arguments)||this}var i,l;return l=e,(i=n).prototype=Object.create(l.prototype),i.prototype.constructor=i,i.__proto__=l,n.prototype.render=function(){var e,n=null;return void 0!==this.props.title&&(n=t("h2",null,this.props.title)),e=Array.isArray(this.props.children)?this.props.children.map((function(e){return t("div",{class:r.a.splitchild},e)})):t("div",{class:r.a.splitchild},this.props.children),t("div",{class:r.a.split},n,t("div",{class:r.a.splitparent},e))},n}(n("hosL").Component)}).call(this,n("hosL").h)},kpQM:function(t){t.exports={todo:"todo__1pOoN"}},rMrT:function(t){t.exports={split:"split__3qCWp",splitparent:"splitparent__2xagg",splitchild:"splitchild__3cEoc"}}}]); +//# sourceMappingURL=route-calcoloNumerico.chunk.5e3f8.js.map \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.5e3f8.js.map b/docs/route-calcoloNumerico.chunk.5e3f8.js.map new file mode 100644 index 0000000..6d3085d --- /dev/null +++ b/docs/route-calcoloNumerico.chunk.5e3f8.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./components/latex.css","webpack:///./components/panel.css","webpack:///./components/example.css","webpack:///./routes/calcoloNumerico.js","webpack:///./components/todo.js","webpack:///./components/timer.js","webpack:///./components/panel.js","webpack:///./components/example.js","webpack:///./components/timer.less","webpack:///./components/latex.js","webpack:///./components/split.js","webpack:///./components/todo.css","webpack:///./components/split.css"],"names":["module","exports","r","String","raw","CalcoloNumerico","render","title","href","Component","Todo","class","style","todo","this","props","children","Timer","state","Date","now","timer","componentDidMount","setInterval","setState","componentWillUnmount","clearInterval","dateTo","className","parts","milliseconds","seconds","minutes","hours","days","to","timeLeft","Math","floor","expired","unknown","count","text","remaining","Panel","getStyle","panel","undefined","id","Example","example","Latex","src","alt","latex","Split","Array","isArray","map","element","splitchild","split","splitparent"],"mappings":"4EACAA,EAAOC,QAAU,CAAC,MAAQ,iB,mBCA1BD,EAAOC,QAAU,CAAC,MAAQ,iB,mBCA1BD,EAAOC,QAAU,CAAC,QAAU,mB,wvGCOtBC,EAAIC,OAAOC,IAEIC,E,gLACjBC,OAAA,WACI,OACI,aACI,gCACA,EAAC,IAAD,CAAOC,MAAO,YACV,EAAC,IAAD,CAAOA,MAAO,wBACV,WACI,OAAGC,KAAM,sCAAT,iCAGR,EAAC,IAAD,CAAOD,MAAO,eACV,iCAKR,EAAC,IAAD,CAAOA,MAAO,SACV,EAAC,IAAD,CAAOA,MAAO,SACV,8BAGA,YACI,iDACA,gEAAqD,kEAEzD,+BAEI,EAAC,IAAD,SAIZ,EAAC,IAAD,CAAOA,MAAO,aACV,EAAC,IAAD,CAAOA,MAAO,sBACV,mCAGA,YACI,8CACA,2FAIZ,EAAC,IAAD,CAAOA,MAAO,8BACV,EAAC,IAAD,CAAOA,MAAO,8BACV,2EACiE,EAAC,IAAD,KAAQL,EAAR,MADjE,yCAGA,mDACyC,EAAC,IAAD,KAAQA,EAAR,MADzC,MAIJ,EAAC,IAAD,CAAOK,MAAO,mBACV,kFAGA,WACI,EAAC,IAAD,KAAQL,EAAR,OAEJ,EAAC,IAAD,gEAIJ,EAAC,IAAD,CAAOK,MAAO,mBACV,sFAGA,WACI,EAAC,IAAD,KAAQL,EAAR,SAIZ,EAAC,IAAD,CAAOK,MAAO,kBACV,EAAC,IAAD,CAAOA,MAAO,0BACV,0GACgG,qCADhG,KAGA,WACI,EAAC,IAAD,KAAQL,EAAR,OAEJ,YACI,YACI,EAAC,IAAD,eADJ,mDAGA,YACI,EAAC,IAAD,UADJ,gDAGA,YACI,EAAC,IAAD,UADJ,eACgC,EAAC,IAAD,UADhC,8DAC2G,EAAC,IAAD,KAAQA,EAAR,MAD3G,kDAMZ,EAAC,IAAD,CAAOK,MAAO,0BACV,EAAC,IAAD,CAAOA,MAAO,oBACV,wBACc,EAAC,IAAD,UADd,2GAGA,yCAC+B,EAAC,IAAD,UAD/B,2BACuE,EAAC,IAAD,KAAQL,EAAR,MADvE,mDACqJ,EAAC,IAAD,UADrJ,4BAGA,8GAIJ,EAAC,IAAD,CAAOK,MAAO,gDACV,YACI,gDACA,yCACA,qCACA,sCACA,iEAGR,EAAC,IAAD,CAAOA,MAAO,kBACV,2EAGA,WACI,EAAC,IAAD,KAAQL,EAAR,SAIZ,EAAC,IAAD,CAAOK,MAAO,uCACV,EAAC,IAAD,CAAOA,MAAO,mBACV,gCACsB,4BADtB,KAGA,WACI,EAAC,IAAD,kCAEJ,iDACuC,EAAC,IAAD,KAAQL,EAAR,MADvC,MAIJ,EAAC,IAAD,CAAOK,MAAO,sBACV,gCACsB,+CADtB,KAGA,WACI,EAAC,IAAD,kCAEJ,iDACuC,EAAC,IAAD,KAAQL,EAAR,MADvC,OAKR,EAAC,IAAD,KACI,EAAC,IAAD,CAAOK,MAAO,6BACV,6CACmC,8BADnC,KAGA,EAAC,IAAD,KACI,EAAC,IAAD,KAAQL,EAAR,MADJ,2EAIJ,EAAC,IAAD,CAAOK,MAAO,qBACV,8CACoC,iCADpC,KAGA,EAAC,IAAD,KACI,iDACuC,EAAC,IAAD,KAAQL,EAAR,MADvC,KAGA,8BACoB,EAAC,IAAD,KAAQA,EAAR,MADpB,UACgF,EAAC,IAAD,KAAQA,EAAR,MADhF,uCAGA,qCAC2B,EAAC,IAAD,KAAQA,EAAR,MAD3B,4DAC2I,0BAD3I,uBAMZ,EAAC,IAAD,KACI,EAAC,IAAD,CAAOK,MAAO,6BACV,kEACwD,8BADxD,KAGA,qGAGA,wFAIJ,EAAC,IAAD,CAAOA,MAAO,sBACV,kEACwD,iCADxD,KAGA,uGAKR,EAAC,IAAD,CAAOA,MAAO,4CACV,EAAC,IAAD,CAAOA,MAAO,qBACV,0CAGA,mCACyB,mCADzB,OAKR,EAAC,IAAD,CAAOA,MAAO,SACV,EAAC,IAAD,CAAOA,MAAO,oBACV,wGAGA,EAAC,IAAD,KACI,OAAGC,KAAM,iFAAT,yBAGR,EAAC,IAAD,CAAOD,MAAO,oBACV,6EAGA,WACI,EAAC,IAAD,KAAQL,EAAR,QAGR,EAAC,IAAD,CAAOK,MAAO,aACV,2EAGA,WACI,EAAC,IAAD,KAAQL,EAAR,QAGR,EAAC,IAAD,CAAOK,MAAO,aACV,0FAGA,WACI,EAAC,IAAD,KAAQL,EAAR,SAIZ,EAAC,IAAD,KACI,EAAC,IAAD,CAAOK,MAAO,4BACV,0GAGA,kDAGA,WACI,EAAC,IAAD,KAAQL,EAAR,OAEJ,EAAC,IAAD,KACI,EAAC,IAAD,YADJ,2GAIJ,EAAC,IAAD,CAAOK,MAAO,oBACV,yGAGA,WACI,EAAC,IAAD,KAAQL,EAAR,QAGR,EAAC,IAAD,CAAOK,MAAO,aACV,4GAGA,WACI,EAAC,IAAD,KAAQL,EAAR,QAGR,EAAC,IAAD,CAAOK,MAAO,aACV,yFAGA,WACI,EAAC,IAAD,KAAQL,EAAR,SAIZ,EAAC,IAAD,KACI,EAAC,IAAD,CAAOK,MAAO,yCACV,6FAGA,WACI,EAAC,IAAD,KAAQL,EAAR,SAIZ,EAAC,IAAD,CAAOK,MAAO,mBACV,EAAC,IAAD,CAAOA,MAAO,UACV,yIAGA,+HACqH,uBADrH,MACuI,iCADvI,aAGA,4EACkE,uCADlE,SACuG,mCADvG,MAIJ,EAAC,IAAD,CAAOA,MAAO,6BACV,gB,GA7SqBE,c,oICPxBC,E,gLACpBJ,OAAA,WACC,OAAO,UAAMK,MAAOC,IAAMC,MAAOC,KAAKC,MAAMC,W,aAFZP,a,gJCCbQ,E,YACjB,aAAc,aACV,sBACKC,MAAQ,CACT,IAAOC,KAAKC,OAEhB,EAAKC,MAAQ,KALH,E,0HAQdC,kBAAA,WAAoB,WAChBR,KAAKO,MAAQE,aAAY,WACrB,EAAKC,SAAS,CAAC,IAAOL,KAAKC,UAC5B,M,EAGPK,qBAAA,WACsB,OAAfX,KAAKO,OACJK,cAAcZ,KAAKO,Q,EAI3Bf,OAAA,WACI,IAAIqB,EAAS,eACTC,EAAYhB,IAAMS,MAElBQ,EAAQ,CACRC,aAAc,IACdC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,KAAM,KAGV,GAAGpB,KAAKC,MAAMoB,GAAI,CAEd,IAAIC,GADJT,EAAS,IAAIR,KAAKL,KAAKC,MAAMoB,KACLrB,KAAKI,MAAME,IAEhCgB,EAAW,EACVP,EAAQ,CACJC,aAAcM,EAAW,IACzBL,QAASM,KAAKC,MAAMF,EAAW,KAAQ,GACvCJ,QAASK,KAAKC,MAAMF,EAAW,KAAS,GACxCH,MAAOI,KAAKC,MAAMF,EAAW,MAAW,GACxCF,KAAMG,KAAKC,MAAMF,EAAW,SAKhCP,EAAQ,CACJC,aAAc,EACdC,QAAS,EACTC,QAAS,EACTC,MAAO,EACPC,KAAM,GAGVN,GAAa,IAAMhB,IAAM2B,cAI7BX,GAAa,IAAMhB,IAAM4B,QAG7B,OACI,SAAK7B,MAAOiB,EAAWrB,MAAOoB,GAC1B,SAAKhB,MAAOC,IAAMsB,KAAO,IAAMtB,IAAM6B,OAChCZ,EAAMK,MAEX,SAAKN,UAAWhB,IAAMsB,KAAO,IAAMtB,IAAM8B,MAAzC,UAGA,SAAK/B,MAAOC,IAAMqB,MAAQ,IAAMrB,IAAM6B,OACjCZ,EAAMI,OAEX,SAAKL,UAAWhB,IAAMqB,MAAQ,IAAMrB,IAAM8B,MAA1C,OAGA,SAAK/B,MAAOC,IAAMoB,QAAU,IAAMpB,IAAM6B,OACnCZ,EAAMG,SAEX,SAAKJ,UAAWhB,IAAMoB,QAAU,IAAMpB,IAAM8B,MAA5C,UAGA,SAAK/B,MAAOC,IAAMmB,QAAU,IAAMnB,IAAM6B,OACnCZ,EAAME,SAEX,SAAKpB,MAAOC,IAAMmB,QAAU,IAAMnB,IAAM8B,MAAxC,WAGA,SAAK/B,MAAOC,IAAM+B,WAAlB,a,GAzFmBlC,e,oICDdmC,E,wLACpBC,SAAA,WACC,OAAOjC,IAAMkC,O,EAGdxC,OAAA,WACC,IAAIC,EAAQ,KAKZ,YAJwBwC,IAArBjC,KAAKC,MAAMR,QACbA,EAAS,YAAKO,KAAKC,MAAMR,QAIzB,SAAKI,MAAOG,KAAK+B,WAAYG,GAAIlC,KAAKC,MAAMiC,IAC1CzC,EACAO,KAAKC,MAAMC,W,aAdmBP,a,kICAdwC,E,gLACjB3C,OAAA,WACI,OACI,gBAAYK,MAAOC,IAAMsC,SACpBpC,KAAKC,MAAMC,W,aAJSP,a,yCCFrCT,EAAOC,QAAU,CAAC,MAAQ,eAAe,KAAO,cAAc,MAAQ,eAAe,QAAU,iBAAiB,QAAU,iBAAiB,MAAQ,eAAe,KAAO,cAAc,UAAY,mBAAmB,QAAU,iBAAiB,QAAU,mB,0GCEtOkD,E,gLACpB7C,OAAA,WAEC,OACC,SAAK8C,IAAG,yCAFM,mBAAmBtC,KAAKC,MAAMC,SAAjC,MAGTqC,IAAKvC,KAAKC,MAAMC,SACbT,MAAOO,KAAKC,MAAMC,SAClBL,MAAOC,IAAM0C,S,aAPc7C,a,kICAd8C,E,gLACpBjD,OAAA,WACI,IAKOU,EALHT,EAAQ,KAcf,YAb2BwC,IAArBjC,KAAKC,MAAMR,QACPA,EAAS,YAAKO,KAAKC,MAAMR,QAKzBS,EADDwC,MAAMC,QAAQ3C,KAAKC,MAAMC,UACbF,KAAKC,MAAMC,SAAS0C,KAAI,SAAAC,GAC/B,OAAQ,SAAKhD,MAAOC,IAAMgD,YAAaD,MAIhC,SAAKhD,MAAOC,IAAMgD,YAAa9C,KAAKC,MAAMC,UAGxD,SAAKL,MAAOC,IAAMiD,OACVtD,EACD,SAAKI,MAAOC,IAAMkD,aAAc9C,K,aAnBbP,a,yCCFnCT,EAAOC,QAAU,CAAC,KAAO,gB,iBCAzBD,EAAOC,QAAU,CAAC,MAAQ,eAAe,YAAc,qBAAqB,WAAa","file":"route-calcoloNumerico.chunk.5e3f8.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"latex\":\"latex__3Esv7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"panel\":\"panel__1ubJw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"example\":\"example__P0_NL\"};","import {Component} from 'preact'\nimport Split from \"../components/split\";\nimport Latex from \"../components/latex\";\nimport Panel from \"../components/panel\";\nimport Example from \"../components/example\";\nimport Todo from \"../components/todo\";\nimport Timer from \"../components/timer\";\n\nconst r = String.raw;\n\nexport default class CalcoloNumerico extends Component {\n render() {\n return (\n
\n

Calcolo Numerico

\n \n \n

\n silvia.bonettini@unimore.it\n

\n
\n \n

\n Su appuntamento.\n

\n
\n
\n \n \n

\n E' composto da:\n

\n
    \n
  • 2 domande sugli argomenti teorici
  • \n
  • 1 domanda di implementazione algoritmo in MATLAB (facoltativa per i punteggi migliori del TBL)
  • \n
\n

\n Prossimo appello:\n \n

\n
\n
\n \n \n

\n Algoritmi che hanno:\n

\n
    \n
  • numeri reali in input e output
  • \n
  • successioni delle quattro operazioni aritmetiche fondamentali come passi
  • \n
\n
\n
\n \n \n

\n Con i numeri floating point può capitare che un certo numero {r`\\alpha`} non sia rappresentato correttamente.\n

\n

\n In tal caso, il numero si indica con {r`\\alpha^*`}.\n

\n
\n \n

\n È la differenza tra il numero desiderato e il numero rappresentato:\n

\n

\n {r`E_a = \\left | \\alpha - \\alpha^* \\right |`}\n

\n \n Vale sempre 0, tranne in caso di underflow o overflow.\n \n
\n \n

\n Indica quanto il numero rappresentato differisce dal numero desiderato:\n

\n

\n {r`\\forall \\alpha \\neq 0, E_r = \\frac{E_a}{\\left | \\alpha \\right |}`}\n

\n
\n
\n \n \n

\n L'errore relativo di un numero reale rappresentato in virgola mobile è minore o uguale alla precisione di macchina:\n

\n

\n {r`E_r \\leq k \\cdot \\beta^{1-t}`}\n

\n
    \n
  • \n \\beta è uguale alla base utilizzata (solitamente 2).\n
  • \n
  • \n t è uguale al numero di cifre della mantissa.\n
  • \n
  • \n k è uguale a 1 se il numero viene rappresentato per troncamento oppure a {r`\\frac{1}{2}`} se viene rappresentato per arrotondamento.\n
  • \n
\n
\n
\n \n \n

\n L'insieme F è il sottoinsieme dei numeri reali rappresentabili in floating point dalla macchina che stiamo usando.\n

\n

\n Operazioni tra elementi di F producono risultati in {r`\\mathbb{R}`}, che però decaderanno nuovamente a elementi di F, perdendo informazioni.\n

\n

\n Il teorema della precisione di macchina si applica quindi anche ai risultati delle operazioni.\n

\n
\n \n
    \n
  • Hanno più di un elemento neutro.
  • \n
  • Un numero ha più opposti.
  • \n
  • Non sono associative.
  • \n
  • Non sono distributive.
  • \n
  • Non vale la legge di annullamento del prodotto.
  • \n
\n
\n \n

\n Indica che un valore è soggetto alla precisione di macchina:\n

\n

\n {r`fl(x) = (x)(1 + \\epsilon_x)`}\n

\n
\n
\n \n \n

\n Errore dipendente solo dai dati.\n

\n

\n TODO: qual è la formula?\n

\n

\n È l'errore che si presenterebbe se {r`\\epsilon_1 = \\epsilon_2 = \\dots = 0`}.\n

\n
\n \n

\n Errore dipendente solo dalle operazioni effettuate.\n

\n

\n TODO: qual è la formula?\n

\n

\n È l'errore che si presenterebbe se {r`\\epsilon_x = \\epsilon_y = \\dots = 0`}.\n

\n
\n
\n \n \n

\n Un problema poco sensibile all'errore inerente.\n

\n \n {r`y = \\frac{1}{x}`} è mal condizionato intorno allo 0 e ben condizionato lontano dallo 0.\n \n
\n \n

\n Un algoritmo poco sensibile all'errore algoritmico.\n

\n \n

\n Cerchiamo un algoritmo che risolva {r`2x = 4`}.\n

\n

\n Calcolare prima {r`t = fl \\left( \\frac{1}{4} \\right)`} e poi {r`x^* = fl ( 2 \\cdot t )`} porta a una perdita di precisione.\n

\n

\n Calcolare direttamente {r`x^* = fl \\left( \\frac{2}{4} \\right)`} non ha alcuna perdita di precisione e rende l'algoritmo più stabile del precedente.\n

\n
\n
\n
\n \n \n

\n È il coefficiente di proporzionalità tra i dati e l'errore inerente.\n

\n

\n Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione.\n

\n

\n Minore è l'indice di condizionamento, meglio condizionato è un problema.\n

\n
\n \n

\n È il coefficiente di proporzionalità tra i dati e l'errore algoritmico.\n

\n

\n Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione.\n

\n
\n
\n \n \n

\n Matrice con determinante 0.\n

\n

\n Le matrici singolari non sono invertibili.\n

\n
\n
\n \n \n

\n Funzione che associa un valore positivo a ogni vettore diverso da 0, e 0 al vettore zero.\n

\n \n Esempi su Wikipedia\n \n
\n \n

\n Massimo dei valori assoluti di tutti gli elementi del vettore.\n

\n

\n {r`\\Vert x \\Vert_\\infty = max_{i = 1..n} | x_i |`}\n

\n
\n \n

\n Somma dei valori assoluti di tutti gli elementi del vettore.\n

\n

\n {r`\\Vert x \\Vert_1 = \\sum_{i = 1}^n | x_i |`}\n

\n
\n \n

\n Radice quadrata della somma dei quadrati di tutti gli elementi del vettore.\n

\n

\n {r`\\Vert x \\Vert_2 = \\sqrt{\\sum_{i = 1}^n x_i^2}`}\n

\n
\n
\n \n \n

\n Funzione che associa un valore positivo a ogni matrice diversa da 0, e 0 alla matrice zero.\n

\n

\n Si ricavano dalle norme vettoriali:\n

\n

\n {r`\\Vert A \\Vert = sup_{x \\in \\mathbb{R}, x \\neq 0} \\frac{\\Vert A \\cdot x \\Vert}{\\Vert x \\Vert}`}\n

\n \n sup è l'estremo superiore di un insieme. E' molto simile al massimo: ricordi le prime lezioni di Analisi?\n \n
\n \n

\n Massimo delle somme dei valori assoluti di tutti gli elementi di ogni riga di una matrice.\n

\n

\n {r`\\Vert A \\Vert_\\infty = max_{i = 1..n} \\sum_{j = 1}^n | a_{ij} |`}\n

\n
\n \n

\n Massimo delle somme dei valori assoluti di tutti gli elementi di ogni colonna di una matrice.\n

\n

\n {r`\\Vert A \\Vert_1 = max_{j = 1..n} \\sum_{i = 1}^n | a_{ij} |`}\n

\n
\n \n

\n Radice quadrata del rango del prodotto tra una matrice e la sua trasposta.\n

\n

\n {r`\\Vert A \\Vert_2 = \\sqrt{\\rho ( A^T \\times A ) }`}\n

\n
\n
\n \n \n

\n Le norme sono usate per calcolare l'errore relativo tra due vettori o matrici:\n

\n

\n {r`\\frac{\\Vert x - y \\Vert}{\\Vert x \\Vert}`}\n

\n
\n
\n \n \n

\n La fattorizzazione è il processo che permette di risolvere sistemi di equazioni lineari rappresentati in forma di matrice.\n

\n

\n Esistono molteplici algoritmi in grado di realizzarla: mentre tutti portano alla stessa soluzione, possono avere velocità e indici algoritmici diversi.\n

\n

\n Il sistema lineare da risolvere viene diviso in due parti: la matrice dei coefficienti e il vettore termine noto.\n

\n
\n \n

\n \n

\n
\n
\n
\n )\n }\n}\n","import style from \"./todo.css\";\r\nimport { Component } from 'preact';\r\n\r\nexport default class Todo extends Component {\r\n\trender() {\r\n\t\treturn {this.props.children};\r\n\t}\r\n}\r\n","import {Component} from 'preact'\r\nimport style from \"./timer.less\"\r\n\r\n\r\nexport default class Timer extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n \"now\": Date.now()\r\n };\r\n this.timer = null;\r\n }\r\n\r\n componentDidMount() {\r\n this.timer = setInterval(() => {\r\n this.setState({\"now\": Date.now()})\r\n }, 1000)\r\n }\r\n\r\n componentWillUnmount() {\r\n if(this.timer !== null) {\r\n clearInterval(this.timer)\r\n }\r\n }\r\n\r\n render() {\r\n let dateTo = \"Unknown date\";\r\n let className = style.timer;\r\n\r\n let parts = {\r\n milliseconds: \"?\",\r\n seconds: \"?\",\r\n minutes: \"?\",\r\n hours: \"?\",\r\n days: \"?\",\r\n };\r\n\r\n if(this.props.to) {\r\n dateTo = new Date(this.props.to);\r\n let timeLeft = dateTo - this.state.now;\r\n\r\n if(timeLeft > 0) {\r\n parts = {\r\n milliseconds: timeLeft % 1000,\r\n seconds: Math.floor(timeLeft / 1000) % 60,\r\n minutes: Math.floor(timeLeft / 60000) % 60,\r\n hours: Math.floor(timeLeft / 3600000) % 24,\r\n days: Math.floor(timeLeft / 86400000),\r\n };\r\n }\r\n\r\n else {\r\n parts = {\r\n milliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n };\r\n\r\n className += \" \" + style.expired;\r\n }\r\n }\r\n else {\r\n className += \" \" + style.unknown;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {parts.days}\r\n
\r\n
\r\n giorni\r\n
\r\n
\r\n {parts.hours}\r\n
\r\n
\r\n ore\r\n
\r\n
\r\n {parts.minutes}\r\n
\r\n
\r\n minuti\r\n
\r\n
\r\n {parts.seconds}\r\n
\r\n
\r\n secondi\r\n
\r\n
\r\n rimasti\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import style from \"./panel.css\";\nimport { Component } from 'preact';\n\nexport default class Panel extends Component {\n\tgetStyle() {\n\t\treturn style.panel;\n\t};\n\n\trender() {\n\t\tlet title = null;\n\t\tif(this.props.title !== undefined) {\n\t\t\ttitle = (

{this.props.title}

);\n\t\t}\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t{title}\n\t\t\t\t{this.props.children}\n\t\t\t
\n\t\t);\n\t}\n}\n","import style from \"./example.css\";\nimport {Component} from \"preact\";\n\nexport default class Example extends Component {\n render() {\n return (\n
\n {this.props.children}\n
\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"timer\":\"timer__23gHK\",\"days\":\"days__3ZzFX\",\"hours\":\"hours__3LtGw\",\"minutes\":\"minutes__1_j61\",\"seconds\":\"seconds__gE-gj\",\"count\":\"count__28Md8\",\"text\":\"text__2kIQZ\",\"remaining\":\"remaining__1HVwa\",\"unknown\":\"unknown__teMQN\",\"expired\":\"expired__3wewI\"};","import style from './latex.css';\nimport { Component } from 'preact';\n\nexport default class Latex extends Component {\n\trender() {\n\t\tlet equation = `{\\\\color{White} ${this.props.children} }`;\n\t\treturn (\n\t\t\t{this.props.children}\n\t\t\t);\n\t}\n}","import style from \"./split.css\";\nimport { Component } from 'preact';\n\nexport default class Split extends Component {\n\trender() {\n\t let title = null;\n\t if(this.props.title !== undefined) {\n title = (

{this.props.title}

)\n }\n\n let children;\n if(Array.isArray(this.props.children)) {\n children = this.props.children.map(element => {\n return (
{element}
);\n });\n }\n else {\n children =
{this.props.children}
;\n }\n\t\treturn (\n\t
\n {title}\n
{children}
\n
\n );\n\t}\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"todo\":\"todo__1pOoN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"split\":\"split__3qCWp\",\"splitparent\":\"splitparent__2xagg\",\"splitchild\":\"splitchild__3cEoc\"};"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.9d1fa.esm.js b/docs/route-calcoloNumerico.chunk.9d1fa.esm.js deleted file mode 100644 index dab5e05..0000000 --- a/docs/route-calcoloNumerico.chunk.9d1fa.esm.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{"+AyP":function(e){e.exports={latex:"latex__3Esv7"}},"1nLj":function(e){e.exports={panel:"panel__1ubJw"}},"68UE":function(e){e.exports={example:"example__P0_NL"}},"6GOG":function(e,l,n){"use strict";n.r(l),function(e){n.d(l,"default",(function(){return M}));var i=n("hosL"),t=n("ddBW"),a=n("ZsnK"),o=n("9yVG"),r=n("PEwj"),s=n("7bXG"),u=n("810C");let p,c,d,m,h,f,g,v,_,x,b,w,z,E,L,y=e=>e;const C=String.raw;class M extends i.Component{render(){return e("div",null,e("h1",null,"Calcolo Numerico"),e(t.a,{title:"Contatti"},e(o.a,{title:"Email della prof.ssa"},e("p",null,e("a",{href:"mailto:silvia.bonettini@unimore.it"},"silvia.bonettini@unimore.it"))),e(o.a,{title:"Ricevimento"},e("p",null,"Su appuntamento."))),e(t.a,{title:"Esame"},e(o.a,{title:"Orale"},e("p",null,"E' composto da:"),e("ul",null,e("li",null,"2 domande sugli argomenti teorici"),e("li",null,"1 domanda di implementazione algoritmo in MATLAB ",e("small",null,"(facoltativa per i punteggi migliori del TBL)"))),e("p",null,"Prossimo appello:",e(u.a,null)))),e(t.a,{title:"Algoritmi"},e(o.a,{title:"Algoritmi numerici"},e("p",null,"Algoritmi che hanno:"),e("ul",null,e("li",null,"numeri reali in input e output"),e("li",null,"successioni delle quattro operazioni aritmetiche fondamentali come passi")))),e(t.a,{title:"Errore di rappresentazione"},e(o.a,{title:"Errore di rappresentazione"},e("p",null,"Con i numeri floating point può capitare che un certo numero ",e(a.a,null,C(p||(p=y`\alpha`)))," non sia rappresentato correttamente."),e("p",null,"In tal caso, il numero si indica con ",e(a.a,null,C(c||(c=y`\alpha^*`))),".")),e(o.a,{title:"Errore assoluto"},e("p",null,"È la differenza tra il numero desiderato e il numero rappresentato:"),e("p",null,e(a.a,null,C(d||(d=y`E_a = \left | \alpha - \alpha^* \right |`)))),e(r.a,null,"Vale sempre 0, tranne in caso di underflow o overflow.")),e(o.a,{title:"Errore relativo"},e("p",null,"Indica quanto il numero rappresentato differisce dal numero desiderato:"),e("p",null,e(a.a,null,C(m||(m=y`\forall \alpha \neq 0, E_r = \frac{E_a}{\left | \alpha \right |}`)))))),e(t.a,{title:"Floating point"},e(o.a,{title:"Precisione di macchina"},e("p",null,"L'errore relativo di un numero reale rappresentato in virgola mobile è minore o uguale alla ",e("i",null,"precisione di macchina"),":"),e("p",null,e(a.a,null,C(h||(h=y`E_r \leq k \cdot \beta^{1-t}`)))),e("ul",null,e("li",null,e(a.a,null,"\\beta")," è uguale alla base utilizzata (solitamente 2)."),e("li",null,e(a.a,null,"t")," è uguale al numero di cifre della mantissa."),e("li",null,e(a.a,null,"k")," è uguale a ",e(a.a,null,"1")," se il numero viene rappresentato per troncamento oppure a ",e(a.a,null,C(f||(f=y`\frac{1}{2}`)))," se viene rappresentato per arrotondamento.")))),e(t.a,{title:"Operazioni di macchina"},e(o.a,{title:"Un nuovo insieme"},e("p",null,"L'insieme ",e(a.a,null,"F")," è il sottoinsieme dei numeri reali rappresentabili in floating point dalla macchina che stiamo usando."),e("p",null,"Operazioni tra elementi di ",e(a.a,null,"F")," producono risultati in ",e(a.a,null,C(g||(g=y`\mathbb{R}`))),", che però decaderanno nuovamente a elementi di ",e(a.a,null,"F"),", perdendo informazioni."),e("p",null,"Il teorema della precisione di macchina si applica quindi anche ai risultati delle operazioni.")),e(o.a,{title:"Caratteristiche delle operazioni di macchina"},e("ul",null,e("li",null,"Hanno più di un elemento neutro."),e("li",null,"Un numero ha più opposti."),e("li",null,"Non sono associative."),e("li",null,"Non sono distributive."),e("li",null,"Non vale la legge di annullamento del prodotto."))),e(o.a,{title:"La funzione fl"},e("p",null,"Indica che un valore è soggetto alla precisione di macchina:"),e("p",null,e(a.a,null,C(v||(v=y`fl(x) = (x)(1 + \epsilon_x)`)))))),e(t.a,{title:"Errori nelle operazioni di macchina"},e(o.a,{title:"Errore inerente"},e("p",null,"Errore dipendente ",e("b",null,"solo dai dati"),"."),e("p",null,e(s.a,null,"TODO: qual è la formula?")),e("p",null,"È l'errore che si presenterebbe se ",e(a.a,null,C(_||(_=y`\epsilon_1 = \epsilon_2 = \dots = 0`))),".")),e(o.a,{title:"Errore algoritmico"},e("p",null,"Errore dipendente ",e("b",null,"solo dalle operazioni effettuate"),"."),e("p",null,e(s.a,null,"TODO: qual è la formula?")),e("p",null,"È l'errore che si presenterebbe se ",e(a.a,null,C(x||(x=y`\epsilon_x = \epsilon_y = \dots = 0`))),"."))),e(t.a,null,e(o.a,{title:"Problema ben condizionato"},e("p",null,"Un problema poco sensibile all'",e("b",null,"errore inerente"),"."),e(r.a,null,e(a.a,null,C(b||(b=y`y = \frac{1}{x}`)))," è mal condizionato intorno allo 0 e ben condizionato lontano dallo 0.")),e(o.a,{title:"Algoritmo stabile"},e("p",null,"Un algoritmo poco sensibile all'",e("b",null,"errore algoritmico"),"."),e(r.a,null,e("p",null,"Cerchiamo un algoritmo che risolva ",e(a.a,null,C(w||(w=y`2x = 4`))),"."),e("p",null,"Calcolare prima ",e(a.a,null,C(z||(z=y`t = fl \left( \frac{1}{4} \right)`)))," e poi ",e(a.a,null,C(E||(E=y`x^* = fl ( 2 \cdot t )`)))," porta a una perdita di precisione."),e("p",null,"Calcolare direttamente ",e(a.a,null,C(L||(L=y`x^* = fl \left( \frac{2}{4} \right)`)))," non ha alcuna perdita di precisione e rende l'algoritmo ",e("b",null,"più stabile")," del precedente.")))),e(t.a,null,e(o.a,{title:"Indice di condizionamento"},e("p",null,"È il coefficiente di proporzionalità tra i dati e l'",e("b",null,"errore inerente"),"."),e("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."),e("p",null,"Minore è l'indice di condizionamento, meglio condizionato è un problema.")),e(o.a,{title:"Indice algoritmico"},e("p",null,"È il coefficiente di proporzionalità tra i dati e l'",e("b",null,"errore algoritmico"),"."),e("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."))))}}}.call(this,n("hosL").h)},"7bXG":function(e,l,n){"use strict";(function(e){n.d(l,"a",(function(){return o}));var i=n("kpQM"),t=n.n(i),a=n("hosL");class o extends a.Component{render(){return e("span",{class:t.a.todo},this.props.children)}}}).call(this,n("hosL").h)},"810C":function(e,l,n){"use strict";(function(e){n.d(l,"a",(function(){return o}));var i=n("hosL"),t=n("Q3JM"),a=n.n(t);class o extends i.Component{constructor(){super(),this.state={now:Date.now()},this.timer=null}componentDidMount(){this.timer=setInterval(()=>{this.setState({now:Date.now()})},1e3)}componentWillUnmount(){null!==this.timer&&clearInterval(this.timer)}render(){let l="Unknown date",n=a.a.timer,i={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){l=new Date(this.props.to);let e=l-this.state.now;e>0?i={milliseconds:e%1e3,seconds:Math.floor(e/1e3)%60,minutes:Math.floor(e/6e4)%60,hours:Math.floor(e/36e5)%24,days:Math.floor(e/864e5)}:(i={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},n+=" "+a.a.expired)}else n+=" "+a.a.unknown;return e("div",{class:n,title:l},e("div",{class:a.a.days+" "+a.a.count},i.days),e("div",{className:a.a.days+" "+a.a.text},"giorni"),e("div",{class:a.a.hours+" "+a.a.count},i.hours),e("div",{className:a.a.hours+" "+a.a.text},"ore"),e("div",{class:a.a.minutes+" "+a.a.count},i.minutes),e("div",{className:a.a.minutes+" "+a.a.text},"minuti"),e("div",{class:a.a.seconds+" "+a.a.count},i.seconds),e("div",{class:a.a.seconds+" "+a.a.text},"secondi"),e("div",{class:a.a.remaining},"rimasti"))}}}).call(this,n("hosL").h)},"9yVG":function(e,l,n){"use strict";(function(e){n.d(l,"a",(function(){return o}));var i=n("1nLj"),t=n.n(i),a=n("hosL");class o extends a.Component{getStyle(){return t.a.panel}render(){let l=null;return void 0!==this.props.title&&(l=e("h3",null,this.props.title)),e("div",{class:this.getStyle(),id:this.props.id},l,this.props.children)}}}).call(this,n("hosL").h)},PEwj:function(e,l,n){"use strict";(function(e){n.d(l,"a",(function(){return o}));var i=n("68UE"),t=n.n(i),a=n("hosL");class o extends a.Component{render(){return e("blockquote",{class:t.a.example},this.props.children)}}}).call(this,n("hosL").h)},Q3JM:function(e){e.exports={timer:"timer__23gHK",days:"days__3ZzFX",hours:"hours__3LtGw",minutes:"minutes__1_j61",seconds:"seconds__gE-gj",count:"count__28Md8",text:"text__2kIQZ",remaining:"remaining__1HVwa",unknown:"unknown__teMQN",expired:"expired__3wewI"}},ZsnK:function(e,l,n){"use strict";(function(e){n.d(l,"a",(function(){return o}));var i=n("+AyP"),t=n.n(i),a=n("hosL");class o extends a.Component{render(){return e("img",{src:`https://latex.codecogs.com/svg.latex?${`{\\color{White} ${this.props.children} }`}`,alt:this.props.children,title:this.props.children,class:t.a.latex})}}}).call(this,n("hosL").h)},ddBW:function(e,l,n){"use strict";(function(e){n.d(l,"a",(function(){return o}));var i=n("rMrT"),t=n.n(i),a=n("hosL");class o extends a.Component{render(){let l,n=null;return void 0!==this.props.title&&(n=e("h2",null,this.props.title)),l=Array.isArray(this.props.children)?this.props.children.map(l=>e("div",{class:t.a.splitchild},l)):e("div",{class:t.a.splitchild},this.props.children),e("div",{class:t.a.split},n,e("div",{class:t.a.splitparent},l))}}}).call(this,n("hosL").h)},kpQM:function(e){e.exports={todo:"todo__1pOoN"}},rMrT:function(e){e.exports={split:"split__3qCWp",splitparent:"splitparent__2xagg",splitchild:"splitchild__3cEoc"}}}]); -//# sourceMappingURL=route-calcoloNumerico.chunk.9d1fa.esm.js.map \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.f5c66.js b/docs/route-calcoloNumerico.chunk.f5c66.js deleted file mode 100644 index a17ce45..0000000 --- a/docs/route-calcoloNumerico.chunk.f5c66.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{"+AyP":function(n){n.exports={latex:"latex__3Esv7"}},"1nLj":function(n){n.exports={panel:"panel__1ubJw"}},"68UE":function(n){n.exports={example:"example__P0_NL"}},"6GOG":function(n,t,e){"use strict";e.r(t),function(n){function i(){var n=g(["x^* = fl left( \frac{2}{4} \right)"],["x^* = fl \\left( \\frac{2}{4} \\right)"]);return i=function(){return n},n}function o(){var n=g(["x^* = fl ( 2 cdot t )"],["x^* = fl ( 2 \\cdot t )"]);return o=function(){return n},n}function r(){var n=g(["t = fl left( \frac{1}{4} \right)"],["t = fl \\left( \\frac{1}{4} \\right)"]);return r=function(){return n},n}function l(){var n=g(["2x = 4"]);return l=function(){return n},n}function a(){var n=g(["y = \frac{1}{x}"],["y = \\frac{1}{x}"]);return a=function(){return n},n}function u(){var n=g(["epsilon_x = epsilon_y = dots = 0"],["\\epsilon_x = \\epsilon_y = \\dots = 0"]);return u=function(){return n},n}function s(){var n=g(["epsilon_1 = epsilon_2 = dots = 0"],["\\epsilon_1 = \\epsilon_2 = \\dots = 0"]);return s=function(){return n},n}function p(){var n=g(["fl(x) = (x)(1 + epsilon_x)"],["fl(x) = (x)(1 + \\epsilon_x)"]);return p=function(){return n},n}function c(){var n=g(["mathbb{R}"],["\\mathbb{R}"]);return c=function(){return n},n}function d(){var n=g(["\frac{1}{2}"],["\\frac{1}{2}"]);return d=function(){return n},n}function f(){var n=g(["E_r leq k cdot \beta^{1-t}"],["E_r \\leq k \\cdot \\beta^{1-t}"]);return f=function(){return n},n}function h(){var n=g(["\forall alpha \neq 0, E_r = \frac{E_a}{left | alpha \right |}"],["\\forall \\alpha \\neq 0, E_r = \\frac{E_a}{\\left | \\alpha \\right |}"]);return h=function(){return n},n}function m(){var n=g(["E_a = left | alpha - alpha^* \right |"],["E_a = \\left | \\alpha - \\alpha^* \\right |"]);return m=function(){return n},n}function _(){var n=g(["alpha^*"],["\\alpha^*"]);return _=function(){return n},n}function v(){var n=g(["alpha"],["\\alpha"]);return v=function(){return n},n}function g(n,t){return t||(t=n.slice(0)),n.raw=t,n}e.d(t,"default",(function(){return O}));var y=e("hosL"),b=e("ddBW"),x=e("ZsnK"),E=e("9yVG"),w=e("PEwj"),z=e("7bXG"),L=e("810C"),C=String.raw,O=function(t){function e(){return t.apply(this,arguments)||this}var g,y;return y=t,(g=e).prototype=Object.create(y.prototype),g.prototype.constructor=g,g.__proto__=y,e.prototype.render=function(){return n("div",null,n("h1",null,"Calcolo Numerico"),n(b.a,{title:"Contatti"},n(E.a,{title:"Email della prof.ssa"},n("p",null,n("a",{href:"mailto:silvia.bonettini@unimore.it"},"silvia.bonettini@unimore.it"))),n(E.a,{title:"Ricevimento"},n("p",null,"Su appuntamento."))),n(b.a,{title:"Esame"},n(E.a,{title:"Orale"},n("p",null,"E' composto da:"),n("ul",null,n("li",null,"2 domande sugli argomenti teorici"),n("li",null,"1 domanda di implementazione algoritmo in MATLAB ",n("small",null,"(facoltativa per i punteggi migliori del TBL)"))),n("p",null,"Prossimo appello:",n(L.a,null)))),n(b.a,{title:"Algoritmi"},n(E.a,{title:"Algoritmi numerici"},n("p",null,"Algoritmi che hanno:"),n("ul",null,n("li",null,"numeri reali in input e output"),n("li",null,"successioni delle quattro operazioni aritmetiche fondamentali come passi")))),n(b.a,{title:"Errore di rappresentazione"},n(E.a,{title:"Errore di rappresentazione"},n("p",null,"Con i numeri floating point può capitare che un certo numero ",n(x.a,null,C(v()))," non sia rappresentato correttamente."),n("p",null,"In tal caso, il numero si indica con ",n(x.a,null,C(_())),".")),n(E.a,{title:"Errore assoluto"},n("p",null,"È la differenza tra il numero desiderato e il numero rappresentato:"),n("p",null,n(x.a,null,C(m()))),n(w.a,null,"Vale sempre 0, tranne in caso di underflow o overflow.")),n(E.a,{title:"Errore relativo"},n("p",null,"Indica quanto il numero rappresentato differisce dal numero desiderato:"),n("p",null,n(x.a,null,C(h()))))),n(b.a,{title:"Floating point"},n(E.a,{title:"Precisione di macchina"},n("p",null,"L'errore relativo di un numero reale rappresentato in virgola mobile è minore o uguale alla ",n("i",null,"precisione di macchina"),":"),n("p",null,n(x.a,null,C(f()))),n("ul",null,n("li",null,n(x.a,null,"\\beta")," è uguale alla base utilizzata (solitamente 2)."),n("li",null,n(x.a,null,"t")," è uguale al numero di cifre della mantissa."),n("li",null,n(x.a,null,"k")," è uguale a ",n(x.a,null,"1")," se il numero viene rappresentato per troncamento oppure a ",n(x.a,null,C(d()))," se viene rappresentato per arrotondamento.")))),n(b.a,{title:"Operazioni di macchina"},n(E.a,{title:"Un nuovo insieme"},n("p",null,"L'insieme ",n(x.a,null,"F")," è il sottoinsieme dei numeri reali rappresentabili in floating point dalla macchina che stiamo usando."),n("p",null,"Operazioni tra elementi di ",n(x.a,null,"F")," producono risultati in ",n(x.a,null,C(c())),", che però decaderanno nuovamente a elementi di ",n(x.a,null,"F"),", perdendo informazioni."),n("p",null,"Il teorema della precisione di macchina si applica quindi anche ai risultati delle operazioni.")),n(E.a,{title:"Caratteristiche delle operazioni di macchina"},n("ul",null,n("li",null,"Hanno più di un elemento neutro."),n("li",null,"Un numero ha più opposti."),n("li",null,"Non sono associative."),n("li",null,"Non sono distributive."),n("li",null,"Non vale la legge di annullamento del prodotto."))),n(E.a,{title:"La funzione fl"},n("p",null,"Indica che un valore è soggetto alla precisione di macchina:"),n("p",null,n(x.a,null,C(p()))))),n(b.a,{title:"Errori nelle operazioni di macchina"},n(E.a,{title:"Errore inerente"},n("p",null,"Errore dipendente ",n("b",null,"solo dai dati"),"."),n("p",null,n(z.a,null,"TODO: qual è la formula?")),n("p",null,"È l'errore che si presenterebbe se ",n(x.a,null,C(s())),".")),n(E.a,{title:"Errore algoritmico"},n("p",null,"Errore dipendente ",n("b",null,"solo dalle operazioni effettuate"),"."),n("p",null,n(z.a,null,"TODO: qual è la formula?")),n("p",null,"È l'errore che si presenterebbe se ",n(x.a,null,C(u())),"."))),n(b.a,null,n(E.a,{title:"Problema ben condizionato"},n("p",null,"Un problema poco sensibile all'",n("b",null,"errore inerente"),"."),n(w.a,null,n(x.a,null,C(a()))," è mal condizionato intorno allo 0 e ben condizionato lontano dallo 0.")),n(E.a,{title:"Algoritmo stabile"},n("p",null,"Un algoritmo poco sensibile all'",n("b",null,"errore algoritmico"),"."),n(w.a,null,n("p",null,"Cerchiamo un algoritmo che risolva ",n(x.a,null,C(l())),"."),n("p",null,"Calcolare prima ",n(x.a,null,C(r()))," e poi ",n(x.a,null,C(o()))," porta a una perdita di precisione."),n("p",null,"Calcolare direttamente ",n(x.a,null,C(i()))," non ha alcuna perdita di precisione e rende l'algoritmo ",n("b",null,"più stabile")," del precedente.")))),n(b.a,null,n(E.a,{title:"Indice di condizionamento"},n("p",null,"È il coefficiente di proporzionalità tra i dati e l'",n("b",null,"errore inerente"),"."),n("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."),n("p",null,"Minore è l'indice di condizionamento, meglio condizionato è un problema.")),n(E.a,{title:"Indice algoritmico"},n("p",null,"È il coefficiente di proporzionalità tra i dati e l'",n("b",null,"errore algoritmico"),"."),n("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."))))},e}(y.Component)}.call(this,e("hosL").h)},"7bXG":function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return r}));var i=e("kpQM"),o=e.n(i),r=function(t){function e(){return t.apply(this,arguments)||this}var i,r;return r=t,(i=e).prototype=Object.create(r.prototype),i.prototype.constructor=i,i.__proto__=r,e.prototype.render=function(){return n("span",{class:o.a.todo},this.props.children)},e}(e("hosL").Component)}).call(this,e("hosL").h)},"810C":function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return l}));var i=e("hosL"),o=e("Q3JM"),r=e.n(o),l=function(t){function e(){var n;return(n=t.call(this)||this).state={now:Date.now()},n.timer=null,n}var i,o;o=t,(i=e).prototype=Object.create(o.prototype),i.prototype.constructor=i,i.__proto__=o;var l=e.prototype;return l.componentDidMount=function(){var n=this;this.timer=setInterval((function(){n.setState({now:Date.now()})}),1e3)},l.componentWillUnmount=function(){null!==this.timer&&clearInterval(this.timer)},l.render=function(){var t="Unknown date",e=r.a.timer,i={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){var o=(t=new Date(this.props.to))-this.state.now;o>0?i={milliseconds:o%1e3,seconds:Math.floor(o/1e3)%60,minutes:Math.floor(o/6e4)%60,hours:Math.floor(o/36e5)%24,days:Math.floor(o/864e5)}:(i={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},e+=" "+r.a.expired)}else e+=" "+r.a.unknown;return n("div",{class:e,title:t},n("div",{class:r.a.days+" "+r.a.count},i.days),n("div",{className:r.a.days+" "+r.a.text},"giorni"),n("div",{class:r.a.hours+" "+r.a.count},i.hours),n("div",{className:r.a.hours+" "+r.a.text},"ore"),n("div",{class:r.a.minutes+" "+r.a.count},i.minutes),n("div",{className:r.a.minutes+" "+r.a.text},"minuti"),n("div",{class:r.a.seconds+" "+r.a.count},i.seconds),n("div",{class:r.a.seconds+" "+r.a.text},"secondi"),n("div",{class:r.a.remaining},"rimasti"))},e}(i.Component)}).call(this,e("hosL").h)},"9yVG":function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return r}));var i=e("1nLj"),o=e.n(i),r=function(t){function e(){return t.apply(this,arguments)||this}var i,r;r=t,(i=e).prototype=Object.create(r.prototype),i.prototype.constructor=i,i.__proto__=r;var l=e.prototype;return l.getStyle=function(){return o.a.panel},l.render=function(){var t=null;return void 0!==this.props.title&&(t=n("h3",null,this.props.title)),n("div",{class:this.getStyle(),id:this.props.id},t,this.props.children)},e}(e("hosL").Component)}).call(this,e("hosL").h)},PEwj:function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return r}));var i=e("68UE"),o=e.n(i),r=function(t){function e(){return t.apply(this,arguments)||this}var i,r;return r=t,(i=e).prototype=Object.create(r.prototype),i.prototype.constructor=i,i.__proto__=r,e.prototype.render=function(){return n("blockquote",{class:o.a.example},this.props.children)},e}(e("hosL").Component)}).call(this,e("hosL").h)},Q3JM:function(n){n.exports={timer:"timer__23gHK",days:"days__3ZzFX",hours:"hours__3LtGw",minutes:"minutes__1_j61",seconds:"seconds__gE-gj",count:"count__28Md8",text:"text__2kIQZ",remaining:"remaining__1HVwa",unknown:"unknown__teMQN",expired:"expired__3wewI"}},ZsnK:function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return r}));var i=e("+AyP"),o=e.n(i),r=function(t){function e(){return t.apply(this,arguments)||this}var i,r;return r=t,(i=e).prototype=Object.create(r.prototype),i.prototype.constructor=i,i.__proto__=r,e.prototype.render=function(){return n("img",{src:"https://latex.codecogs.com/svg.latex?"+("{\\color{White} "+this.props.children+" }"),alt:this.props.children,title:this.props.children,class:o.a.latex})},e}(e("hosL").Component)}).call(this,e("hosL").h)},ddBW:function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return r}));var i=e("rMrT"),o=e.n(i),r=function(t){function e(){return t.apply(this,arguments)||this}var i,r;return r=t,(i=e).prototype=Object.create(r.prototype),i.prototype.constructor=i,i.__proto__=r,e.prototype.render=function(){var t,e=null;return void 0!==this.props.title&&(e=n("h2",null,this.props.title)),t=Array.isArray(this.props.children)?this.props.children.map((function(t){return n("div",{class:o.a.splitchild},t)})):n("div",{class:o.a.splitchild},this.props.children),n("div",{class:o.a.split},e,n("div",{class:o.a.splitparent},t))},e}(e("hosL").Component)}).call(this,e("hosL").h)},kpQM:function(n){n.exports={todo:"todo__1pOoN"}},rMrT:function(n){n.exports={split:"split__3qCWp",splitparent:"splitparent__2xagg",splitchild:"splitchild__3cEoc"}}}]); -//# sourceMappingURL=route-calcoloNumerico.chunk.f5c66.js.map \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.f5c66.js.map b/docs/route-calcoloNumerico.chunk.f5c66.js.map deleted file mode 100644 index 7b16792..0000000 --- a/docs/route-calcoloNumerico.chunk.f5c66.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./components/latex.css","webpack:///./components/panel.css","webpack:///./components/example.css","webpack:///./routes/calcoloNumerico.js","webpack:///./components/todo.js","webpack:///./components/timer.js","webpack:///./components/panel.js","webpack:///./components/example.js","webpack:///./components/timer.less","webpack:///./components/latex.js","webpack:///./components/split.js","webpack:///./components/todo.css","webpack:///./components/split.css"],"names":["module","exports","r","String","raw","CalcoloNumerico","render","title","href","Component","Todo","class","style","todo","this","props","children","Timer","state","Date","now","timer","componentDidMount","setInterval","setState","componentWillUnmount","clearInterval","dateTo","className","parts","milliseconds","seconds","minutes","hours","days","to","timeLeft","Math","floor","expired","unknown","count","text","remaining","Panel","getStyle","panel","undefined","id","Example","example","Latex","src","alt","latex","Split","Array","isArray","map","element","splitchild","split","splitparent"],"mappings":"4EACAA,EAAOC,QAAU,CAAC,MAAQ,iB,mBCA1BD,EAAOC,QAAU,CAAC,MAAQ,iB,mBCA1BD,EAAOC,QAAU,CAAC,QAAU,mB,y5DCOtBC,EAAIC,OAAOC,IAEIC,E,gLACjBC,OAAA,WACI,OACI,aACI,gCACA,EAAC,IAAD,CAAOC,MAAO,YACV,EAAC,IAAD,CAAOA,MAAO,wBACV,WACI,OAAGC,KAAM,sCAAT,iCAGR,EAAC,IAAD,CAAOD,MAAO,eACV,iCAKR,EAAC,IAAD,CAAOA,MAAO,SACV,EAAC,IAAD,CAAOA,MAAO,SACV,8BAGA,YACI,iDACA,gEAAqD,kEAEzD,+BAEI,EAAC,IAAD,SAIZ,EAAC,IAAD,CAAOA,MAAO,aACV,EAAC,IAAD,CAAOA,MAAO,sBACV,mCAGA,YACI,8CACA,2FAIZ,EAAC,IAAD,CAAOA,MAAO,8BACV,EAAC,IAAD,CAAOA,MAAO,8BACV,2EACiE,EAAC,IAAD,KAAQL,EAAR,MADjE,yCAGA,mDACyC,EAAC,IAAD,KAAQA,EAAR,MADzC,MAIJ,EAAC,IAAD,CAAOK,MAAO,mBACV,kFAGA,WACI,EAAC,IAAD,KAAQL,EAAR,OAEJ,EAAC,IAAD,gEAIJ,EAAC,IAAD,CAAOK,MAAO,mBACV,sFAGA,WACI,EAAC,IAAD,KAAQL,EAAR,SAIZ,EAAC,IAAD,CAAOK,MAAO,kBACV,EAAC,IAAD,CAAOA,MAAO,0BACV,0GACgG,qCADhG,KAGA,WACI,EAAC,IAAD,KAAQL,EAAR,OAEJ,YACI,YACI,EAAC,IAAD,eADJ,mDAGA,YACI,EAAC,IAAD,UADJ,gDAGA,YACI,EAAC,IAAD,UADJ,eACgC,EAAC,IAAD,UADhC,8DAC2G,EAAC,IAAD,KAAQA,EAAR,MAD3G,kDAMZ,EAAC,IAAD,CAAOK,MAAO,0BACV,EAAC,IAAD,CAAOA,MAAO,oBACV,wBACc,EAAC,IAAD,UADd,2GAGA,yCAC+B,EAAC,IAAD,UAD/B,2BACuE,EAAC,IAAD,KAAQL,EAAR,MADvE,mDACqJ,EAAC,IAAD,UADrJ,4BAGA,8GAIJ,EAAC,IAAD,CAAOK,MAAO,gDACV,YACI,gDACA,yCACA,qCACA,sCACA,iEAGR,EAAC,IAAD,CAAOA,MAAO,kBACV,2EAGA,WACI,EAAC,IAAD,KAAQL,EAAR,SAIZ,EAAC,IAAD,CAAOK,MAAO,uCACV,EAAC,IAAD,CAAOA,MAAO,mBACV,gCACsB,4BADtB,KAGA,WACI,EAAC,IAAD,kCAEJ,iDACuC,EAAC,IAAD,KAAQL,EAAR,MADvC,MAIJ,EAAC,IAAD,CAAOK,MAAO,sBACV,gCACsB,+CADtB,KAGA,WACI,EAAC,IAAD,kCAEJ,iDACuC,EAAC,IAAD,KAAQL,EAAR,MADvC,OAKR,EAAC,IAAD,KACI,EAAC,IAAD,CAAOK,MAAO,6BACV,6CACmC,8BADnC,KAGA,EAAC,IAAD,KACI,EAAC,IAAD,KAAQL,EAAR,MADJ,2EAIJ,EAAC,IAAD,CAAOK,MAAO,qBACV,8CACoC,iCADpC,KAGA,EAAC,IAAD,KACI,iDACuC,EAAC,IAAD,KAAQL,EAAR,MADvC,KAGA,8BACoB,EAAC,IAAD,KAAQA,EAAR,MADpB,UACgF,EAAC,IAAD,KAAQA,EAAR,MADhF,uCAGA,qCAC2B,EAAC,IAAD,KAAQA,EAAR,MAD3B,4DAC2I,0BAD3I,uBAMZ,EAAC,IAAD,KACI,EAAC,IAAD,CAAOK,MAAO,6BACV,kEACwD,8BADxD,KAGA,qGAGA,wFAIJ,EAAC,IAAD,CAAOA,MAAO,sBACV,kEACwD,iCADxD,KAGA,yG,GA7LqBE,c,oICPxBC,E,gLACpBJ,OAAA,WACC,OAAO,UAAMK,MAAOC,IAAMC,MAAOC,KAAKC,MAAMC,W,aAFZP,a,gJCCbQ,E,YACjB,aAAc,aACV,sBACKC,MAAQ,CACT,IAAOC,KAAKC,OAEhB,EAAKC,MAAQ,KALH,E,0HAQdC,kBAAA,WAAoB,WAChBR,KAAKO,MAAQE,aAAY,WACrB,EAAKC,SAAS,CAAC,IAAOL,KAAKC,UAC5B,M,EAGPK,qBAAA,WACsB,OAAfX,KAAKO,OACJK,cAAcZ,KAAKO,Q,EAI3Bf,OAAA,WACI,IAAIqB,EAAS,eACTC,EAAYhB,IAAMS,MAElBQ,EAAQ,CACRC,aAAc,IACdC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,KAAM,KAGV,GAAGpB,KAAKC,MAAMoB,GAAI,CAEd,IAAIC,GADJT,EAAS,IAAIR,KAAKL,KAAKC,MAAMoB,KACLrB,KAAKI,MAAME,IAEhCgB,EAAW,EACVP,EAAQ,CACJC,aAAcM,EAAW,IACzBL,QAASM,KAAKC,MAAMF,EAAW,KAAQ,GACvCJ,QAASK,KAAKC,MAAMF,EAAW,KAAS,GACxCH,MAAOI,KAAKC,MAAMF,EAAW,MAAW,GACxCF,KAAMG,KAAKC,MAAMF,EAAW,SAKhCP,EAAQ,CACJC,aAAc,EACdC,QAAS,EACTC,QAAS,EACTC,MAAO,EACPC,KAAM,GAGVN,GAAa,IAAMhB,IAAM2B,cAI7BX,GAAa,IAAMhB,IAAM4B,QAG7B,OACI,SAAK7B,MAAOiB,EAAWrB,MAAOoB,GAC1B,SAAKhB,MAAOC,IAAMsB,KAAO,IAAMtB,IAAM6B,OAChCZ,EAAMK,MAEX,SAAKN,UAAWhB,IAAMsB,KAAO,IAAMtB,IAAM8B,MAAzC,UAGA,SAAK/B,MAAOC,IAAMqB,MAAQ,IAAMrB,IAAM6B,OACjCZ,EAAMI,OAEX,SAAKL,UAAWhB,IAAMqB,MAAQ,IAAMrB,IAAM8B,MAA1C,OAGA,SAAK/B,MAAOC,IAAMoB,QAAU,IAAMpB,IAAM6B,OACnCZ,EAAMG,SAEX,SAAKJ,UAAWhB,IAAMoB,QAAU,IAAMpB,IAAM8B,MAA5C,UAGA,SAAK/B,MAAOC,IAAMmB,QAAU,IAAMnB,IAAM6B,OACnCZ,EAAME,SAEX,SAAKpB,MAAOC,IAAMmB,QAAU,IAAMnB,IAAM8B,MAAxC,WAGA,SAAK/B,MAAOC,IAAM+B,WAAlB,a,GAzFmBlC,e,oICDdmC,E,wLACpBC,SAAA,WACC,OAAOjC,IAAMkC,O,EAGdxC,OAAA,WACC,IAAIC,EAAQ,KAKZ,YAJwBwC,IAArBjC,KAAKC,MAAMR,QACbA,EAAS,YAAKO,KAAKC,MAAMR,QAIzB,SAAKI,MAAOG,KAAK+B,WAAYG,GAAIlC,KAAKC,MAAMiC,IAC1CzC,EACAO,KAAKC,MAAMC,W,aAdmBP,a,kICAdwC,E,gLACjB3C,OAAA,WACI,OACI,gBAAYK,MAAOC,IAAMsC,SACpBpC,KAAKC,MAAMC,W,aAJSP,a,yCCFrCT,EAAOC,QAAU,CAAC,MAAQ,eAAe,KAAO,cAAc,MAAQ,eAAe,QAAU,iBAAiB,QAAU,iBAAiB,MAAQ,eAAe,KAAO,cAAc,UAAY,mBAAmB,QAAU,iBAAiB,QAAU,mB,0GCEtOkD,E,gLACpB7C,OAAA,WAEC,OACC,SAAK8C,IAAG,yCAFM,mBAAmBtC,KAAKC,MAAMC,SAAjC,MAGTqC,IAAKvC,KAAKC,MAAMC,SACbT,MAAOO,KAAKC,MAAMC,SAClBL,MAAOC,IAAM0C,S,aAPc7C,a,kICAd8C,E,gLACpBjD,OAAA,WACI,IAKOU,EALHT,EAAQ,KAcf,YAb2BwC,IAArBjC,KAAKC,MAAMR,QACPA,EAAS,YAAKO,KAAKC,MAAMR,QAKzBS,EADDwC,MAAMC,QAAQ3C,KAAKC,MAAMC,UACbF,KAAKC,MAAMC,SAAS0C,KAAI,SAAAC,GAC/B,OAAQ,SAAKhD,MAAOC,IAAMgD,YAAaD,MAIhC,SAAKhD,MAAOC,IAAMgD,YAAa9C,KAAKC,MAAMC,UAGxD,SAAKL,MAAOC,IAAMiD,OACVtD,EACD,SAAKI,MAAOC,IAAMkD,aAAc9C,K,aAnBbP,a,yCCFnCT,EAAOC,QAAU,CAAC,KAAO,gB,iBCAzBD,EAAOC,QAAU,CAAC,MAAQ,eAAe,YAAc,qBAAqB,WAAa","file":"route-calcoloNumerico.chunk.f5c66.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"latex\":\"latex__3Esv7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"panel\":\"panel__1ubJw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"example\":\"example__P0_NL\"};","import {Component} from 'preact'\nimport Split from \"../components/split\";\nimport Latex from \"../components/latex\";\nimport Panel from \"../components/panel\";\nimport Example from \"../components/example\";\nimport Todo from \"../components/todo\";\nimport Timer from \"../components/timer\";\n\nconst r = String.raw;\n\nexport default class CalcoloNumerico extends Component {\n render() {\n return (\n
\n

Calcolo Numerico

\n \n \n

\n silvia.bonettini@unimore.it\n

\n
\n \n

\n Su appuntamento.\n

\n
\n
\n \n \n

\n E' composto da:\n

\n
    \n
  • 2 domande sugli argomenti teorici
  • \n
  • 1 domanda di implementazione algoritmo in MATLAB (facoltativa per i punteggi migliori del TBL)
  • \n
\n

\n Prossimo appello:\n \n

\n
\n
\n \n \n

\n Algoritmi che hanno:\n

\n
    \n
  • numeri reali in input e output
  • \n
  • successioni delle quattro operazioni aritmetiche fondamentali come passi
  • \n
\n
\n
\n \n \n

\n Con i numeri floating point può capitare che un certo numero {r`\\alpha`} non sia rappresentato correttamente.\n

\n

\n In tal caso, il numero si indica con {r`\\alpha^*`}.\n

\n
\n \n

\n È la differenza tra il numero desiderato e il numero rappresentato:\n

\n

\n {r`E_a = \\left | \\alpha - \\alpha^* \\right |`}\n

\n \n Vale sempre 0, tranne in caso di underflow o overflow.\n \n
\n \n

\n Indica quanto il numero rappresentato differisce dal numero desiderato:\n

\n

\n {r`\\forall \\alpha \\neq 0, E_r = \\frac{E_a}{\\left | \\alpha \\right |}`}\n

\n
\n
\n \n \n

\n L'errore relativo di un numero reale rappresentato in virgola mobile è minore o uguale alla precisione di macchina:\n

\n

\n {r`E_r \\leq k \\cdot \\beta^{1-t}`}\n

\n
    \n
  • \n \\beta è uguale alla base utilizzata (solitamente 2).\n
  • \n
  • \n t è uguale al numero di cifre della mantissa.\n
  • \n
  • \n k è uguale a 1 se il numero viene rappresentato per troncamento oppure a {r`\\frac{1}{2}`} se viene rappresentato per arrotondamento.\n
  • \n
\n
\n
\n \n \n

\n L'insieme F è il sottoinsieme dei numeri reali rappresentabili in floating point dalla macchina che stiamo usando.\n

\n

\n Operazioni tra elementi di F producono risultati in {r`\\mathbb{R}`}, che però decaderanno nuovamente a elementi di F, perdendo informazioni.\n

\n

\n Il teorema della precisione di macchina si applica quindi anche ai risultati delle operazioni.\n

\n
\n \n
    \n
  • Hanno più di un elemento neutro.
  • \n
  • Un numero ha più opposti.
  • \n
  • Non sono associative.
  • \n
  • Non sono distributive.
  • \n
  • Non vale la legge di annullamento del prodotto.
  • \n
\n
\n \n

\n Indica che un valore è soggetto alla precisione di macchina:\n

\n

\n {r`fl(x) = (x)(1 + \\epsilon_x)`}\n

\n
\n
\n \n \n

\n Errore dipendente solo dai dati.\n

\n

\n TODO: qual è la formula?\n

\n

\n È l'errore che si presenterebbe se {r`\\epsilon_1 = \\epsilon_2 = \\dots = 0`}.\n

\n
\n \n

\n Errore dipendente solo dalle operazioni effettuate.\n

\n

\n TODO: qual è la formula?\n

\n

\n È l'errore che si presenterebbe se {r`\\epsilon_x = \\epsilon_y = \\dots = 0`}.\n

\n
\n
\n \n \n

\n Un problema poco sensibile all'errore inerente.\n

\n \n {r`y = \\frac{1}{x}`} è mal condizionato intorno allo 0 e ben condizionato lontano dallo 0.\n \n
\n \n

\n Un algoritmo poco sensibile all'errore algoritmico.\n

\n \n

\n Cerchiamo un algoritmo che risolva {r`2x = 4`}.\n

\n

\n Calcolare prima {r`t = fl \\left( \\frac{1}{4} \\right)`} e poi {r`x^* = fl ( 2 \\cdot t )`} porta a una perdita di precisione.\n

\n

\n Calcolare direttamente {r`x^* = fl \\left( \\frac{2}{4} \\right)`} non ha alcuna perdita di precisione e rende l'algoritmo più stabile del precedente.\n

\n
\n
\n
\n \n \n

\n È il coefficiente di proporzionalità tra i dati e l'errore inerente.\n

\n

\n Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione.\n

\n

\n Minore è l'indice di condizionamento, meglio condizionato è un problema.\n

\n
\n \n

\n È il coefficiente di proporzionalità tra i dati e l'errore algoritmico.\n

\n

\n Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione.\n

\n
\n
\n
\n )\n }\n}\n","import style from \"./todo.css\";\r\nimport { Component } from 'preact';\r\n\r\nexport default class Todo extends Component {\r\n\trender() {\r\n\t\treturn {this.props.children};\r\n\t}\r\n}\r\n","import {Component} from 'preact'\r\nimport style from \"./timer.less\"\r\n\r\n\r\nexport default class Timer extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n \"now\": Date.now()\r\n };\r\n this.timer = null;\r\n }\r\n\r\n componentDidMount() {\r\n this.timer = setInterval(() => {\r\n this.setState({\"now\": Date.now()})\r\n }, 1000)\r\n }\r\n\r\n componentWillUnmount() {\r\n if(this.timer !== null) {\r\n clearInterval(this.timer)\r\n }\r\n }\r\n\r\n render() {\r\n let dateTo = \"Unknown date\";\r\n let className = style.timer;\r\n\r\n let parts = {\r\n milliseconds: \"?\",\r\n seconds: \"?\",\r\n minutes: \"?\",\r\n hours: \"?\",\r\n days: \"?\",\r\n };\r\n\r\n if(this.props.to) {\r\n dateTo = new Date(this.props.to);\r\n let timeLeft = dateTo - this.state.now;\r\n\r\n if(timeLeft > 0) {\r\n parts = {\r\n milliseconds: timeLeft % 1000,\r\n seconds: Math.floor(timeLeft / 1000) % 60,\r\n minutes: Math.floor(timeLeft / 60000) % 60,\r\n hours: Math.floor(timeLeft / 3600000) % 24,\r\n days: Math.floor(timeLeft / 86400000),\r\n };\r\n }\r\n\r\n else {\r\n parts = {\r\n milliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n };\r\n\r\n className += \" \" + style.expired;\r\n }\r\n }\r\n else {\r\n className += \" \" + style.unknown;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {parts.days}\r\n
\r\n
\r\n giorni\r\n
\r\n
\r\n {parts.hours}\r\n
\r\n
\r\n ore\r\n
\r\n
\r\n {parts.minutes}\r\n
\r\n
\r\n minuti\r\n
\r\n
\r\n {parts.seconds}\r\n
\r\n
\r\n secondi\r\n
\r\n
\r\n rimasti\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import style from \"./panel.css\";\nimport { Component } from 'preact';\n\nexport default class Panel extends Component {\n\tgetStyle() {\n\t\treturn style.panel;\n\t};\n\n\trender() {\n\t\tlet title = null;\n\t\tif(this.props.title !== undefined) {\n\t\t\ttitle = (

{this.props.title}

);\n\t\t}\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t{title}\n\t\t\t\t{this.props.children}\n\t\t\t
\n\t\t);\n\t}\n}\n","import style from \"./example.css\";\nimport {Component} from \"preact\";\n\nexport default class Example extends Component {\n render() {\n return (\n
\n {this.props.children}\n
\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"timer\":\"timer__23gHK\",\"days\":\"days__3ZzFX\",\"hours\":\"hours__3LtGw\",\"minutes\":\"minutes__1_j61\",\"seconds\":\"seconds__gE-gj\",\"count\":\"count__28Md8\",\"text\":\"text__2kIQZ\",\"remaining\":\"remaining__1HVwa\",\"unknown\":\"unknown__teMQN\",\"expired\":\"expired__3wewI\"};","import style from './latex.css';\nimport { Component } from 'preact';\n\nexport default class Latex extends Component {\n\trender() {\n\t\tlet equation = `{\\\\color{White} ${this.props.children} }`;\n\t\treturn (\n\t\t\t{this.props.children}\n\t\t\t);\n\t}\n}","import style from \"./split.css\";\nimport { Component } from 'preact';\n\nexport default class Split extends Component {\n\trender() {\n\t let title = null;\n\t if(this.props.title !== undefined) {\n title = (

{this.props.title}

)\n }\n\n let children;\n if(Array.isArray(this.props.children)) {\n children = this.props.children.map(element => {\n return (
{element}
);\n });\n }\n else {\n children =
{this.props.children}
;\n }\n\t\treturn (\n\t
\n {title}\n
{children}
\n
\n );\n\t}\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"todo\":\"todo__1pOoN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"split\":\"split__3qCWp\",\"splitparent\":\"splitparent__2xagg\",\"splitchild\":\"splitchild__3cEoc\"};"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/sw-esm.js b/docs/sw-esm.js index a7ad889..db7e70b 100644 --- a/docs/sw-esm.js +++ b/docs/sw-esm.js @@ -1,4 +1,4 @@ -importScripts("/precache-manifest.712081d862b6875737d79df2320f3230.esm.js", "https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); +importScripts("/precache-manifest.20dc31c2fd802449f3ea3bbd9638e1d1.esm.js", "https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); !function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(t){return e[t]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s="idKB")}({idKB:function(){self.__precacheManifest=[].concat(self.__precacheManifest||[]);const e=e=>"navigate"===e.request.mode;workbox.routing.registerRoute(({event:t})=>e(t),new workbox.strategies.NetworkFirst({cacheName:workbox.core.cacheNames.precache,networkTimeoutSeconds:5,plugins:[new workbox.cacheableResponse.Plugin({statuses:[200]})]})),workbox.precaching.precacheAndRoute(self.__precacheManifest,{}),workbox.routing.setCatchHandler(({event:t})=>e(t)?caches.match(workbox.precaching.getCacheKeyForURL("/index.html")):Response.error())}}); //# sourceMappingURL=sw-esm.js.map diff --git a/docs/sw.js b/docs/sw.js index 393120f..3abe68a 100644 --- a/docs/sw.js +++ b/docs/sw.js @@ -1,4 +1,4 @@ -importScripts("/precache-manifest.812c022b607ffd6b3904af385980122b.js", "https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); +importScripts("/precache-manifest.53b02f2890f01147a2a2ea3eafd01aea.js", "https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); !function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(t){return e[t]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s="idKB")}({idKB:function(){self.__precacheManifest=[].concat(self.__precacheManifest||[]);const e=e=>"navigate"===e.request.mode;workbox.routing.registerRoute(({event:t})=>e(t),new workbox.strategies.NetworkFirst({cacheName:workbox.core.cacheNames.precache,networkTimeoutSeconds:5,plugins:[new workbox.cacheableResponse.Plugin({statuses:[200]})]})),workbox.precaching.precacheAndRoute(self.__precacheManifest,{}),workbox.routing.setCatchHandler(({event:t})=>e(t)?caches.match(workbox.precaching.getCacheKeyForURL("/index.html")):Response.error())}}); //# sourceMappingURL=sw.js.map diff --git a/size-plugin.json b/size-plugin.json index ff0fffc..eb9602e 100644 --- a/size-plugin.json +++ b/size-plugin.json @@ -1 +1 @@ -[{"timestamp":1587574375733,"files":[{"filename":"sw-esm.js","previous":741,"size":741,"diff":0},{"filename":"sw.js","previous":738,"size":738,"diff":0},{"filename":"bundle.69171.css","previous":618,"size":618,"diff":0},{"filename":"polyfills.7484f.esm.js","previous":2012,"size":2012,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-fisica.chunk.0b01a.css","previous":354,"size":354,"diff":0},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":11150,"size":11150,"diff":0},{"filename":"route-home.chunk.deccf.css","previous":287,"size":287,"diff":0},{"filename":"route-home.chunk.86a07.esm.js","previous":2176,"size":2176,"diff":0},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":137,"size":137,"diff":0},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-statistica.chunk.025c9.css","previous":444,"size":444,"diff":0},{"filename":"route-statistica.chunk.26925.esm.js","previous":15566,"size":15566,"diff":0},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":137,"size":137,"diff":0},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":25899,"size":25899,"diff":0},{"filename":"polyfills.b96b2.js","previous":2013,"size":2013,"diff":0},{"filename":"route-fisica.chunk.3f6c6.js","previous":12401,"size":12401,"diff":0},{"filename":"route-home.chunk.65775.js","previous":2288,"size":2288,"diff":0},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":1812,"size":1812,"diff":0},{"filename":"route-statistica.chunk.fe1f8.js","previous":18159,"size":18159,"diff":0},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":26055,"size":26055,"diff":0},{"filename":"route-basiDiDati.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-calcoloNumerico.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.201bc.esm.js","previous":822,"size":0,"diff":-822},{"filename":"route-basiDiDati.chunk.fad1f.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-calcoloNumerico.chunk.9d1fa.esm.js","previous":3170,"size":3170,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.1258f.js","previous":919,"size":0,"diff":-919},{"filename":"route-basiDiDati.chunk.8a7fd.js","previous":1857,"size":1857,"diff":0},{"filename":"route-calcoloNumerico.chunk.f5c66.js","previous":3478,"size":3478,"diff":0},{"filename":"bundle.e26ae.esm.js","previous":12583,"size":0,"diff":-12583},{"filename":"route-ottimizzazioneLineare.chunk.ab1d9.css","previous":420,"size":420,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.050ec.esm.js","previous":2606,"size":2606,"diff":0},{"filename":"bundle.bf05e.js","previous":12645,"size":0,"diff":-12645},{"filename":"route-ottimizzazioneLineare.chunk.5ecfe.js","previous":2900,"size":2900,"diff":0},{"filename":"bundle.6b8a3.esm.js","previous":0,"size":12584,"diff":12584},{"filename":"route-apprendimentoSistemiArtificiali.chunk.bcba4.esm.js","previous":0,"size":293849,"diff":293849},{"filename":"bundle.109db.js","previous":0,"size":12644,"diff":12644},{"filename":"route-apprendimentoSistemiArtificiali.chunk.e631f.js","previous":0,"size":294260,"diff":294260}]},{"timestamp":1587085125307,"files":[{"filename":"sw-esm.js","previous":741,"size":741,"diff":0},{"filename":"sw.js","previous":738,"size":738,"diff":0},{"filename":"bundle.69171.css","previous":618,"size":618,"diff":0},{"filename":"polyfills.7484f.esm.js","previous":2012,"size":2012,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-fisica.chunk.0b01a.css","previous":354,"size":354,"diff":0},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":11150,"size":11150,"diff":0},{"filename":"route-home.chunk.deccf.css","previous":287,"size":287,"diff":0},{"filename":"route-home.chunk.86a07.esm.js","previous":2176,"size":2176,"diff":0},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":137,"size":137,"diff":0},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.c2edb.css","previous":388,"size":0,"diff":-388},{"filename":"route-statistica.chunk.025c9.css","previous":444,"size":444,"diff":0},{"filename":"route-statistica.chunk.26925.esm.js","previous":15566,"size":15566,"diff":0},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":137,"size":137,"diff":0},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":25899,"size":25899,"diff":0},{"filename":"polyfills.b96b2.js","previous":2013,"size":2013,"diff":0},{"filename":"route-fisica.chunk.3f6c6.js","previous":12401,"size":12401,"diff":0},{"filename":"route-home.chunk.65775.js","previous":2288,"size":2288,"diff":0},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":1812,"size":1812,"diff":0},{"filename":"route-statistica.chunk.fe1f8.js","previous":18159,"size":18159,"diff":0},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":26055,"size":26055,"diff":0},{"filename":"route-basiDiDati.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-calcoloNumerico.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"bundle.f7171.esm.js","previous":12514,"size":0,"diff":-12514},{"filename":"route-apprendimentoSistemiArtificiali.chunk.201bc.esm.js","previous":822,"size":822,"diff":0},{"filename":"route-basiDiDati.chunk.fad1f.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-calcoloNumerico.chunk.9d1fa.esm.js","previous":3170,"size":3170,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.af4fb.esm.js","previous":1952,"size":0,"diff":-1952},{"filename":"bundle.2942c.js","previous":12576,"size":0,"diff":-12576},{"filename":"route-apprendimentoSistemiArtificiali.chunk.1258f.js","previous":919,"size":919,"diff":0},{"filename":"route-basiDiDati.chunk.8a7fd.js","previous":1857,"size":1857,"diff":0},{"filename":"route-calcoloNumerico.chunk.f5c66.js","previous":3478,"size":3478,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.d8829.js","previous":2185,"size":0,"diff":-2185},{"filename":"bundle.e26ae.esm.js","previous":0,"size":12583,"diff":12583},{"filename":"route-ottimizzazioneLineare.chunk.ab1d9.css","previous":0,"size":420,"diff":420},{"filename":"route-ottimizzazioneLineare.chunk.050ec.esm.js","previous":0,"size":2606,"diff":2606},{"filename":"bundle.bf05e.js","previous":0,"size":12645,"diff":12645},{"filename":"route-ottimizzazioneLineare.chunk.5ecfe.js","previous":0,"size":2900,"diff":2900}]},{"timestamp":1584974769267,"files":[{"filename":"sw-esm.js","previous":741,"size":741,"diff":0},{"filename":"sw.js","previous":738,"size":738,"diff":0},{"filename":"bundle.69171.css","previous":618,"size":618,"diff":0},{"filename":"polyfills.7484f.esm.js","previous":2012,"size":2012,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.fdc4f.esm.js","previous":1004,"size":0,"diff":-1004},{"filename":"route-fisica.chunk.0b01a.css","previous":354,"size":354,"diff":0},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":11150,"size":11150,"diff":0},{"filename":"route-home.chunk.deccf.css","previous":287,"size":287,"diff":0},{"filename":"route-home.chunk.86a07.esm.js","previous":2176,"size":2176,"diff":0},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":137,"size":137,"diff":0},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-statistica.chunk.025c9.css","previous":444,"size":444,"diff":0},{"filename":"route-statistica.chunk.26925.esm.js","previous":15566,"size":15566,"diff":0},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":137,"size":137,"diff":0},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":25899,"size":25899,"diff":0},{"filename":"polyfills.b96b2.js","previous":2013,"size":2013,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.b1ca4.js","previous":1120,"size":0,"diff":-1120},{"filename":"route-fisica.chunk.3f6c6.js","previous":12401,"size":12401,"diff":0},{"filename":"route-home.chunk.65775.js","previous":2288,"size":2288,"diff":0},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":1812,"size":1812,"diff":0},{"filename":"route-statistica.chunk.fe1f8.js","previous":18159,"size":18159,"diff":0},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":26055,"size":26055,"diff":0},{"filename":"route-basiDiDati.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-basiDiDati.chunk.ee3b7.esm.js","previous":2032,"size":0,"diff":-2032},{"filename":"route-ottimizzazioneLineare.chunk.96c0e.esm.js","previous":2149,"size":0,"diff":-2149},{"filename":"route-basiDiDati.chunk.eb3c5.js","previous":2169,"size":0,"diff":-2169},{"filename":"route-ottimizzazioneLineare.chunk.e117d.js","previous":2386,"size":0,"diff":-2386},{"filename":"bundle.85ae2.esm.js","previous":12517,"size":0,"diff":-12517},{"filename":"route-calcoloNumerico.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-calcoloNumerico.chunk.b8d1f.esm.js","previous":3201,"size":0,"diff":-3201},{"filename":"bundle.0cb08.js","previous":12572,"size":0,"diff":-12572},{"filename":"route-calcoloNumerico.chunk.726a6.js","previous":3450,"size":0,"diff":-3450},{"filename":"bundle.f7171.esm.js","previous":0,"size":12514,"diff":12514},{"filename":"route-apprendimentoSistemiArtificiali.chunk.201bc.esm.js","previous":0,"size":822,"diff":822},{"filename":"route-basiDiDati.chunk.fad1f.esm.js","previous":0,"size":1721,"diff":1721},{"filename":"route-calcoloNumerico.chunk.9d1fa.esm.js","previous":0,"size":3170,"diff":3170},{"filename":"route-ottimizzazioneLineare.chunk.af4fb.esm.js","previous":0,"size":1952,"diff":1952},{"filename":"bundle.2942c.js","previous":0,"size":12576,"diff":12576},{"filename":"route-apprendimentoSistemiArtificiali.chunk.1258f.js","previous":0,"size":919,"diff":919},{"filename":"route-basiDiDati.chunk.8a7fd.js","previous":0,"size":1857,"diff":1857},{"filename":"route-calcoloNumerico.chunk.f5c66.js","previous":0,"size":3478,"diff":3478},{"filename":"route-ottimizzazioneLineare.chunk.d8829.js","previous":0,"size":2185,"diff":2185}]},{"timestamp":1584373363140,"files":[{"filename":"sw-esm.js","previous":741,"size":741,"diff":0},{"filename":"sw.js","previous":738,"size":738,"diff":0},{"filename":"bundle.69171.css","previous":618,"size":618,"diff":0},{"filename":"polyfills.7484f.esm.js","previous":2012,"size":2012,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.fdc4f.esm.js","previous":1004,"size":1004,"diff":0},{"filename":"route-calcoloNumerico.chunk.c2edb.css","previous":388,"size":0,"diff":-388},{"filename":"route-calcoloNumerico.chunk.5f4f3.esm.js","previous":1563,"size":0,"diff":-1563},{"filename":"route-fisica.chunk.0b01a.css","previous":354,"size":354,"diff":0},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":11150,"size":11150,"diff":0},{"filename":"route-home.chunk.deccf.css","previous":287,"size":287,"diff":0},{"filename":"route-home.chunk.86a07.esm.js","previous":2176,"size":2176,"diff":0},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":137,"size":137,"diff":0},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-statistica.chunk.025c9.css","previous":444,"size":444,"diff":0},{"filename":"route-statistica.chunk.26925.esm.js","previous":15566,"size":15566,"diff":0},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":137,"size":137,"diff":0},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":25899,"size":25899,"diff":0},{"filename":"polyfills.b96b2.js","previous":2013,"size":2013,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.b1ca4.js","previous":1120,"size":1120,"diff":0},{"filename":"route-calcoloNumerico.chunk.a852d.js","previous":1677,"size":0,"diff":-1677},{"filename":"route-fisica.chunk.3f6c6.js","previous":12401,"size":12401,"diff":0},{"filename":"route-home.chunk.65775.js","previous":2288,"size":2288,"diff":0},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":1812,"size":1812,"diff":0},{"filename":"route-statistica.chunk.fe1f8.js","previous":18159,"size":18159,"diff":0},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":26055,"size":26055,"diff":0},{"filename":"bundle.1c866.esm.js","previous":12517,"size":0,"diff":-12517},{"filename":"route-basiDiDati.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-basiDiDati.chunk.ee3b7.esm.js","previous":2032,"size":2032,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.96c0e.esm.js","previous":2149,"size":2149,"diff":0},{"filename":"bundle.7b35a.js","previous":12574,"size":0,"diff":-12574},{"filename":"route-basiDiDati.chunk.eb3c5.js","previous":2169,"size":2169,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.e117d.js","previous":2386,"size":2386,"diff":0},{"filename":"bundle.85ae2.esm.js","previous":0,"size":12517,"diff":12517},{"filename":"route-calcoloNumerico.chunk.9cc26.css","previous":0,"size":647,"diff":647},{"filename":"route-calcoloNumerico.chunk.b8d1f.esm.js","previous":0,"size":3201,"diff":3201},{"filename":"bundle.0cb08.js","previous":0,"size":12572,"diff":12572},{"filename":"route-calcoloNumerico.chunk.726a6.js","previous":0,"size":3450,"diff":3450}]},{"timestamp":1584117678940,"files":[{"filename":"sw-esm.js","previous":741,"size":741,"diff":0},{"filename":"sw.js","previous":738,"size":738,"diff":0},{"filename":"bundle.69171.css","previous":618,"size":618,"diff":0},{"filename":"bundle.5f7c2.esm.js","previous":9835,"size":0,"diff":-9835},{"filename":"polyfills.7484f.esm.js","previous":2012,"size":2012,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.fdc4f.esm.js","previous":1004,"size":1004,"diff":0},{"filename":"route-basiDiDati.chunk.c2edb.css","previous":388,"size":0,"diff":-388},{"filename":"route-basiDiDati.chunk.ac797.esm.js","previous":938,"size":0,"diff":-938},{"filename":"route-calcoloNumerico.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-calcoloNumerico.chunk.5f4f3.esm.js","previous":1563,"size":1563,"diff":0},{"filename":"route-fisica.chunk.0b01a.css","previous":354,"size":354,"diff":0},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":11150,"size":11150,"diff":0},{"filename":"route-home.chunk.deccf.css","previous":287,"size":287,"diff":0},{"filename":"route-home.chunk.86a07.esm.js","previous":2176,"size":2176,"diff":0},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":137,"size":137,"diff":0},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.d97a3.esm.js","previous":2149,"size":0,"diff":-2149},{"filename":"route-statistica.chunk.025c9.css","previous":444,"size":444,"diff":0},{"filename":"route-statistica.chunk.26925.esm.js","previous":15566,"size":15566,"diff":0},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":137,"size":137,"diff":0},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":25899,"size":25899,"diff":0},{"filename":"bundle.c755a.js","previous":9889,"size":0,"diff":-9889},{"filename":"polyfills.b96b2.js","previous":2013,"size":2013,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.b1ca4.js","previous":1120,"size":1120,"diff":0},{"filename":"route-basiDiDati.chunk.d1ab5.js","previous":1052,"size":0,"diff":-1052},{"filename":"route-calcoloNumerico.chunk.a852d.js","previous":1677,"size":1677,"diff":0},{"filename":"route-fisica.chunk.3f6c6.js","previous":12401,"size":12401,"diff":0},{"filename":"route-home.chunk.65775.js","previous":2288,"size":2288,"diff":0},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":1812,"size":1812,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.56a70.js","previous":2387,"size":0,"diff":-2387},{"filename":"route-statistica.chunk.fe1f8.js","previous":18159,"size":18159,"diff":0},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":26055,"size":26055,"diff":0},{"filename":"bundle.1c866.esm.js","previous":0,"size":12517,"diff":12517},{"filename":"route-basiDiDati.chunk.9cc26.css","previous":0,"size":647,"diff":647},{"filename":"route-basiDiDati.chunk.ee3b7.esm.js","previous":0,"size":2032,"diff":2032},{"filename":"route-ottimizzazioneLineare.chunk.96c0e.esm.js","previous":0,"size":2149,"diff":2149},{"filename":"bundle.7b35a.js","previous":0,"size":12574,"diff":12574},{"filename":"route-basiDiDati.chunk.eb3c5.js","previous":0,"size":2169,"diff":2169},{"filename":"route-ottimizzazioneLineare.chunk.e117d.js","previous":0,"size":2386,"diff":2386}]},{"timestamp":1583950901344,"files":[{"filename":"sw-esm.js","previous":0,"size":741,"diff":741},{"filename":"sw.js","previous":0,"size":738,"diff":738},{"filename":"bundle.69171.css","previous":0,"size":618,"diff":618},{"filename":"bundle.5f7c2.esm.js","previous":0,"size":9835,"diff":9835},{"filename":"polyfills.7484f.esm.js","previous":0,"size":2012,"diff":2012},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":0,"size":388,"diff":388},{"filename":"route-apprendimentoSistemiArtificiali.chunk.fdc4f.esm.js","previous":0,"size":1004,"diff":1004},{"filename":"route-basiDiDati.chunk.c2edb.css","previous":0,"size":388,"diff":388},{"filename":"route-basiDiDati.chunk.ac797.esm.js","previous":0,"size":938,"diff":938},{"filename":"route-calcoloNumerico.chunk.c2edb.css","previous":0,"size":388,"diff":388},{"filename":"route-calcoloNumerico.chunk.5f4f3.esm.js","previous":0,"size":1563,"diff":1563},{"filename":"route-fisica.chunk.0b01a.css","previous":0,"size":354,"diff":354},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":0,"size":11150,"diff":11150},{"filename":"route-home.chunk.deccf.css","previous":0,"size":287,"diff":287},{"filename":"route-home.chunk.86a07.esm.js","previous":0,"size":2176,"diff":2176},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":0,"size":137,"diff":137},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":0,"size":1721,"diff":1721},{"filename":"route-ottimizzazioneLineare.chunk.c2edb.css","previous":0,"size":388,"diff":388},{"filename":"route-ottimizzazioneLineare.chunk.d97a3.esm.js","previous":0,"size":2149,"diff":2149},{"filename":"route-statistica.chunk.025c9.css","previous":0,"size":444,"diff":444},{"filename":"route-statistica.chunk.26925.esm.js","previous":0,"size":15566,"diff":15566},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":0,"size":137,"diff":137},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":0,"size":25899,"diff":25899},{"filename":"bundle.c755a.js","previous":0,"size":9889,"diff":9889},{"filename":"polyfills.b96b2.js","previous":0,"size":2013,"diff":2013},{"filename":"route-apprendimentoSistemiArtificiali.chunk.b1ca4.js","previous":0,"size":1120,"diff":1120},{"filename":"route-basiDiDati.chunk.d1ab5.js","previous":0,"size":1052,"diff":1052},{"filename":"route-calcoloNumerico.chunk.a852d.js","previous":0,"size":1677,"diff":1677},{"filename":"route-fisica.chunk.3f6c6.js","previous":0,"size":12401,"diff":12401},{"filename":"route-home.chunk.65775.js","previous":0,"size":2288,"diff":2288},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":0,"size":1812,"diff":1812},{"filename":"route-ottimizzazioneLineare.chunk.56a70.js","previous":0,"size":2387,"diff":2387},{"filename":"route-statistica.chunk.fe1f8.js","previous":0,"size":18159,"diff":18159},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":0,"size":26055,"diff":26055}]}] +[{"timestamp":1588346470900,"files":[{"filename":"sw-esm.js","previous":741,"size":741,"diff":0},{"filename":"sw.js","previous":738,"size":738,"diff":0},{"filename":"bundle.69171.css","previous":618,"size":618,"diff":0},{"filename":"polyfills.7484f.esm.js","previous":2012,"size":2012,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-fisica.chunk.0b01a.css","previous":354,"size":354,"diff":0},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":11150,"size":11150,"diff":0},{"filename":"route-home.chunk.deccf.css","previous":287,"size":287,"diff":0},{"filename":"route-home.chunk.86a07.esm.js","previous":2176,"size":2176,"diff":0},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":137,"size":137,"diff":0},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-statistica.chunk.025c9.css","previous":444,"size":444,"diff":0},{"filename":"route-statistica.chunk.26925.esm.js","previous":15566,"size":15566,"diff":0},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":137,"size":137,"diff":0},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":25899,"size":25899,"diff":0},{"filename":"polyfills.b96b2.js","previous":2013,"size":2013,"diff":0},{"filename":"route-fisica.chunk.3f6c6.js","previous":12401,"size":12401,"diff":0},{"filename":"route-home.chunk.65775.js","previous":2288,"size":2288,"diff":0},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":1812,"size":1812,"diff":0},{"filename":"route-statistica.chunk.fe1f8.js","previous":18159,"size":18159,"diff":0},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":26055,"size":26055,"diff":0},{"filename":"route-basiDiDati.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-calcoloNumerico.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-basiDiDati.chunk.fad1f.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-calcoloNumerico.chunk.9d1fa.esm.js","previous":3170,"size":0,"diff":-3170},{"filename":"route-basiDiDati.chunk.8a7fd.js","previous":1857,"size":1857,"diff":0},{"filename":"route-calcoloNumerico.chunk.f5c66.js","previous":3478,"size":0,"diff":-3478},{"filename":"route-ottimizzazioneLineare.chunk.ab1d9.css","previous":420,"size":420,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.050ec.esm.js","previous":2606,"size":2606,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.5ecfe.js","previous":2900,"size":2900,"diff":0},{"filename":"bundle.6b8a3.esm.js","previous":12584,"size":0,"diff":-12584},{"filename":"route-apprendimentoSistemiArtificiali.chunk.bcba4.esm.js","previous":293849,"size":293849,"diff":0},{"filename":"bundle.109db.js","previous":12644,"size":0,"diff":-12644},{"filename":"route-apprendimentoSistemiArtificiali.chunk.e631f.js","previous":294260,"size":294260,"diff":0},{"filename":"bundle.cad64.esm.js","previous":0,"size":12604,"diff":12604},{"filename":"route-calcoloNumerico.chunk.32e83.esm.js","previous":0,"size":4123,"diff":4123},{"filename":"bundle.e705d.js","previous":0,"size":12663,"diff":12663},{"filename":"route-calcoloNumerico.chunk.5e3f8.js","previous":0,"size":4531,"diff":4531}]},{"timestamp":1587574375733,"files":[{"filename":"sw-esm.js","previous":741,"size":741,"diff":0},{"filename":"sw.js","previous":738,"size":738,"diff":0},{"filename":"bundle.69171.css","previous":618,"size":618,"diff":0},{"filename":"polyfills.7484f.esm.js","previous":2012,"size":2012,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-fisica.chunk.0b01a.css","previous":354,"size":354,"diff":0},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":11150,"size":11150,"diff":0},{"filename":"route-home.chunk.deccf.css","previous":287,"size":287,"diff":0},{"filename":"route-home.chunk.86a07.esm.js","previous":2176,"size":2176,"diff":0},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":137,"size":137,"diff":0},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-statistica.chunk.025c9.css","previous":444,"size":444,"diff":0},{"filename":"route-statistica.chunk.26925.esm.js","previous":15566,"size":15566,"diff":0},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":137,"size":137,"diff":0},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":25899,"size":25899,"diff":0},{"filename":"polyfills.b96b2.js","previous":2013,"size":2013,"diff":0},{"filename":"route-fisica.chunk.3f6c6.js","previous":12401,"size":12401,"diff":0},{"filename":"route-home.chunk.65775.js","previous":2288,"size":2288,"diff":0},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":1812,"size":1812,"diff":0},{"filename":"route-statistica.chunk.fe1f8.js","previous":18159,"size":18159,"diff":0},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":26055,"size":26055,"diff":0},{"filename":"route-basiDiDati.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-calcoloNumerico.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.201bc.esm.js","previous":822,"size":0,"diff":-822},{"filename":"route-basiDiDati.chunk.fad1f.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-calcoloNumerico.chunk.9d1fa.esm.js","previous":3170,"size":3170,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.1258f.js","previous":919,"size":0,"diff":-919},{"filename":"route-basiDiDati.chunk.8a7fd.js","previous":1857,"size":1857,"diff":0},{"filename":"route-calcoloNumerico.chunk.f5c66.js","previous":3478,"size":3478,"diff":0},{"filename":"bundle.e26ae.esm.js","previous":12583,"size":0,"diff":-12583},{"filename":"route-ottimizzazioneLineare.chunk.ab1d9.css","previous":420,"size":420,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.050ec.esm.js","previous":2606,"size":2606,"diff":0},{"filename":"bundle.bf05e.js","previous":12645,"size":0,"diff":-12645},{"filename":"route-ottimizzazioneLineare.chunk.5ecfe.js","previous":2900,"size":2900,"diff":0},{"filename":"bundle.6b8a3.esm.js","previous":0,"size":12584,"diff":12584},{"filename":"route-apprendimentoSistemiArtificiali.chunk.bcba4.esm.js","previous":0,"size":293849,"diff":293849},{"filename":"bundle.109db.js","previous":0,"size":12644,"diff":12644},{"filename":"route-apprendimentoSistemiArtificiali.chunk.e631f.js","previous":0,"size":294260,"diff":294260}]},{"timestamp":1587085125307,"files":[{"filename":"sw-esm.js","previous":741,"size":741,"diff":0},{"filename":"sw.js","previous":738,"size":738,"diff":0},{"filename":"bundle.69171.css","previous":618,"size":618,"diff":0},{"filename":"polyfills.7484f.esm.js","previous":2012,"size":2012,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-fisica.chunk.0b01a.css","previous":354,"size":354,"diff":0},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":11150,"size":11150,"diff":0},{"filename":"route-home.chunk.deccf.css","previous":287,"size":287,"diff":0},{"filename":"route-home.chunk.86a07.esm.js","previous":2176,"size":2176,"diff":0},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":137,"size":137,"diff":0},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.c2edb.css","previous":388,"size":0,"diff":-388},{"filename":"route-statistica.chunk.025c9.css","previous":444,"size":444,"diff":0},{"filename":"route-statistica.chunk.26925.esm.js","previous":15566,"size":15566,"diff":0},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":137,"size":137,"diff":0},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":25899,"size":25899,"diff":0},{"filename":"polyfills.b96b2.js","previous":2013,"size":2013,"diff":0},{"filename":"route-fisica.chunk.3f6c6.js","previous":12401,"size":12401,"diff":0},{"filename":"route-home.chunk.65775.js","previous":2288,"size":2288,"diff":0},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":1812,"size":1812,"diff":0},{"filename":"route-statistica.chunk.fe1f8.js","previous":18159,"size":18159,"diff":0},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":26055,"size":26055,"diff":0},{"filename":"route-basiDiDati.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-calcoloNumerico.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"bundle.f7171.esm.js","previous":12514,"size":0,"diff":-12514},{"filename":"route-apprendimentoSistemiArtificiali.chunk.201bc.esm.js","previous":822,"size":822,"diff":0},{"filename":"route-basiDiDati.chunk.fad1f.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-calcoloNumerico.chunk.9d1fa.esm.js","previous":3170,"size":3170,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.af4fb.esm.js","previous":1952,"size":0,"diff":-1952},{"filename":"bundle.2942c.js","previous":12576,"size":0,"diff":-12576},{"filename":"route-apprendimentoSistemiArtificiali.chunk.1258f.js","previous":919,"size":919,"diff":0},{"filename":"route-basiDiDati.chunk.8a7fd.js","previous":1857,"size":1857,"diff":0},{"filename":"route-calcoloNumerico.chunk.f5c66.js","previous":3478,"size":3478,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.d8829.js","previous":2185,"size":0,"diff":-2185},{"filename":"bundle.e26ae.esm.js","previous":0,"size":12583,"diff":12583},{"filename":"route-ottimizzazioneLineare.chunk.ab1d9.css","previous":0,"size":420,"diff":420},{"filename":"route-ottimizzazioneLineare.chunk.050ec.esm.js","previous":0,"size":2606,"diff":2606},{"filename":"bundle.bf05e.js","previous":0,"size":12645,"diff":12645},{"filename":"route-ottimizzazioneLineare.chunk.5ecfe.js","previous":0,"size":2900,"diff":2900}]},{"timestamp":1584974769267,"files":[{"filename":"sw-esm.js","previous":741,"size":741,"diff":0},{"filename":"sw.js","previous":738,"size":738,"diff":0},{"filename":"bundle.69171.css","previous":618,"size":618,"diff":0},{"filename":"polyfills.7484f.esm.js","previous":2012,"size":2012,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.fdc4f.esm.js","previous":1004,"size":0,"diff":-1004},{"filename":"route-fisica.chunk.0b01a.css","previous":354,"size":354,"diff":0},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":11150,"size":11150,"diff":0},{"filename":"route-home.chunk.deccf.css","previous":287,"size":287,"diff":0},{"filename":"route-home.chunk.86a07.esm.js","previous":2176,"size":2176,"diff":0},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":137,"size":137,"diff":0},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-statistica.chunk.025c9.css","previous":444,"size":444,"diff":0},{"filename":"route-statistica.chunk.26925.esm.js","previous":15566,"size":15566,"diff":0},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":137,"size":137,"diff":0},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":25899,"size":25899,"diff":0},{"filename":"polyfills.b96b2.js","previous":2013,"size":2013,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.b1ca4.js","previous":1120,"size":0,"diff":-1120},{"filename":"route-fisica.chunk.3f6c6.js","previous":12401,"size":12401,"diff":0},{"filename":"route-home.chunk.65775.js","previous":2288,"size":2288,"diff":0},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":1812,"size":1812,"diff":0},{"filename":"route-statistica.chunk.fe1f8.js","previous":18159,"size":18159,"diff":0},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":26055,"size":26055,"diff":0},{"filename":"route-basiDiDati.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-basiDiDati.chunk.ee3b7.esm.js","previous":2032,"size":0,"diff":-2032},{"filename":"route-ottimizzazioneLineare.chunk.96c0e.esm.js","previous":2149,"size":0,"diff":-2149},{"filename":"route-basiDiDati.chunk.eb3c5.js","previous":2169,"size":0,"diff":-2169},{"filename":"route-ottimizzazioneLineare.chunk.e117d.js","previous":2386,"size":0,"diff":-2386},{"filename":"bundle.85ae2.esm.js","previous":12517,"size":0,"diff":-12517},{"filename":"route-calcoloNumerico.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-calcoloNumerico.chunk.b8d1f.esm.js","previous":3201,"size":0,"diff":-3201},{"filename":"bundle.0cb08.js","previous":12572,"size":0,"diff":-12572},{"filename":"route-calcoloNumerico.chunk.726a6.js","previous":3450,"size":0,"diff":-3450},{"filename":"bundle.f7171.esm.js","previous":0,"size":12514,"diff":12514},{"filename":"route-apprendimentoSistemiArtificiali.chunk.201bc.esm.js","previous":0,"size":822,"diff":822},{"filename":"route-basiDiDati.chunk.fad1f.esm.js","previous":0,"size":1721,"diff":1721},{"filename":"route-calcoloNumerico.chunk.9d1fa.esm.js","previous":0,"size":3170,"diff":3170},{"filename":"route-ottimizzazioneLineare.chunk.af4fb.esm.js","previous":0,"size":1952,"diff":1952},{"filename":"bundle.2942c.js","previous":0,"size":12576,"diff":12576},{"filename":"route-apprendimentoSistemiArtificiali.chunk.1258f.js","previous":0,"size":919,"diff":919},{"filename":"route-basiDiDati.chunk.8a7fd.js","previous":0,"size":1857,"diff":1857},{"filename":"route-calcoloNumerico.chunk.f5c66.js","previous":0,"size":3478,"diff":3478},{"filename":"route-ottimizzazioneLineare.chunk.d8829.js","previous":0,"size":2185,"diff":2185}]},{"timestamp":1584373363140,"files":[{"filename":"sw-esm.js","previous":741,"size":741,"diff":0},{"filename":"sw.js","previous":738,"size":738,"diff":0},{"filename":"bundle.69171.css","previous":618,"size":618,"diff":0},{"filename":"polyfills.7484f.esm.js","previous":2012,"size":2012,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.fdc4f.esm.js","previous":1004,"size":1004,"diff":0},{"filename":"route-calcoloNumerico.chunk.c2edb.css","previous":388,"size":0,"diff":-388},{"filename":"route-calcoloNumerico.chunk.5f4f3.esm.js","previous":1563,"size":0,"diff":-1563},{"filename":"route-fisica.chunk.0b01a.css","previous":354,"size":354,"diff":0},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":11150,"size":11150,"diff":0},{"filename":"route-home.chunk.deccf.css","previous":287,"size":287,"diff":0},{"filename":"route-home.chunk.86a07.esm.js","previous":2176,"size":2176,"diff":0},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":137,"size":137,"diff":0},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-statistica.chunk.025c9.css","previous":444,"size":444,"diff":0},{"filename":"route-statistica.chunk.26925.esm.js","previous":15566,"size":15566,"diff":0},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":137,"size":137,"diff":0},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":25899,"size":25899,"diff":0},{"filename":"polyfills.b96b2.js","previous":2013,"size":2013,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.b1ca4.js","previous":1120,"size":1120,"diff":0},{"filename":"route-calcoloNumerico.chunk.a852d.js","previous":1677,"size":0,"diff":-1677},{"filename":"route-fisica.chunk.3f6c6.js","previous":12401,"size":12401,"diff":0},{"filename":"route-home.chunk.65775.js","previous":2288,"size":2288,"diff":0},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":1812,"size":1812,"diff":0},{"filename":"route-statistica.chunk.fe1f8.js","previous":18159,"size":18159,"diff":0},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":26055,"size":26055,"diff":0},{"filename":"bundle.1c866.esm.js","previous":12517,"size":0,"diff":-12517},{"filename":"route-basiDiDati.chunk.9cc26.css","previous":647,"size":647,"diff":0},{"filename":"route-basiDiDati.chunk.ee3b7.esm.js","previous":2032,"size":2032,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.96c0e.esm.js","previous":2149,"size":2149,"diff":0},{"filename":"bundle.7b35a.js","previous":12574,"size":0,"diff":-12574},{"filename":"route-basiDiDati.chunk.eb3c5.js","previous":2169,"size":2169,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.e117d.js","previous":2386,"size":2386,"diff":0},{"filename":"bundle.85ae2.esm.js","previous":0,"size":12517,"diff":12517},{"filename":"route-calcoloNumerico.chunk.9cc26.css","previous":0,"size":647,"diff":647},{"filename":"route-calcoloNumerico.chunk.b8d1f.esm.js","previous":0,"size":3201,"diff":3201},{"filename":"bundle.0cb08.js","previous":0,"size":12572,"diff":12572},{"filename":"route-calcoloNumerico.chunk.726a6.js","previous":0,"size":3450,"diff":3450}]},{"timestamp":1584117678940,"files":[{"filename":"sw-esm.js","previous":741,"size":741,"diff":0},{"filename":"sw.js","previous":738,"size":738,"diff":0},{"filename":"bundle.69171.css","previous":618,"size":618,"diff":0},{"filename":"bundle.5f7c2.esm.js","previous":9835,"size":0,"diff":-9835},{"filename":"polyfills.7484f.esm.js","previous":2012,"size":2012,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.fdc4f.esm.js","previous":1004,"size":1004,"diff":0},{"filename":"route-basiDiDati.chunk.c2edb.css","previous":388,"size":0,"diff":-388},{"filename":"route-basiDiDati.chunk.ac797.esm.js","previous":938,"size":0,"diff":-938},{"filename":"route-calcoloNumerico.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-calcoloNumerico.chunk.5f4f3.esm.js","previous":1563,"size":1563,"diff":0},{"filename":"route-fisica.chunk.0b01a.css","previous":354,"size":354,"diff":0},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":11150,"size":11150,"diff":0},{"filename":"route-home.chunk.deccf.css","previous":287,"size":287,"diff":0},{"filename":"route-home.chunk.86a07.esm.js","previous":2176,"size":2176,"diff":0},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":137,"size":137,"diff":0},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":1721,"size":1721,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.c2edb.css","previous":388,"size":388,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.d97a3.esm.js","previous":2149,"size":0,"diff":-2149},{"filename":"route-statistica.chunk.025c9.css","previous":444,"size":444,"diff":0},{"filename":"route-statistica.chunk.26925.esm.js","previous":15566,"size":15566,"diff":0},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":137,"size":137,"diff":0},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":25899,"size":25899,"diff":0},{"filename":"bundle.c755a.js","previous":9889,"size":0,"diff":-9889},{"filename":"polyfills.b96b2.js","previous":2013,"size":2013,"diff":0},{"filename":"route-apprendimentoSistemiArtificiali.chunk.b1ca4.js","previous":1120,"size":1120,"diff":0},{"filename":"route-basiDiDati.chunk.d1ab5.js","previous":1052,"size":0,"diff":-1052},{"filename":"route-calcoloNumerico.chunk.a852d.js","previous":1677,"size":1677,"diff":0},{"filename":"route-fisica.chunk.3f6c6.js","previous":12401,"size":12401,"diff":0},{"filename":"route-home.chunk.65775.js","previous":2288,"size":2288,"diff":0},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":1812,"size":1812,"diff":0},{"filename":"route-ottimizzazioneLineare.chunk.56a70.js","previous":2387,"size":0,"diff":-2387},{"filename":"route-statistica.chunk.fe1f8.js","previous":18159,"size":18159,"diff":0},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":26055,"size":26055,"diff":0},{"filename":"bundle.1c866.esm.js","previous":0,"size":12517,"diff":12517},{"filename":"route-basiDiDati.chunk.9cc26.css","previous":0,"size":647,"diff":647},{"filename":"route-basiDiDati.chunk.ee3b7.esm.js","previous":0,"size":2032,"diff":2032},{"filename":"route-ottimizzazioneLineare.chunk.96c0e.esm.js","previous":0,"size":2149,"diff":2149},{"filename":"bundle.7b35a.js","previous":0,"size":12574,"diff":12574},{"filename":"route-basiDiDati.chunk.eb3c5.js","previous":0,"size":2169,"diff":2169},{"filename":"route-ottimizzazioneLineare.chunk.e117d.js","previous":0,"size":2386,"diff":2386}]},{"timestamp":1583950901344,"files":[{"filename":"sw-esm.js","previous":0,"size":741,"diff":741},{"filename":"sw.js","previous":0,"size":738,"diff":738},{"filename":"bundle.69171.css","previous":0,"size":618,"diff":618},{"filename":"bundle.5f7c2.esm.js","previous":0,"size":9835,"diff":9835},{"filename":"polyfills.7484f.esm.js","previous":0,"size":2012,"diff":2012},{"filename":"route-apprendimentoSistemiArtificiali.chunk.c2edb.css","previous":0,"size":388,"diff":388},{"filename":"route-apprendimentoSistemiArtificiali.chunk.fdc4f.esm.js","previous":0,"size":1004,"diff":1004},{"filename":"route-basiDiDati.chunk.c2edb.css","previous":0,"size":388,"diff":388},{"filename":"route-basiDiDati.chunk.ac797.esm.js","previous":0,"size":938,"diff":938},{"filename":"route-calcoloNumerico.chunk.c2edb.css","previous":0,"size":388,"diff":388},{"filename":"route-calcoloNumerico.chunk.5f4f3.esm.js","previous":0,"size":1563,"diff":1563},{"filename":"route-fisica.chunk.0b01a.css","previous":0,"size":354,"diff":354},{"filename":"route-fisica.chunk.4ed8c.esm.js","previous":0,"size":11150,"diff":11150},{"filename":"route-home.chunk.deccf.css","previous":0,"size":287,"diff":287},{"filename":"route-home.chunk.86a07.esm.js","previous":0,"size":2176,"diff":2176},{"filename":"route-mingwinstall.chunk.4f81b.css","previous":0,"size":137,"diff":137},{"filename":"route-mingwinstall.chunk.ea3ae.esm.js","previous":0,"size":1721,"diff":1721},{"filename":"route-ottimizzazioneLineare.chunk.c2edb.css","previous":0,"size":388,"diff":388},{"filename":"route-ottimizzazioneLineare.chunk.d97a3.esm.js","previous":0,"size":2149,"diff":2149},{"filename":"route-statistica.chunk.025c9.css","previous":0,"size":444,"diff":444},{"filename":"route-statistica.chunk.26925.esm.js","previous":0,"size":15566,"diff":15566},{"filename":"route-vldigeometria.chunk.e54c2.css","previous":0,"size":137,"diff":137},{"filename":"route-vldigeometria.chunk.24244.esm.js","previous":0,"size":25899,"diff":25899},{"filename":"bundle.c755a.js","previous":0,"size":9889,"diff":9889},{"filename":"polyfills.b96b2.js","previous":0,"size":2013,"diff":2013},{"filename":"route-apprendimentoSistemiArtificiali.chunk.b1ca4.js","previous":0,"size":1120,"diff":1120},{"filename":"route-basiDiDati.chunk.d1ab5.js","previous":0,"size":1052,"diff":1052},{"filename":"route-calcoloNumerico.chunk.a852d.js","previous":0,"size":1677,"diff":1677},{"filename":"route-fisica.chunk.3f6c6.js","previous":0,"size":12401,"diff":12401},{"filename":"route-home.chunk.65775.js","previous":0,"size":2288,"diff":2288},{"filename":"route-mingwinstall.chunk.9d6e9.js","previous":0,"size":1812,"diff":1812},{"filename":"route-ottimizzazioneLineare.chunk.56a70.js","previous":0,"size":2387,"diff":2387},{"filename":"route-statistica.chunk.fe1f8.js","previous":0,"size":18159,"diff":18159},{"filename":"route-vldigeometria.chunk.3b8b9.js","previous":0,"size":26055,"diff":26055}]}] diff --git a/src/components/copyright.js b/src/components/copyright.js index 84ae79b..83fa33e 100644 --- a/src/components/copyright.js +++ b/src/components/copyright.js @@ -3,6 +3,6 @@ import { Component } from 'preact'; export default class Copyright extends Component { render() { - return
© 2019 - Stefano Pigozzi - CC BY-SA 4.0 - Codice sorgente
; + return
© 2019 - Stefano Pigozzi - CC BY-SA 4.0 - Codice sorgente - Supportami
; } -} \ No newline at end of file +} diff --git a/src/components/split.css b/src/components/split.css index 3fb50ca..077b2a9 100644 --- a/src/components/split.css +++ b/src/components/split.css @@ -2,3 +2,13 @@ } +.splitparent { + display: flex; + flex-wrap: wrap; +} + +.splitchild { + flex-grow: 1; + flex-shrink: 0; + flex-basis: 0; +} diff --git a/src/routes/calcoloNumerico.js b/src/routes/calcoloNumerico.js index 1c0b0c8..9f109b0 100644 --- a/src/routes/calcoloNumerico.js +++ b/src/routes/calcoloNumerico.js @@ -202,6 +202,118 @@ export default class CalcoloNumerico extends Component {

+ + +

+ Matrice con determinante 0. +

+

+ Le matrici singolari non sono invertibili. +

+
+
+ + +

+ Funzione che associa un valore positivo a ogni vettore diverso da 0, e 0 al vettore zero. +

+ + Esempi su Wikipedia + +
+ +

+ Massimo dei valori assoluti di tutti gli elementi del vettore. +

+

+ {r`\Vert x \Vert_\infty = max_{i = 1..n} | x_i |`} +

+
+ +

+ Somma dei valori assoluti di tutti gli elementi del vettore. +

+

+ {r`\Vert x \Vert_1 = \sum_{i = 1}^n | x_i |`} +

+
+ +

+ Radice quadrata della somma dei quadrati di tutti gli elementi del vettore. +

+

+ {r`\Vert x \Vert_2 = \sqrt{\sum_{i = 1}^n x_i^2}`} +

+
+
+ + +

+ Funzione che associa un valore positivo a ogni matrice diversa da 0, e 0 alla matrice zero. +

+

+ Si ricavano dalle norme vettoriali: +

+

+ {r`\Vert A \Vert = sup_{x \in \mathbb{R}, x \neq 0} \frac{\Vert A \cdot x \Vert}{\Vert x \Vert}`} +

+ + sup è l'estremo superiore di un insieme. E' molto simile al massimo: ricordi le prime lezioni di Analisi? + +
+ +

+ Massimo delle somme dei valori assoluti di tutti gli elementi di ogni riga di una matrice. +

+

+ {r`\Vert A \Vert_\infty = max_{i = 1..n} \sum_{j = 1}^n | a_{ij} |`} +

+
+ +

+ Massimo delle somme dei valori assoluti di tutti gli elementi di ogni colonna di una matrice. +

+

+ {r`\Vert A \Vert_1 = max_{j = 1..n} \sum_{i = 1}^n | a_{ij} |`} +

+
+ +

+ Radice quadrata del rango del prodotto tra una matrice e la sua trasposta. +

+

+ {r`\Vert A \Vert_2 = \sqrt{\rho ( A^T \times A ) }`} +

+
+
+ + +

+ Le norme sono usate per calcolare l'errore relativo tra due vettori o matrici: +

+

+ {r`\frac{\Vert x - y \Vert}{\Vert x \Vert}`} +

+
+
+ + +

+ La fattorizzazione è il processo che permette di risolvere sistemi di equazioni lineari rappresentati in forma di matrice. +

+

+ Esistono molteplici algoritmi in grado di realizzarla: mentre tutti portano alla stessa soluzione, possono avere velocità e indici algoritmici diversi. +

+

+ Il sistema lineare da risolvere viene diviso in due parti: la matrice dei coefficienti e il vettore termine noto. +

+
+ +

+ +

+
+
) }
should have a
should have a