diff --git a/examples/device-dashboard/packed_fs.c b/examples/device-dashboard/packed_fs.c index 63e868aa..a27403c4 100644 --- a/examples/device-dashboard/packed_fs.c +++ b/examples/device-dashboard/packed_fs.c @@ -4959,246 +4959,254 @@ static const unsigned char v4[] = { 100, 32, 97, 32, 115, 101, 114, 118, 101, 114, 46, 10, // d a server.. 32, 32, 60, 47, 100, 105, 118, 62, 10, 60, 47, 100, // .`;.};..co - 110, 115, 116, 32, 67, 104, 97, 114, 116, 32, 61, 32, // nst Chart = + 110, 115, 116, 32, 100, 97, 116, 101, 102, 109, 116, 32, // nst datefmt + 61, 32, 117, 110, 105, 120, 32, 61, 62, 32, 40, 110, // = unix => (n + 101, 119, 32, 68, 97, 116, 101, 40, 117, 110, 105, 120, // ew Date(unix + 32, 42, 32, 49, 48, 48, 48, 41, 41, 46, 116, 111, // * 1000)).to + 73, 83, 79, 83, 116, 114, 105, 110, 103, 40, 41, 46, // ISOString(). + 115, 117, 98, 115, 116, 114, 40, 49, 52, 44, 32, 53, // substr(14, 5 + 41, 59, 10, 10, 99, 111, 110, 115, 116, 32, 67, 104, // );..const Ch + 97, 114, 116, 32, 61, 32, 102, 117, 110, 99, 116, 105, // art = functi + 111, 110, 40, 112, 114, 111, 112, 115, 41, 32, 123, 10, // on(props) {. + 32, 32, 99, 111, 110, 115, 116, 32, 99, 104, 97, 114, // const char + 116, 100, 105, 118, 32, 61, 32, 117, 115, 101, 82, 101, // tdiv = useRe + 102, 40, 110, 117, 108, 108, 41, 59, 10, 32, 32, 99, // f(null);. c + 111, 110, 115, 116, 32, 114, 101, 102, 114, 101, 115, 104, // onst refresh + 32, 61, 32, 40, 41, 32, 61, 62, 32, 123, 10, 32, // = () => {. + 32, 32, 32, 99, 111, 110, 115, 116, 32, 108, 97, 98, // const lab + 101, 108, 115, 32, 61, 32, 112, 114, 111, 112, 115, 46, // els = props. + 109, 101, 116, 114, 105, 99, 115, 46, 109, 97, 112, 40, // metrics.map( + 101, 108, 32, 61, 62, 32, 100, 97, 116, 101, 102, 109, // el => datefm + 116, 40, 101, 108, 91, 48, 93, 41, 41, 59, 10, 32, // t(el[0]));. + 32, 32, 32, 99, 111, 110, 115, 116, 32, 115, 101, 114, // const ser + 105, 101, 115, 32, 61, 32, 112, 114, 111, 112, 115, 46, // ies = props. + 109, 101, 116, 114, 105, 99, 115, 46, 109, 97, 112, 40, // metrics.map( + 101, 108, 32, 61, 62, 32, 101, 108, 91, 49, 93, 41, // el => el[1]) + 59, 10, 32, 32, 32, 32, 99, 111, 110, 115, 116, 32, // ;. const + 111, 112, 116, 105, 111, 110, 115, 32, 61, 32, 123, 108, // options = {l + 111, 119, 58, 32, 48, 44, 32, 104, 105, 103, 104, 58, // ow: 0, high: + 32, 50, 48, 44, 32, 115, 104, 111, 119, 65, 114, 101, // 20, showAre + 97, 58, 32, 116, 114, 117, 101, 125, 59, 10, 32, 32, // a: true};. + 32, 32, 47, 47, 32, 99, 111, 110, 115, 111, 108, 101, // // console + 46, 108, 111, 103, 40, 91, 108, 97, 98, 101, 108, 115, // .log([labels + 44, 32, 91, 115, 101, 114, 105, 101, 115, 93, 93, 41, // , [series]]) + 59, 10, 32, 32, 32, 32, 110, 101, 119, 32, 67, 104, // ;. new Ch + 97, 114, 116, 105, 115, 116, 46, 76, 105, 110, 101, 40, // artist.Line( + 99, 104, 97, 114, 116, 100, 105, 118, 46, 99, 117, 114, // chartdiv.cur + 114, 101, 110, 116, 44, 32, 123, 108, 97, 98, 101, 108, // rent, {label + 115, 44, 32, 115, 101, 114, 105, 101, 115, 58, 32, 91, // s, series: [ + 115, 101, 114, 105, 101, 115, 93, 125, 44, 32, 111, 112, // series]}, op + 116, 105, 111, 110, 115, 41, 59, 10, 32, 32, 125, 59, // tions);. }; + 10, 32, 32, 117, 115, 101, 69, 102, 102, 101, 99, 116, // . useEffect + 40, 40, 41, 32, 61, 62, 32, 123, 99, 104, 97, 114, // (() => {char + 116, 100, 105, 118, 32, 38, 38, 32, 114, 101, 102, 114, // tdiv && refr + 101, 115, 104, 40, 41, 125, 44, 32, 91, 112, 114, 111, // esh()}, [pro + 112, 115, 46, 109, 101, 116, 114, 105, 99, 115, 93, 41, // ps.metrics]) + 59, 10, 10, 32, 32, 114, 101, 116, 117, 114, 110, 32, // ;.. return + 104, 116, 109, 108, 96, 10, 60, 100, 105, 118, 32, 115, // html`.
+ 10, 32, 32, 60, 104, 51, 32, 115, 116, 121, 108, 101, // .

Data Chart + 60, 47, 104, 51, 62, 10, 32, 32, 60, 100, 105, 118, //

.
. + 32, 32, 32, 32, 60, 100, 105, 118, 32, 114, 101, 102, //
.
.< + 47, 100, 105, 118, 62, 96, 59, 10, 125, 59, 10, 10, // /div>`;.};.. + 99, 111, 110, 115, 116, 32, 65, 112, 112, 32, 61, 32, // const App = 102, 117, 110, 99, 116, 105, 111, 110, 40, 112, 114, 111, // function(pro 112, 115, 41, 32, 123, 10, 32, 32, 99, 111, 110, 115, // ps) {. cons - 116, 32, 99, 104, 97, 114, 116, 100, 105, 118, 32, 61, // t chartdiv = - 32, 117, 115, 101, 82, 101, 102, 40, 110, 117, 108, 108, // useRef(null - 41, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, 114, // );. const r - 101, 102, 114, 101, 115, 104, 32, 61, 32, 40, 41, 32, // efresh = () - 61, 62, 32, 123, 10, 32, 32, 32, 32, 99, 111, 110, // => {. con - 115, 116, 32, 108, 97, 98, 101, 108, 115, 32, 61, 32, // st labels = - 112, 114, 111, 112, 115, 46, 109, 101, 116, 114, 105, 99, // props.metric - 115, 46, 109, 97, 112, 40, 101, 108, 32, 61, 62, 32, // s.map(el => - 101, 108, 91, 48, 93, 41, 59, 10, 32, 32, 32, 32, // el[0]);. - 99, 111, 110, 115, 116, 32, 115, 101, 114, 105, 101, 115, // const series - 32, 61, 32, 112, 114, 111, 112, 115, 46, 109, 101, 116, // = props.met - 114, 105, 99, 115, 46, 109, 97, 112, 40, 101, 108, 32, // rics.map(el - 61, 62, 32, 101, 108, 91, 49, 93, 41, 59, 10, 32, // => el[1]);. - 32, 32, 32, 99, 111, 110, 115, 116, 32, 111, 112, 116, // const opt - 105, 111, 110, 115, 32, 61, 32, 123, 108, 111, 119, 58, // ions = {low: - 32, 48, 44, 32, 104, 105, 103, 104, 58, 32, 50, 50, // 0, high: 22 - 44, 32, 115, 104, 111, 119, 65, 114, 101, 97, 58, 32, // , showArea: - 116, 114, 117, 101, 125, 59, 10, 32, 32, 32, 32, 99, // true};. c - 111, 110, 115, 111, 108, 101, 46, 108, 111, 103, 40, 91, // onsole.log([ - 108, 97, 98, 101, 108, 115, 44, 32, 91, 115, 101, 114, // labels, [ser - 105, 101, 115, 93, 93, 41, 59, 10, 32, 32, 32, 32, // ies]]);. - 47, 47, 32, 110, 101, 119, 32, 67, 104, 97, 114, 116, // // new Chart - 105, 115, 116, 46, 76, 105, 110, 101, 40, 99, 104, 97, // ist.Line(cha - 114, 116, 100, 105, 118, 46, 99, 117, 114, 114, 101, 110, // rtdiv.curren - 116, 44, 32, 123, 108, 97, 98, 101, 108, 115, 44, 32, // t, {labels, - 115, 101, 114, 105, 101, 115, 58, 91, 115, 101, 114, 105, // series:[seri - 101, 115, 93, 125, 44, 32, 111, 112, 116, 105, 111, 110, // es]}, option - 115, 41, 59, 10, 32, 32, 125, 59, 10, 32, 32, 117, // s);. };. u - 115, 101, 69, 102, 102, 101, 99, 116, 40, 40, 41, 32, // seEffect(() - 61, 62, 32, 123, 99, 104, 97, 114, 116, 100, 105, 118, // => {chartdiv - 32, 38, 38, 32, 114, 101, 102, 114, 101, 115, 104, 40, // && refresh( - 41, 125, 44, 32, 91, 112, 114, 111, 112, 115, 46, 109, // )}, [props.m - 101, 116, 114, 105, 99, 115, 93, 41, 59, 10, 10, 32, // etrics]);.. - 32, 114, 101, 116, 117, 114, 110, 32, 104, 116, 109, 108, // return html - 96, 10, 60, 100, 105, 118, 32, 115, 116, 121, 108, 101, // `.
. < - 104, 51, 32, 115, 116, 121, 108, 101, 61, 34, 98, 97, // h3 style="ba - 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 35, 101, // ckground: #e - 99, 51, 59, 32, 99, 111, 108, 111, 114, 58, 32, 35, // c3; color: # - 102, 102, 102, 59, 32, 112, 97, 100, 100, 105, 110, 103, // fff; padding - 58, 32, 48, 46, 52, 101, 109, 59, 34, 62, 68, 97, // : 0.4em;">Da - 116, 97, 32, 67, 104, 97, 114, 116, 60, 47, 104, 51, // ta Chart.
. - 60, 100, 105, 118, 32, 114, 101, 102, 61, 36, 123, 99, //
. - 60, 47, 100, 105, 118, 62, 10, 60, 47, 100, 105, 118, //
.
`;.};..cons - 116, 32, 65, 112, 112, 32, 61, 32, 102, 117, 110, 99, // t App = func - 116, 105, 111, 110, 40, 112, 114, 111, 112, 115, 41, 32, // tion(props) - 123, 10, 32, 32, 99, 111, 110, 115, 116, 32, 91, 109, // {. const [m - 101, 115, 115, 97, 103, 101, 115, 44, 32, 115, 101, 116, // essages, set - 77, 101, 115, 115, 97, 103, 101, 115, 93, 32, 61, 32, // Messages] = - 117, 115, 101, 83, 116, 97, 116, 101, 40, 91, 93, 41, // useState([]) - 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, 91, 109, // ;. const [m - 101, 116, 114, 105, 99, 115, 44, 32, 115, 101, 116, 77, // etrics, setM - 101, 116, 114, 105, 99, 115, 93, 32, 61, 32, 117, 115, // etrics] = us - 101, 83, 116, 97, 116, 101, 40, 91, 93, 41, 59, 10, // eState([]);. - 32, 32, 99, 111, 110, 115, 116, 32, 91, 117, 115, 101, // const [use - 114, 44, 32, 115, 101, 116, 85, 115, 101, 114, 93, 32, // r, setUser] - 61, 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, 39, // = useState(' - 39, 41, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, // ');. const - 91, 99, 111, 110, 102, 105, 103, 44, 32, 115, 101, 116, // [config, set - 67, 111, 110, 102, 105, 103, 93, 32, 61, 32, 117, 115, // Config] = us - 101, 83, 116, 97, 116, 101, 40, 123, 125, 41, 59, 10, // eState({});. - 10, 32, 32, 99, 111, 110, 115, 116, 32, 114, 101, 102, // . const ref - 114, 101, 115, 104, 32, 61, 32, 40, 41, 32, 61, 62, // resh = () => - 32, 102, 101, 116, 99, 104, 40, 39, 47, 97, 112, 105, // fetch('/api - 47, 99, 111, 110, 102, 105, 103, 47, 103, 101, 116, 39, // /config/get' - 44, 32, 123, 104, 101, 97, 100, 101, 114, 115, 58, 32, // , {headers: - 123, 65, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, // {Authorizati - 111, 110, 58, 32, 39, 39, 125, 125, 41, 10, 32, 32, // on: ''}}). + 116, 32, 91, 109, 101, 115, 115, 97, 103, 101, 115, 44, // t [messages, + 32, 115, 101, 116, 77, 101, 115, 115, 97, 103, 101, 115, // setMessages + 93, 32, 61, 32, 117, 115, 101, 83, 116, 97, 116, 101, // ] = useState + 40, 91, 93, 41, 59, 10, 32, 32, 99, 111, 110, 115, // ([]);. cons + 116, 32, 91, 109, 101, 116, 114, 105, 99, 115, 44, 32, // t [metrics, + 115, 101, 116, 77, 101, 116, 114, 105, 99, 115, 93, 32, // setMetrics] + 61, 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, 91, // = useState([ + 93, 41, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, // ]);. const + 91, 117, 115, 101, 114, 44, 32, 115, 101, 116, 85, 115, // [user, setUs + 101, 114, 93, 32, 61, 32, 117, 115, 101, 83, 116, 97, // er] = useSta + 116, 101, 40, 39, 39, 41, 59, 10, 32, 32, 99, 111, // te('');. co + 110, 115, 116, 32, 91, 99, 111, 110, 102, 105, 103, 44, // nst [config, + 32, 115, 101, 116, 67, 111, 110, 102, 105, 103, 93, 32, // setConfig] + 61, 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, 123, // = useState({ + 125, 41, 59, 10, 10, 32, 32, 99, 111, 110, 115, 116, // });.. const + 32, 114, 101, 102, 114, 101, 115, 104, 32, 61, 32, 40, // refresh = ( + 41, 32, 61, 62, 32, 102, 101, 116, 99, 104, 40, 39, // ) => fetch(' + 47, 97, 112, 105, 47, 99, 111, 110, 102, 105, 103, 47, // /api/config/ + 103, 101, 116, 39, 44, 32, 123, 104, 101, 97, 100, 101, // get', {heade + 114, 115, 58, 32, 123, 65, 117, 116, 104, 111, 114, 105, // rs: {Authori + 122, 97, 116, 105, 111, 110, 58, 32, 39, 39, 125, 125, // zation: ''}} + 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ). 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 32, 32, 32, 32, 32, 46, 116, 104, 101, 110, 40, // .then( + 114, 32, 61, 62, 32, 114, 46, 106, 115, 111, 110, 40, // r => r.json( + 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // )). 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 46, 116, 104, 101, 110, 40, 114, 32, 61, 62, // .then(r => - 32, 114, 46, 106, 115, 111, 110, 40, 41, 41, 10, 32, // r.json()). - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 46, 116, 104, 101, 110, 40, 114, 32, 61, // .then(r = - 62, 32, 115, 101, 116, 67, 111, 110, 102, 105, 103, 40, // > setConfig( - 114, 41, 41, 59, 10, 10, 32, 32, 99, 111, 110, 115, // r));.. cons - 116, 32, 108, 111, 103, 105, 110, 32, 61, 32, 102, 117, // t login = fu - 110, 99, 116, 105, 111, 110, 40, 117, 41, 32, 123, 10, // nction(u) {. - 32, 32, 32, 32, 100, 111, 99, 117, 109, 101, 110, 116, // document - 46, 99, 111, 111, 107, 105, 101, 32, 61, 32, 96, 97, // .cookie = `a - 99, 99, 101, 115, 115, 95, 116, 111, 107, 101, 110, 61, // ccess_token= - 36, 123, 117, 46, 116, 111, 107, 101, 110, 125, 59, 112, // ${u.token};p - 97, 116, 104, 61, 47, 59, 109, 97, 120, 45, 97, 103, // ath=/;max-ag - 101, 61, 51, 54, 48, 48, 96, 59, 10, 32, 32, 32, // e=3600`;. - 32, 115, 101, 116, 85, 115, 101, 114, 40, 117, 46, 117, // setUser(u.u - 115, 101, 114, 41, 59, 10, 32, 32, 32, 32, 114, 101, // ser);. re - 102, 114, 101, 115, 104, 40, 41, 59, 10, 32, 32, 125, // fresh();. } - 59, 10, 10, 32, 32, 99, 111, 110, 115, 116, 32, 108, // ;.. const l - 111, 103, 111, 117, 116, 32, 61, 32, 101, 118, 32, 61, // ogout = ev = - 62, 32, 123, 10, 32, 32, 32, 32, 100, 111, 99, 117, // > {. docu + 32, 32, 32, 32, 32, 32, 32, 46, 116, 104, 101, 110, // .then + 40, 114, 32, 61, 62, 32, 115, 101, 116, 67, 111, 110, // (r => setCon + 102, 105, 103, 40, 114, 41, 41, 59, 10, 10, 32, 32, // fig(r));.. + 99, 111, 110, 115, 116, 32, 108, 111, 103, 105, 110, 32, // const login + 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 117, // = function(u + 41, 32, 123, 10, 32, 32, 32, 32, 100, 111, 99, 117, // ) {. docu 109, 101, 110, 116, 46, 99, 111, 111, 107, 105, 101, 32, // ment.cookie 61, 32, 96, 97, 99, 99, 101, 115, 115, 95, 116, 111, // = `access_to - 107, 101, 110, 61, 59, 112, 97, 116, 104, 61, 47, 59, // ken=;path=/; - 109, 97, 120, 45, 97, 103, 101, 61, 48, 96, 59, 10, // max-age=0`;. - 32, 32, 32, 32, 115, 101, 116, 85, 115, 101, 114, 40, // setUser( - 39, 39, 41, 59, 10, 32, 32, 125, 59, 10, 10, 32, // '');. };.. - 32, 99, 111, 110, 115, 116, 32, 119, 97, 116, 99, 104, // const watch - 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, // = function( - 41, 32, 123, 10, 32, 32, 32, 32, 118, 97, 114, 32, // ) {. var - 102, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, // f = function - 40, 114, 101, 97, 100, 101, 114, 41, 32, 123, 10, 32, // (reader) {. - 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, // return - 114, 101, 97, 100, 101, 114, 46, 114, 101, 97, 100, 40, // reader.read( - 41, 46, 116, 104, 101, 110, 40, 102, 117, 110, 99, 116, // ).then(funct - 105, 111, 110, 40, 114, 101, 115, 117, 108, 116, 41, 32, // ion(result) - 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, // {. va - 114, 32, 100, 97, 116, 97, 32, 61, 32, 83, 116, 114, // r data = Str - 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, // ing.fromChar - 67, 111, 100, 101, 46, 97, 112, 112, 108, 121, 40, 110, // Code.apply(n - 117, 108, 108, 44, 32, 114, 101, 115, 117, 108, 116, 46, // ull, result. - 118, 97, 108, 117, 101, 41, 59, 10, 32, 32, 32, 32, // value);. - 32, 32, 32, 32, 118, 97, 114, 32, 109, 115, 103, 32, // var msg - 61, 32, 74, 83, 79, 78, 46, 112, 97, 114, 115, 101, // = JSON.parse - 40, 100, 97, 116, 97, 41, 59, 10, 32, 32, 32, 32, // (data);. - 32, 32, 32, 32, 105, 102, 32, 40, 109, 115, 103, 46, // if (msg. - 110, 97, 109, 101, 32, 61, 61, 32, 39, 99, 111, 110, // name == 'con - 102, 105, 103, 39, 41, 32, 123, 10, 32, 32, 32, 32, // fig') {. - 32, 32, 32, 32, 32, 32, 114, 101, 102, 114, 101, 115, // refres - 104, 40, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, // h();. - 32, 125, 32, 101, 108, 115, 101, 32, 105, 102, 32, 40, // } else if ( - 109, 115, 103, 46, 110, 97, 109, 101, 32, 61, 61, 32, // msg.name == - 39, 109, 101, 115, 115, 97, 103, 101, 39, 41, 32, 123, // 'message') { - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, // . s - 101, 116, 77, 101, 115, 115, 97, 103, 101, 115, 40, 109, // etMessages(m - 32, 61, 62, 32, 109, 46, 99, 111, 110, 99, 97, 116, // => m.concat - 40, 91, 109, 115, 103, 46, 100, 97, 116, 97, 93, 41, // ([msg.data]) - 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, // );. } - 32, 101, 108, 115, 101, 32, 105, 102, 32, 40, 109, 115, // else if (ms - 103, 46, 110, 97, 109, 101, 32, 61, 61, 32, 39, 109, // g.name == 'm - 101, 116, 114, 105, 99, 115, 39, 41, 32, 123, 10, 32, // etrics') {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 116, // set - 77, 101, 116, 114, 105, 99, 115, 40, 109, 32, 61, 62, // Metrics(m => - 32, 109, 46, 99, 111, 110, 99, 97, 116, 40, 91, 109, // m.concat([m - 115, 103, 46, 100, 97, 116, 97, 93, 41, 46, 115, 112, // sg.data]).sp - 108, 105, 99, 101, 40, 45, 49, 48, 41, 41, 59, 10, // lice(-10));. - 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, // }. - 32, 32, 32, 32, 32, 32, 99, 111, 110, 115, 111, 108, // consol - 101, 46, 108, 111, 103, 40, 109, 115, 103, 41, 59, 10, // e.log(msg);. + 107, 101, 110, 61, 36, 123, 117, 46, 116, 111, 107, 101, // ken=${u.toke + 110, 125, 59, 112, 97, 116, 104, 61, 47, 59, 109, 97, // n};path=/;ma + 120, 45, 97, 103, 101, 61, 51, 54, 48, 48, 96, 59, // x-age=3600`; + 10, 32, 32, 32, 32, 115, 101, 116, 85, 115, 101, 114, // . setUser + 40, 117, 46, 117, 115, 101, 114, 41, 59, 10, 32, 32, // (u.user);. + 32, 32, 114, 101, 102, 114, 101, 115, 104, 40, 41, 59, // refresh(); + 10, 32, 32, 125, 59, 10, 10, 32, 32, 99, 111, 110, // . };.. con + 115, 116, 32, 108, 111, 103, 111, 117, 116, 32, 61, 32, // st logout = + 101, 118, 32, 61, 62, 32, 123, 10, 32, 32, 32, 32, // ev => {. + 100, 111, 99, 117, 109, 101, 110, 116, 46, 99, 111, 111, // document.coo + 107, 105, 101, 32, 61, 32, 96, 97, 99, 99, 101, 115, // kie = `acces + 115, 95, 116, 111, 107, 101, 110, 61, 59, 112, 97, 116, // s_token=;pat + 104, 61, 47, 59, 109, 97, 120, 45, 97, 103, 101, 61, // h=/;max-age= + 48, 96, 59, 10, 32, 32, 32, 32, 115, 101, 116, 85, // 0`;. setU + 115, 101, 114, 40, 39, 39, 41, 59, 10, 32, 32, 125, // ser('');. } + 59, 10, 10, 32, 32, 99, 111, 110, 115, 116, 32, 119, // ;.. const w + 97, 116, 99, 104, 32, 61, 32, 102, 117, 110, 99, 116, // atch = funct + 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, 32, 32, // ion() {. + 118, 97, 114, 32, 102, 32, 61, 32, 102, 117, 110, 99, // var f = func + 116, 105, 111, 110, 40, 114, 101, 97, 100, 101, 114, 41, // tion(reader) + 32, 123, 10, 32, 32, 32, 32, 32, 32, 114, 101, 116, // {. ret + 117, 114, 110, 32, 114, 101, 97, 100, 101, 114, 46, 114, // urn reader.r + 101, 97, 100, 40, 41, 46, 116, 104, 101, 110, 40, 102, // ead().then(f + 117, 110, 99, 116, 105, 111, 110, 40, 114, 101, 115, 117, // unction(resu + 108, 116, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, // lt) {. + 32, 32, 118, 97, 114, 32, 100, 97, 116, 97, 32, 61, // var data = + 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, // String.from + 67, 104, 97, 114, 67, 111, 100, 101, 46, 97, 112, 112, // CharCode.app + 108, 121, 40, 110, 117, 108, 108, 44, 32, 114, 101, 115, // ly(null, res + 117, 108, 116, 46, 118, 97, 108, 117, 101, 41, 59, 10, // ult.value);. + 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, // var + 109, 115, 103, 32, 61, 32, 74, 83, 79, 78, 46, 112, // msg = JSON.p + 97, 114, 115, 101, 40, 100, 97, 116, 97, 41, 59, 10, // arse(data);. 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, // if ( - 33, 114, 101, 115, 117, 108, 116, 46, 100, 111, 110, 101, // !result.done - 41, 32, 114, 101, 116, 117, 114, 110, 32, 102, 40, 114, // ) return f(r - 101, 97, 100, 101, 114, 41, 59, 10, 32, 32, 32, 32, // eader);. - 32, 32, 125, 41, 59, 10, 32, 32, 32, 32, 125, 59, // });. }; - 10, 32, 32, 32, 32, 102, 101, 116, 99, 104, 40, 39, // . fetch(' - 47, 97, 112, 105, 47, 119, 97, 116, 99, 104, 39, 44, // /api/watch', - 32, 123, 104, 101, 97, 100, 101, 114, 115, 58, 32, 123, // {headers: { - 65, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, // Authorizatio - 110, 58, 32, 39, 39, 125, 125, 41, 10, 32, 32, 32, // n: ''}}). - 32, 32, 32, 32, 32, 46, 116, 104, 101, 110, 40, 114, // .then(r - 32, 61, 62, 32, 114, 46, 98, 111, 100, 121, 46, 103, // => r.body.g - 101, 116, 82, 101, 97, 100, 101, 114, 40, 41, 41, 10, // etReader()). - 32, 32, 32, 32, 32, 32, 32, 32, 46, 116, 104, 101, // .the - 110, 40, 102, 41, 10, 32, 32, 32, 32, 32, 32, 32, // n(f). - 32, 46, 99, 97, 116, 99, 104, 40, 101, 32, 61, 62, // .catch(e => - 32, 115, 101, 116, 84, 105, 109, 101, 111, 117, 116, 40, // setTimeout( - 119, 97, 116, 99, 104, 44, 32, 49, 48, 48, 48, 41, // watch, 1000) - 41, 59, 10, 32, 32, 125, 59, 10, 10, 32, 32, 117, // );. };.. u - 115, 101, 69, 102, 102, 101, 99, 116, 40, 40, 41, 32, // seEffect(() - 61, 62, 32, 123, 10, 32, 32, 32, 32, 102, 101, 116, // => {. fet - 99, 104, 40, 39, 47, 97, 112, 105, 47, 108, 111, 103, // ch('/api/log - 105, 110, 39, 44, 32, 123, 104, 101, 97, 100, 101, 114, // in', {header - 115, 58, 32, 123, 65, 117, 116, 104, 111, 114, 105, 122, // s: {Authoriz - 97, 116, 105, 111, 110, 58, 32, 39, 39, 125, 125, 41, // ation: ''}}) + 109, 115, 103, 46, 110, 97, 109, 101, 32, 61, 61, 32, // msg.name == + 39, 99, 111, 110, 102, 105, 103, 39, 41, 32, 123, 10, // 'config') {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, // re + 102, 114, 101, 115, 104, 40, 41, 59, 10, 32, 32, 32, // fresh();. + 32, 32, 32, 32, 32, 125, 32, 101, 108, 115, 101, 32, // } else + 105, 102, 32, 40, 109, 115, 103, 46, 110, 97, 109, 101, // if (msg.name + 32, 61, 61, 32, 39, 109, 101, 115, 115, 97, 103, 101, // == 'message + 39, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, // ') {. + 32, 32, 32, 115, 101, 116, 77, 101, 115, 115, 97, 103, // setMessag + 101, 115, 40, 109, 32, 61, 62, 32, 109, 46, 99, 111, // es(m => m.co + 110, 99, 97, 116, 40, 91, 109, 115, 103, 46, 100, 97, // ncat([msg.da + 116, 97, 93, 41, 41, 59, 10, 32, 32, 32, 32, 32, // ta]));. + 32, 32, 32, 125, 32, 101, 108, 115, 101, 32, 105, 102, // } else if + 32, 40, 109, 115, 103, 46, 110, 97, 109, 101, 32, 61, // (msg.name = + 61, 32, 39, 109, 101, 116, 114, 105, 99, 115, 39, 41, // = 'metrics') + 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // {. + 32, 115, 101, 116, 77, 101, 116, 114, 105, 99, 115, 40, // setMetrics( + 109, 32, 61, 62, 32, 109, 46, 99, 111, 110, 99, 97, // m => m.conca + 116, 40, 91, 109, 115, 103, 46, 100, 97, 116, 97, 93, // t([msg.data] + 41, 46, 115, 112, 108, 105, 99, 101, 40, 45, 49, 48, // ).splice(-10 + 41, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // ));. + 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, // }. // + 32, 99, 111, 110, 115, 111, 108, 101, 46, 108, 111, 103, // console.log + 40, 109, 115, 103, 41, 59, 10, 32, 32, 32, 32, 32, // (msg);. + 32, 32, 32, 105, 102, 32, 40, 33, 114, 101, 115, 117, // if (!resu + 108, 116, 46, 100, 111, 110, 101, 41, 32, 114, 101, 116, // lt.done) ret + 117, 114, 110, 32, 102, 40, 114, 101, 97, 100, 101, 114, // urn f(reader + 41, 59, 10, 32, 32, 32, 32, 32, 32, 125, 41, 59, // );. }); + 10, 32, 32, 32, 32, 125, 59, 10, 32, 32, 32, 32, // . };. + 102, 101, 116, 99, 104, 40, 39, 47, 97, 112, 105, 47, // fetch('/api/ + 119, 97, 116, 99, 104, 39, 44, 32, 123, 104, 101, 97, // watch', {hea + 100, 101, 114, 115, 58, 32, 123, 65, 117, 116, 104, 111, // ders: {Autho + 114, 105, 122, 97, 116, 105, 111, 110, 58, 32, 39, 39, // rization: '' + 125, 125, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, // }}). + 46, 116, 104, 101, 110, 40, 114, 32, 61, 62, 32, 114, // .then(r => r + 46, 98, 111, 100, 121, 46, 103, 101, 116, 82, 101, 97, // .body.getRea + 100, 101, 114, 40, 41, 41, 10, 32, 32, 32, 32, 32, // der()). + 32, 32, 32, 46, 116, 104, 101, 110, 40, 102, 41, 10, // .then(f). + 32, 32, 32, 32, 32, 32, 32, 32, 46, 99, 97, 116, // .cat + 99, 104, 40, 101, 32, 61, 62, 32, 115, 101, 116, 84, // ch(e => setT + 105, 109, 101, 111, 117, 116, 40, 119, 97, 116, 99, 104, // imeout(watch + 44, 32, 49, 48, 48, 48, 41, 41, 59, 10, 32, 32, // , 1000));. + 125, 59, 10, 10, 32, 32, 117, 115, 101, 69, 102, 102, // };.. useEff + 101, 99, 116, 40, 40, 41, 32, 61, 62, 32, 123, 10, // ect(() => {. + 32, 32, 32, 32, 102, 101, 116, 99, 104, 40, 39, 47, // fetch('/ + 97, 112, 105, 47, 108, 111, 103, 105, 110, 39, 44, 32, // api/login', + 123, 104, 101, 97, 100, 101, 114, 115, 58, 32, 123, 65, // {headers: {A + 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110, // uthorization + 58, 32, 39, 39, 125, 125, 41, 10, 32, 32, 32, 32, // : ''}}). + 32, 32, 32, 32, 46, 116, 104, 101, 110, 40, 114, 32, // .then(r + 61, 62, 32, 114, 46, 106, 115, 111, 110, 40, 41, 41, // => r.json()) 10, 32, 32, 32, 32, 32, 32, 32, 32, 46, 116, 104, // . .th - 101, 110, 40, 114, 32, 61, 62, 32, 114, 46, 106, 115, // en(r => r.js - 111, 110, 40, 41, 41, 10, 32, 32, 32, 32, 32, 32, // on()). - 32, 32, 46, 116, 104, 101, 110, 40, 114, 32, 61, 62, // .then(r => - 32, 108, 111, 103, 105, 110, 40, 114, 41, 41, 10, 32, // login(r)). - 32, 32, 32, 32, 32, 32, 32, 46, 99, 97, 116, 99, // .catc - 104, 40, 101, 114, 114, 32, 61, 62, 32, 115, 101, 116, // h(err => set - 85, 115, 101, 114, 40, 39, 39, 41, 41, 59, 10, 32, // User(''));. - 32, 32, 32, 114, 101, 102, 114, 101, 115, 104, 40, 41, // refresh() - 59, 10, 32, 32, 32, 32, 119, 97, 116, 99, 104, 40, // ;. watch( - 41, 59, 10, 32, 32, 125, 44, 32, 91, 93, 41, 59, // );. }, []); - 10, 10, 32, 32, 105, 102, 32, 40, 33, 117, 115, 101, // .. if (!use - 114, 41, 32, 114, 101, 116, 117, 114, 110, 32, 104, 116, // r) return ht - 109, 108, 96, 60, 36, 123, 76, 111, 103, 105, 110, 125, // ml`<${Login} - 32, 108, 111, 103, 105, 110, 61, 36, 123, 108, 111, 103, // login=${log - 105, 110, 125, 32, 47, 62, 96, 59, 10, 32, 32, 99, // in} />`;. c - 111, 110, 115, 116, 32, 97, 100, 109, 105, 110, 32, 61, // onst admin = - 32, 117, 115, 101, 114, 32, 61, 61, 32, 39, 97, 100, // user == 'ad - 109, 105, 110, 39, 59, 10, 32, 32, 99, 111, 110, 115, // min';. cons - 116, 32, 99, 115, 32, 61, 32, 97, 100, 109, 105, 110, // t cs = admin - 32, 63, 32, 104, 116, 109, 108, 96, 60, 36, 123, 67, // ? html`<${C - 104, 97, 110, 103, 101, 83, 101, 116, 116, 105, 110, 103, // hangeSetting - 115, 125, 32, 99, 111, 110, 102, 105, 103, 61, 36, 123, // s} config=${ - 99, 111, 110, 102, 105, 103, 125, 32, 47, 62, 96, 32, // config} />` - 58, 32, 39, 39, 59, 10, 32, 32, 114, 101, 116, 117, // : '';. retu - 114, 110, 32, 104, 116, 109, 108, 96, 10, 60, 36, 123, // rn html`.<${ - 78, 97, 118, 125, 32, 117, 115, 101, 114, 61, 36, 123, // Nav} user=${ - 117, 115, 101, 114, 125, 32, 108, 111, 103, 111, 117, 116, // user} logout - 61, 36, 123, 108, 111, 103, 111, 117, 116, 125, 32, 47, // =${logout} / - 62, 10, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, // >.
. <${Hero} - 32, 47, 62, 10, 32, 32, 60, 100, 105, 118, 32, 99, // />.
. - 32, 32, 32, 32, 60, 100, 105, 118, 32, 99, 108, 97, //
- 60, 36, 123, 67, 104, 97, 114, 116, 125, 32, 109, 101, // <${Chart} me - 116, 114, 105, 99, 115, 61, 36, 123, 109, 101, 116, 114, // trics=${metr - 105, 99, 115, 125, 32, 47, 62, 60, 47, 100, 105, 118, // ics} />
.
<${ShowSet - 116, 105, 110, 103, 115, 125, 32, 99, 111, 110, 102, 105, // tings} confi - 103, 61, 36, 123, 99, 111, 110, 102, 105, 103, 125, 32, // g=${config} + 101, 110, 40, 114, 32, 61, 62, 32, 108, 111, 103, 105, // en(r => logi + 110, 40, 114, 41, 41, 10, 32, 32, 32, 32, 32, 32, // n(r)). + 32, 32, 46, 99, 97, 116, 99, 104, 40, 101, 114, 114, // .catch(err + 32, 61, 62, 32, 115, 101, 116, 85, 115, 101, 114, 40, // => setUser( + 39, 39, 41, 41, 59, 10, 32, 32, 32, 32, 114, 101, // ''));. re + 102, 114, 101, 115, 104, 40, 41, 59, 10, 32, 32, 32, // fresh();. + 32, 119, 97, 116, 99, 104, 40, 41, 59, 10, 32, 32, // watch();. + 125, 44, 32, 91, 93, 41, 59, 10, 10, 32, 32, 105, // }, []);.. i + 102, 32, 40, 33, 117, 115, 101, 114, 41, 32, 114, 101, // f (!user) re + 116, 117, 114, 110, 32, 104, 116, 109, 108, 96, 60, 36, // turn html`<$ + 123, 76, 111, 103, 105, 110, 125, 32, 108, 111, 103, 105, // {Login} logi + 110, 61, 36, 123, 108, 111, 103, 105, 110, 125, 32, 47, // n=${login} / + 62, 96, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, // >`;. const + 97, 100, 109, 105, 110, 32, 61, 32, 117, 115, 101, 114, // admin = user + 32, 61, 61, 32, 39, 97, 100, 109, 105, 110, 39, 59, // == 'admin'; + 10, 32, 32, 99, 111, 110, 115, 116, 32, 99, 115, 32, // . const cs + 61, 32, 97, 100, 109, 105, 110, 32, 63, 32, 104, 116, // = admin ? ht + 109, 108, 96, 60, 36, 123, 67, 104, 97, 110, 103, 101, // ml`<${Change + 83, 101, 116, 116, 105, 110, 103, 115, 125, 32, 99, 111, // Settings} co + 110, 102, 105, 103, 61, 36, 123, 99, 111, 110, 102, 105, // nfig=${confi + 103, 125, 32, 47, 62, 96, 32, 58, 32, 39, 39, 59, // g} />` : ''; + 10, 32, 32, 114, 101, 116, 117, 114, 110, 32, 104, 116, // . return ht + 109, 108, 96, 10, 60, 36, 123, 78, 97, 118, 125, 32, // ml`.<${Nav} + 117, 115, 101, 114, 61, 36, 123, 117, 115, 101, 114, 125, // user=${user} + 32, 108, 111, 103, 111, 117, 116, 61, 36, 123, 108, 111, // logout=${lo + 103, 111, 117, 116, 125, 32, 47, 62, 10, 60, 100, 105, // gout} />.. < + 36, 123, 72, 101, 114, 111, 125, 32, 47, 62, 10, 32, // ${Hero} />. + 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, //
. < + 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, 34, 99, // div class="c + 111, 108, 32, 99, 54, 34, 62, 60, 36, 123, 67, 104, // ol c6"><${Ch + 97, 114, 116, 125, 32, 109, 101, 116, 114, 105, 99, 115, // art} metrics + 61, 36, 123, 109, 101, 116, 114, 105, 99, 115, 125, 32, // =${metrics} 47, 62, 60, 47, 100, 105, 118, 62, 10, 32, 32, 32, // />
. 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, //
<${ - 67, 104, 97, 116, 125, 32, 109, 101, 115, 115, 97, 103, // Chat} messag - 101, 115, 61, 36, 123, 109, 101, 115, 115, 97, 103, 101, // es=${message - 115, 125, 32, 47, 62, 60, 47, 100, 105, 118, 62, 10, // s} />
. - 32, 32, 32, 32, 60, 100, 105, 118, 32, 99, 108, 97, //
- 36, 123, 99, 115, 125, 60, 47, 100, 105, 118, 62, 10, // ${cs}
. - 32, 32, 60, 47, 100, 105, 118, 62, 10, 32, 32, 60, //
. < - 36, 123, 70, 111, 111, 116, 101, 114, 125, 32, 47, 62, // ${Footer} /> - 10, 60, 47, 100, 105, 118, 62, 96, 59, 10, 125, 59, // .
`;.}; - 10, 10, 119, 105, 110, 100, 111, 119, 46, 111, 110, 108, // ..window.onl - 111, 97, 100, 32, 61, 32, 40, 41, 32, 61, 62, 32, // oad = () => - 114, 101, 110, 100, 101, 114, 40, 104, 40, 65, 112, 112, // render(h(App - 41, 44, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, // ), document. - 98, 111, 100, 121, 41, 59, 10, 0 // body);. + 83, 104, 111, 119, 83, 101, 116, 116, 105, 110, 103, 115, // ShowSettings + 125, 32, 99, 111, 110, 102, 105, 103, 61, 36, 123, 99, // } config=${c + 111, 110, 102, 105, 103, 125, 32, 47, 62, 60, 47, 100, // onfig} />.
<${Chat} + 32, 109, 101, 115, 115, 97, 103, 101, 115, 61, 36, 123, // messages=${ + 109, 101, 115, 115, 97, 103, 101, 115, 125, 32, 47, 62, // messages} /> + 60, 47, 100, 105, 118, 62, 10, 32, 32, 32, 32, 60, //
. < + 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, 34, 99, // div class="c + 111, 108, 32, 99, 54, 34, 62, 36, 123, 99, 115, 125, // ol c6">${cs} + 60, 47, 100, 105, 118, 62, 10, 32, 32, 60, 47, 100, //
. . <${Foo + 116, 101, 114, 125, 32, 47, 62, 10, 60, 47, 100, 105, // ter} />.`;.};..win + 100, 111, 119, 46, 111, 110, 108, 111, 97, 100, 32, 61, // dow.onload = + 32, 40, 41, 32, 61, 62, 32, 114, 101, 110, 100, 101, // () => rende + 114, 40, 104, 40, 65, 112, 112, 41, 44, 32, 100, 111, // r(h(App), do + 99, 117, 109, 101, 110, 116, 46, 98, 111, 100, 121, 41, // cument.body) + 59, 10, 0 // ;. }; static const unsigned char v5[] = { 118, 97, 114, 32, 101, 44, 110, 44, 95, 44, 116, 44, // var e,n,_,t, @@ -6763,7 +6771,7 @@ static const struct packed_file { {"/web_root/chartist.min.css", v1, sizeof(v1), 1653314466}, {"/web_root/chartist.min.js", v2, sizeof(v2), 1653312679}, {"/web_root/index.html", v3, sizeof(v3), 1653313221}, - {"/web_root/main.js", v4, sizeof(v4), 1653315081}, + {"/web_root/main.js", v4, sizeof(v4), 1653315820}, {"/web_root/preact.min.js", v5, sizeof(v5), 1652374364}, {"/web_root/style.css", v6, sizeof(v6), 1652467860}, {"/web_root/user.png", v7, sizeof(v7), 1626172939},