From a3ea00caea3ecb0b4f4360f9573e925b50238d4d Mon Sep 17 00:00:00 2001 From: bencmbrook Date: Fri, 30 Jul 2021 21:23:59 -0700 Subject: [PATCH 1/3] Cleanup with better commenting and eslint config --- .eslintrc.js | 21 +++++------- .vscode/settings.json | 51 ++++++++++++++-------------- dist/conflux.esm.js | 73 +++++++++++++++++++++++++---------------- dist/conflux.umd.min.js | 2 +- karma.local.js | 8 +++-- package.json | 3 ++ src/bigint.js | 63 ++++++++++++++++++----------------- src/read.js | 26 ++++++++++----- src/write.js | 39 ++++++++++++++-------- yarn.lock | 66 +++++++++++++++++++++++++++++++++++++ 10 files changed, 232 insertions(+), 120 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index ca56609..16f6f51 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,19 +1,16 @@ module.exports = { + parser: '@babel/eslint-parser', env: { browser: true, }, - extends: [ - "airbnb-base", - 'prettier', - 'plugin:prettier/recommended', - ], - plugins: ["@babel"], + extends: ['airbnb-base', 'prettier', 'plugin:prettier/recommended'], + // plugins: ['@babel'], rules: { - "no-bitwise": "off", - "max-len": ["error", 125, { "comments": 200 }], - "no-await-in-loop": "off", - "no-plusplus": "off", - "import/extensions": ["error", "always"], - "max-classes-per-file": "off", + 'no-bitwise': 'off', + 'max-len': ['error', 125, { comments: 200 }], + 'no-await-in-loop': 'off', + 'no-plusplus': 'off', + 'import/extensions': ['error', 'always'], + 'max-classes-per-file': 'off', }, }; diff --git a/.vscode/settings.json b/.vscode/settings.json index 6693f6d..8debe05 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,25 +1,28 @@ { - "cSpell.words": [ - "a", - "airtap", - "browserstack", - "build", - "codecov", - "example", - "exclude", - "html", - "include", - "index", - "instrumenter", - "istanbul", - "js", - "karma", - "loader", - "mjau", - "rsync", - "sourcemap", - "streamsaver", - "wärting" - ], - "eslint.enable": true -} \ No newline at end of file + "cSpell.words": [ + "a", + "airtap", + "browserstack", + "build", + "codecov", + "example", + "exclude", + "html", + "include", + "index", + "instrumenter", + "istanbul", + "js", + "karma", + "loader", + "mjau", + "rsync", + "sourcemap", + "streamsaver", + "wärting" + ], + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + "eslint.validate": ["javascript"] +} diff --git a/dist/conflux.esm.js b/dist/conflux.esm.js index 442b884..040bd49 100644 --- a/dist/conflux.esm.js +++ b/dist/conflux.esm.js @@ -13,9 +13,9 @@ import _inherits from '@babel/runtime-corejs3/helpers/inherits'; import _possibleConstructorReturn from '@babel/runtime-corejs3/helpers/possibleConstructorReturn'; import _getPrototypeOf from '@babel/runtime-corejs3/helpers/getPrototypeOf'; import _forEachInstanceProperty from '@babel/runtime-corejs3/core-js/instance/for-each'; -import _endsWithInstanceProperty from '@babel/runtime-corejs3/core-js/instance/ends-with'; import _Date$now from '@babel/runtime-corejs3/core-js/date/now'; import _trimInstanceProperty from '@babel/runtime-corejs3/core-js/instance/trim'; +import _endsWithInstanceProperty from '@babel/runtime-corejs3/core-js/instance/ends-with'; import _Object$create from '@babel/runtime-corejs3/core-js/object/create'; import { TransformStream } from 'web-streams-polyfill/ponyfill'; @@ -721,8 +721,13 @@ var ZipTransformer = /*#__PURE__*/function () { function ZipTransformer() { _classCallCheck(this, ZipTransformer); + /* The files zipped */ this.files = _Object$create(null); + /* An ordered list of the filenames */ + this.filenames = []; + /* The current position of the zipped output stream, in bytes */ + this.offset = JSBI.BigInt(0); } /** @@ -738,19 +743,25 @@ var ZipTransformer = /*#__PURE__*/function () { key: "transform", value: function () { var _transform = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(entry, ctrl) { - var _context; + var _context, _context2, _context3, _context4; - var name, date, nameBuf, zipObject, header, hdv, data, footer, reader, it, chunk; - return _regeneratorRuntime.wrap(function _callee$(_context2) { + var name, nameBuf, date, zipObject, header, hdv, data, ab2str, footer, reader, it, chunk; + return _regeneratorRuntime.wrap(function _callee$(_context5) { while (1) { - switch (_context2.prev = _context2.next) { + switch (_context5.prev = _context5.next) { case 0: - name = _trimInstanceProperty(_context = entry.name).call(_context); - date = new Date(typeof entry.lastModified === 'undefined' ? _Date$now() : entry.lastModified); - if (entry.directory && !_endsWithInstanceProperty(name).call(name, '/')) name += '/'; - if (this.files[name]) ctrl.abort(new Error('File already exists.')); + ab2str = function _ab2str(buf) { + return String.fromCharCode.apply(null, new Uint16Array(buf)); + }; + + // Set the File name, ensuring that if it's a directory, it ends with `/` + name = entry.directory && !_endsWithInstanceProperty(_context = _trimInstanceProperty(_context2 = entry.name).call(_context2)).call(_context, '/') ? "".concat(_trimInstanceProperty(_context3 = entry.name).call(_context3), "/") : _trimInstanceProperty(_context4 = entry.name).call(_context4); // Abort if this a file with this name already exists + + if (this.files[name]) ctrl.abort(new Error('File already exists.')); // Add this to the ordered list of filenames + + this.filenames.push(name); // TextEncode the name + nameBuf = encoder.encode(name); - this.filenames.push(name); this.files[name] = { directory: !!entry.directory, nameBuf: nameBuf, @@ -759,15 +770,19 @@ var ZipTransformer = /*#__PURE__*/function () { compressedLength: JSBI.BigInt(0), uncompressedLength: JSBI.BigInt(0), header: new Uint8Array(26) - }; + }; // Set the date, with fallback to current date + + date = new Date(typeof entry.lastModified === 'undefined' ? _Date$now() : entry.lastModified); zipObject = this.files[name]; - header = zipObject.header; + header = zipObject.header; // The File header DataView + hdv = new DataView(header.buffer); data = new Uint8Array(30 + nameBuf.length); hdv.setUint32(0, 0x14000808); hdv.setUint16(6, (date.getHours() << 6 | date.getMinutes()) << 5 | date.getSeconds() / 2, true); hdv.setUint16(8, (date.getFullYear() - 1980 << 4 | date.getMonth() + 1) << 5 | date.getDate(), true); hdv.setUint16(22, nameBuf.length, true); + console.log(ab2str(hdv)); data.set([80, 75, 3, 4]); data.set(header, 4); data.set(nameBuf, 30); @@ -777,51 +792,51 @@ var ZipTransformer = /*#__PURE__*/function () { footer.set([80, 75, 7, 8]); if (!entry.stream) { - _context2.next = 42; + _context5.next = 43; break; } zipObject.crc = new Crc32(); reader = entry.stream().getReader(); - case 25: + case 26: - _context2.next = 28; + _context5.next = 29; return reader.read(); - case 28: - it = _context2.sent; + case 29: + it = _context5.sent; if (!it.done) { - _context2.next = 31; + _context5.next = 32; break; } - return _context2.abrupt("break", 38); + return _context5.abrupt("break", 39); - case 31: + case 32: chunk = it.value; zipObject.crc.append(chunk); zipObject.uncompressedLength = JSBI.add(zipObject.uncompressedLength, JSBI.BigInt(chunk.length)); zipObject.compressedLength = JSBI.add(zipObject.compressedLength, JSBI.BigInt(chunk.length)); ctrl.enqueue(chunk); - _context2.next = 25; + _context5.next = 26; break; - case 38: + case 39: hdv.setUint32(10, zipObject.crc.get(), true); hdv.setUint32(14, JSBI.toNumber(zipObject.compressedLength), true); hdv.setUint32(18, JSBI.toNumber(zipObject.uncompressedLength), true); footer.set(header.subarray(10, 22), 4); - case 42: + case 43: hdv.setUint16(22, nameBuf.length, true); this.offset = JSBI.add(this.offset, JSBI.add(zipObject.compressedLength, JSBI.BigInt(16))); ctrl.enqueue(footer); - case 45: + case 46: case "end": - return _context2.stop(); + return _context5.stop(); } } }, _callee, this); @@ -840,15 +855,15 @@ var ZipTransformer = /*#__PURE__*/function () { }, { key: "flush", value: function flush(ctrl) { - var _context3, + var _context6, _this = this, - _context4; + _context7; var length = 0; var index = 0; var file; - _forEachInstanceProperty(_context3 = this.filenames).call(_context3, function (fileName) { + _forEachInstanceProperty(_context6 = this.filenames).call(_context6, function (fileName) { file = _this.files[fileName]; length += 46 + file.nameBuf.length + file.comment.length; }); @@ -856,7 +871,7 @@ var ZipTransformer = /*#__PURE__*/function () { var data = new Uint8Array(length + 22); var dv = new DataView(data.buffer); - _forEachInstanceProperty(_context4 = this.filenames).call(_context4, function (fileName) { + _forEachInstanceProperty(_context7 = this.filenames).call(_context7, function (fileName) { file = _this.files[fileName]; dv.setUint32(index, 0x504b0102); dv.setUint16(index + 4, 0x1400); diff --git a/dist/conflux.umd.min.js b/dist/conflux.umd.min.js index 969c00a..c4d1817 100644 --- a/dist/conflux.umd.min.js +++ b/dist/conflux.umd.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).conflux={})}(this,(function(t){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t,e,r){return t(r={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&r.path)}},r.exports),r.exports}var n=r((function(t){var e=function(t){var e=Object.prototype,r=e.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},i=n.iterator||"@@iterator",o=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function u(t,e,r,n){var i=e&&e.prototype instanceof f?e:f,o=Object.create(i.prototype),a=new k(n||[]);return o._invoke=function(t,e,r){var n="suspendedStart";return function(i,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw o;return T()}for(r.method=i,r.arg=o;;){var a=r.delegate;if(a){var s=y(a,r);if(s){if(s===c)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===c)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}(t,r,a),o}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;var c={};function f(){}function h(){}function d(){}var _={};_[i]=function(){return this};var p=Object.getPrototypeOf,g=p&&p(p(E([])));g&&g!==e&&r.call(g,i)&&(_=g);var b=d.prototype=f.prototype=Object.create(_);function v(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function m(t,e){var n;this._invoke=function(i,o){function a(){return new e((function(n,a){!function n(i,o,a,s){var u=l(t[i],t,o);if("throw"!==u.type){var c=u.arg,f=c.value;return f&&"object"==typeof f&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(f).then((function(t){c.value=t,a(c)}),(function(t){return n("throw",t,a,s)}))}s(u.arg)}(i,o,n,a)}))}return n=n?n.then(a,a):a()}}function y(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,y(t,e),"throw"===e.method))return c;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var n=l(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,c;var i=n.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,c):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,c)}function w(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function S(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(w,this),this.reset(!0)}function E(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),u=r.call(o,"finallyLoc");if(s&&u){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),S(r),c}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;S(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:E(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),c}},t}(t.exports);try{regeneratorRuntime=e}catch(t){Function("r","regeneratorRuntime = r")(e)}})),i=Math.ceil,o=Math.floor,a=function(t){return isNaN(t=+t)?0:(t>0?o:i)(t)},s=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},u=function(t){return function(e,r){var n,i,o=String(s(e)),u=a(r),l=o.length;return u<0||u>=l?t?"":void 0:(n=o.charCodeAt(u))<55296||n>56319||u+1===l||(i=o.charCodeAt(u+1))<56320||i>57343?t?o.charAt(u):n:t?o.slice(u,u+2):i-56320+(n-55296<<10)+65536}},l={codeAt:u(!1),charAt:u(!0)},c=function(t){return t&&t.Math==Math&&t},f=c("object"==typeof globalThis&&globalThis)||c("object"==typeof window&&window)||c("object"==typeof self&&self)||c("object"==typeof e&&e)||Function("return this")(),h=function(t){try{return!!t()}catch(t){return!0}},d=!h((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),_=function(t){return"object"==typeof t?null!==t:"function"==typeof t},p=f.document,g=_(p)&&_(p.createElement),b=function(t){return g?p.createElement(t):{}},v=!d&&!h((function(){return 7!=Object.defineProperty(b("div"),"a",{get:function(){return 7}}).a})),m=function(t){if(!_(t))throw TypeError(String(t)+" is not an object");return t},y=function(t,e){if(!_(t))return t;var r,n;if(e&&"function"==typeof(r=t.toString)&&!_(n=r.call(t)))return n;if("function"==typeof(r=t.valueOf)&&!_(n=r.call(t)))return n;if(!e&&"function"==typeof(r=t.toString)&&!_(n=r.call(t)))return n;throw TypeError("Can't convert object to primitive value")},w=Object.defineProperty,S={f:d?w:function(t,e,r){if(m(t),e=y(e,!0),m(r),v)try{return w(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},k=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},E=d?function(t,e,r){return S.f(t,e,k(1,r))}:function(t,e,r){return t[e]=r,t},T=f["__core-js_shared__"]||function(t,e){try{E(f,t,e)}catch(r){f[t]=e}return e}("__core-js_shared__",{}),x=Function.toString;"function"!=typeof T.inspectSource&&(T.inspectSource=function(t){return x.call(t)});var R,O,A,P=T.inspectSource,B=f.WeakMap,z="function"==typeof B&&/native code/.test(P(B)),j={}.hasOwnProperty,C=function(t,e){return j.call(t,e)},D=r((function(t){(t.exports=function(t,e){return T[t]||(T[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.6.4",mode:"pure",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})})),L=0,I=Math.random(),q=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++L+I).toString(36)},M=D("keys"),F=function(t){return M[t]||(M[t]=q(t))},N={},W=f.WeakMap;if(z){var U=new W,Z=U.get,V=U.has,G=U.set;R=function(t,e){return G.call(U,t,e),e},O=function(t){return Z.call(U,t)||{}},A=function(t){return V.call(U,t)}}else{var H=F("state");N[H]=!0,R=function(t,e){return E(t,H,e),e},O=function(t){return C(t,H)?t[H]:{}},A=function(t){return C(t,H)}}var Y,Q,K,X={set:R,get:O,has:A,enforce:function(t){return A(t)?O(t):R(t,{})},getterFor:function(t){return function(e){var r;if(!_(e)||(r=O(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},J={}.propertyIsEnumerable,$=Object.getOwnPropertyDescriptor,tt={f:$&&!J.call({1:2},1)?function(t){var e=$(this,t);return!!e&&e.enumerable}:J},et={}.toString,rt=function(t){return et.call(t).slice(8,-1)},nt="".split,it=h((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==rt(t)?nt.call(t,""):Object(t)}:Object,ot=function(t){return it(s(t))},at=Object.getOwnPropertyDescriptor,st={f:d?at:function(t,e){if(t=ot(t),e=y(e,!0),v)try{return at(t,e)}catch(t){}if(C(t,e))return k(!tt.f.call(t,e),t[e])}},ut=/#|\.prototype\./,lt=function(t,e){var r=ft[ct(t)];return r==dt||r!=ht&&("function"==typeof e?h(e):!!e)},ct=lt.normalize=function(t){return String(t).replace(ut,".").toLowerCase()},ft=lt.data={},ht=lt.NATIVE="N",dt=lt.POLYFILL="P",_t=lt,pt={},gt=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t},bt=function(t,e,r){if(gt(t),void 0===e)return t;switch(r){case 0:return function(){return t.call(e)};case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}},vt=st.f,mt=function(t){var e=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return e.prototype=t.prototype,e},yt=function(t,e){var r,n,i,o,a,s,u,l,c=t.target,h=t.global,d=t.stat,_=t.proto,p=h?f:d?f[c]:(f[c]||{}).prototype,g=h?pt:pt[c]||(pt[c]={}),b=g.prototype;for(i in e)r=!_t(h?i:c+(d?".":"#")+i,t.forced)&&p&&C(p,i),a=g[i],r&&(s=t.noTargetGet?(l=vt(p,i))&&l.value:p[i]),o=r&&s?s:e[i],r&&typeof a==typeof o||(u=t.bind&&r?bt(o,f):t.wrap&&r?mt(o):_&&"function"==typeof o?bt(Function.call,o):o,(t.sham||o&&o.sham||a&&a.sham)&&E(u,"sham",!0),g[i]=u,_&&(C(pt,n=c+"Prototype")||E(pt,n,{}),pt[n][i]=o,t.real&&b&&!b[i]&&E(b,i,o)))},wt=function(t){return Object(s(t))},St=!h((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),kt=F("IE_PROTO"),Et=Object.prototype,Tt=St?Object.getPrototypeOf:function(t){return t=wt(t),C(t,kt)?t[kt]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?Et:null},xt=!!Object.getOwnPropertySymbols&&!h((function(){return!String(Symbol())})),Rt=xt&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Ot=D("wks"),At=f.Symbol,Pt=Rt?At:At&&At.withoutSetter||q,Bt=function(t){return C(Ot,t)||(xt&&C(At,t)?Ot[t]=At[t]:Ot[t]=Pt("Symbol."+t)),Ot[t]},zt=(Bt("iterator"),!1);[].keys&&("next"in(K=[].keys())?(Q=Tt(Tt(K)))!==Object.prototype&&(Y=Q):zt=!0),null==Y&&(Y={});var jt,Ct={IteratorPrototype:Y,BUGGY_SAFARI_ITERATORS:zt},Dt=Math.min,Lt=function(t){return t>0?Dt(a(t),9007199254740991):0},It=Math.max,qt=Math.min,Mt=function(t,e){var r=a(t);return r<0?It(r+e,0):qt(r,e)},Ft=function(t){return function(e,r,n){var i,o=ot(e),a=Lt(o.length),s=Mt(n,a);if(t&&r!=r){for(;a>s;)if((i=o[s++])!=i)return!0}else for(;a>s;s++)if((t||s in o)&&o[s]===r)return t||s||0;return!t&&-1}},Nt={includes:Ft(!0),indexOf:Ft(!1)}.indexOf,Wt=function(t,e){var r,n=ot(t),i=0,o=[];for(r in n)!C(N,r)&&C(n,r)&&o.push(r);for(;e.length>i;)C(n,r=e[i++])&&(~Nt(o,r)||o.push(r));return o},Ut=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Zt=Object.keys||function(t){return Wt(t,Ut)},Vt=d?Object.defineProperties:function(t,e){m(t);for(var r,n=Zt(e),i=n.length,o=0;i>o;)S.f(t,r=n[o++],e[r]);return t},Gt=function(t){return"function"==typeof t?t:void 0},Ht=function(t,e){return arguments.length<2?Gt(pt[t])||Gt(f[t]):pt[t]&&pt[t][e]||f[t]&&f[t][e]},Yt=Ht("document","documentElement"),Qt=F("IE_PROTO"),Kt=function(){},Xt=function(t){return"