let f=a=>10*(a>>4)+(a&15),h=a=>a/10<<4|a%10;class k{constructor(a){this._i2c=a}_rd(a,b){this._i2c.writeTo(111,a);return this._i2c.readFrom(111,b||1)}_wr(a,b){this._i2c.writeTo(111,[a].concat(b))}_eRd(a,b){this._i2c.writeTo(87,a);return this._i2c.readFrom(87,b||1)}_eWr(a,b){this._i2c.writeTo(87,[a].concat(b))}getDateTime(){var a=this._rd(0,7),b=f(a[0]&127),e=f(a[1]&127),c=f(a[2]&127);a[2]&64&&(c=f(a[2]&127),12==c&&(c=0),a[2]&32&&(c+=12));var d=f(a[4]&63),g=f(a[5]&31);a=f(a[6]);
return new Date(2E3+a,g-1,d,c,e,b)}setDateTime(a){if(!(a instanceof Date))throw"I need a Date object!";var b=h(a.getFullYear()-2E3),e=h(a.getMonth()+1),c=h(a.getDate()),d=h(a.getHours()),g=h(a.getMinutes());a=h(a.getSeconds())|128;this._wr(0,[a,g,d]);this._wr(4,[c,e,b])}enableVbat(){var a=this._rd(3,1);this._wr(3,a|8)}readEUI48(){return this._eRd(242,6)}readEUI64(){return this._eRd(240,8)}sramRead(a,b){if(32>a)throw"invalid startAddress!";if(96a)throw"invalid startAddress!";if(96new k(a)