{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_export.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_global.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_fails.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_wks.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_hide.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_has.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_cof.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_core.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-sap.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_defined.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_metadata.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_typed-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_meta.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_library.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_uid.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_string-trim.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_classof.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_flags.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_shared.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_set-collection-from.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_set-collection-of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-forced-pam.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_typed.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_collection.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_user-agent.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_is-regexp.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_typed-buffer.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_task.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_array-fill.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_create-property.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_fails-is-regexp.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_string-context.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_math-expm1.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_math-sign.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_string-repeat.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_string-ws.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_html.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_wks-define.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_math-scale.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_array-from-iterable.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_collection-to-json.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_string-pad.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_flatten-into-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_own-keys.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_to-index.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_perform.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.regexp.flags.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.regexp.exec.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_array-copy-within.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_array-reduce.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_math-fround.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_math-log1p.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_is-integer.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_a-number-value.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_parse-float.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_parse-int.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_bind.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-gopn-ext.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_wks-ext.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./src/cpexcel.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./src/xlsx.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./node_modules/blob/main.js","webpack:///./src/excel.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_replacer.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/core.regexp.escape.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/fn/regexp/escape.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/web.timers.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.observable.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.asap.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.reflect.metadata.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.reflect.has-own-metadata.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.reflect.has-metadata.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.reflect.get-own-metadata.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.reflect.get-metadata.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.reflect.delete-metadata.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.reflect.define-metadata.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.promise.try.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.promise.finally.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.math.signbit.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.math.umulh.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.math.scale.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.math.radians.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.math.rad-per-deg.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.math.imulh.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.math.isubh.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.math.iaddh.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.math.fscale.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.math.degrees.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.math.deg-per-rad.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.math.clamp.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.error.is-error.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.system.global.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.global.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.weak-set.from.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.weak-map.from.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.set.from.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.map.from.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.weak-set.of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.weak-map.of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.set.of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.map.of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.set.to-json.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.map.to-json.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.object.lookup-setter.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.object.lookup-getter.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.object.define-setter.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.object.define-getter.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.object.entries.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.object.values.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.symbol.observable.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.string.match-all.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.string.trim-right.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.string.trim-left.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.string.pad-end.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.string.pad-start.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.string.at.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.array.flatten.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.array.flat-map.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es7.array.includes.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.set.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.own-keys.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.has.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.get.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.enumerate.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.delete-property.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.define-property.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.construct.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.reflect.apply.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.typed.float64-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.typed.float32-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.typed.uint32-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.typed.int32-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.typed.uint16-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.typed.int16-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.typed.uint8-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.typed.int8-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.typed.data-view.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.typed.array-buffer.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.weak-set.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.regexp.split.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.regexp.search.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.regexp.replace.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.regexp.match.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.species.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.find-index.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.copy-within.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.last-index-of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.index-of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.reduce-right.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.reduce.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.every.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.some.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.filter.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.map.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.for-each.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.slice.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.join.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.array.is-array.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_date-to-primitive.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.date.to-primitive.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.date.to-string.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_date-to-iso-string.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.date.to-iso-string.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.date.to-json.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.date.now.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.sup.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.sub.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.strike.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.small.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.link.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.italics.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.fontsize.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.fontcolor.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.fixed.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.bold.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.blink.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.big.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.anchor.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.starts-with.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.repeat.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.includes.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.ends-with.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.code-point-at.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.iterator.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.trim.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.raw.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.string.from-code-point.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.trunc.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.tanh.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.sinh.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.sign.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.log2.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.log1p.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.log10.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.imul.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.hypot.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.fround.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.expm1.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.cosh.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.clz32.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.cbrt.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.atanh.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.asinh.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.math.acosh.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.number.parse-int.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.number.parse-float.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.number.is-nan.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.number.is-integer.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.number.is-finite.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.number.epsilon.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.number.to-precision.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.number.to-fixed.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.number.constructor.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.parse-float.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.parse-int.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.function.has-instance.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.function.bind.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.to-string.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.is.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.assign.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.is-extensible.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.is-sealed.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.is-frozen.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.seal.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.freeze.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.keys.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.define-properties.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.define-property.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.object.create.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_enum-keys.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/modules/es6.symbol.js","webpack:///./node_modules/babel-polyfill/node_modules/core-js/shim.js","webpack:///./node_modules/babel-polyfill/lib/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","global","core","hide","redefine","ctx","$export","type","source","key","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","target","expProto","undefined","Function","U","W","R","isObject","it","TypeError","window","Math","self","__g","exec","e","store","uid","Symbol","USE_SYMBOL","toInteger","min","a","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","O","Attributes","defined","fails","quot","createHTML","string","tag","attribute","String","p1","replace","NAME","test","toLowerCase","split","length","has","SRC","$toString","TPL","inspectSource","val","safe","isFunction","join","this","createDesc","toObject","IE_PROTO","ObjectProto","getPrototypeOf","constructor","pIE","toIObject","gOPD","getOwnPropertyDescriptor","IObject","method","arg","ceil","floor","isNaN","toString","slice","aFunction","fn","that","b","apply","arguments","version","__e","toLength","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","create","$this","callbackfn","res","index","result","push","KEY","valueOf","Map","shared","getOrCreateMetadataMap","targetKey","targetMetadata","set","keyMetadata","map","MetadataKey","metadataMap","MetadataValue","keys","forEach","_","LIBRARY","$typed","$buffer","anInstance","propertyDesc","redefineAll","toIndex","toAbsoluteIndex","classof","isArrayIter","gOPN","getIterFn","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","Iterators","$iterDetect","setSpecies","arrayFill","arrayCopyWithin","$DP","$GOPD","RangeError","Uint8Array","ArrayProto","Array","$ArrayBuffer","ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","values","arrayKeys","arrayEntries","entries","arrayLastIndexOf","lastIndexOf","arrayReduce","reduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","sort","arraySlice","arrayToString","arrayToLocaleString","toLocaleString","ITERATOR","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","$map","allocate","LITTLE_ENDIAN","Uint16Array","buffer","FORCED_SET","toOffset","BYTES","offset","validate","C","speciesFromList","list","fromList","addGetter","internal","_d","$from","step","iterator","aLen","mapfn","mapping","iterFn","next","done","$of","TO_LOCALE_BUG","$toLocaleString","proto","copyWithin","start","every","fill","filter","find","predicate","findIndex","indexOf","searchElement","includes","separator","reverse","middle","some","comparefn","subarray","begin","end","$begin","byteOffset","BYTES_PER_ELEMENT","$slice","$set","arrayLike","src","len","$iterators","isTAIndex","$getDesc","$setDesc","desc","writable","$TypedArrayPrototype$","wrapper","CLAMPED","GETTER","SETTER","TypedArray","Base","TAC","FORCED","ABV","TypedArrayPrototype","addElement","data","v","round","setter","$offset","$length","byteLength","klass","$len","iter","concat","$nativeIterator","CORRECT_ITER_NAME","$iterator","of","from","UNSCOPABLES","META","setDesc","id","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","NEED","fastKey","getWeak","onFreeze","_t","BREAK","RETURN","iterable","Constructor","forbiddenField","DESCRIPTORS","SPECIES","$keys","hiddenKeys","getOwnPropertyNames","dPs","enumBugKeys","Empty","createDict","iframeDocument","iframe","style","display","appendChild","contentWindow","document","open","write","lt","close","Properties","max","px","random","bitmap","spaces","space","ltrim","RegExp","rtrim","exporter","ALIAS","FORCE","trim","cof","ARG","T","tryGet","callee","def","stat","D","ignoreCase","multiline","unicode","sticky","propertyIsEnumerable","mode","copyright","g","eval","forOf","COLLECTION","A","cb","mapFn","nextItem","K","__defineSetter__","Typed","TypedArrayConstructors","setToStringTag","inheritIfRequired","methods","common","IS_WEAK","ADDER","fixMethod","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","clear","getConstructor","setStrong","navigator","userAgent","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","str","arg2","forceStringMethod","strfn","rxfn","builtinExec","SAFE_CLOSING","riter","skipClosing","arr","MATCH","isRegExp","TO_STRING","pos","charCodeAt","charAt","isArray","getOwnPropertySymbols","IS_INCLUDES","el","fromIndex","PROTOTYPE","WRONG_INDEX","Infinity","BaseBuffer","abs","pow","log","LN2","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","NaN","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","view","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","j","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","resolve","reject","promise","$$resolve","$$reject","macrotask","Observer","MutationObserver","WebKitMutationObserver","process","Promise","isNode","head","last","notify","flush","parent","domain","exit","enter","nextTick","standalone","then","toggle","node","createTextNode","observe","characterData","task","defer","channel","port","invoke","html","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","listener","event","args","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","removeChild","setTimeout","at","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","lastIndex","reCopy","match","addToUnscopables","iterated","kind","_i","_k","Arguments","endPos","original","getIteratorMethod","$defineProperty","searchString","descriptor","IteratorPrototype","$iterCreate","BUGGY","returnThis","DEFAULT","IS_SET","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","$expm1","expm1","x","sign","count","setPrototypeOf","check","buggy","__proto__","documentElement","wksExt","$Symbol","is","createElement","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","encodingOrOffset","Error","allocUnsafe","array","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","obj","isBuffer","checked","copy","isnan","fromObject","assertSize","size","isView","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","dir","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64Slice","fromByteArray","utf8Slice","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","y","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","ret","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","scale","inLow","inHigh","outLow","outHigh","getKeys","isEnum","isEntries","repeat","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","IS_CONCAT_SPREADABLE","flattenIntoArray","sourceLen","depth","mapper","thisArg","element","spreadable","targetIndex","sourceIndex","gOPS","Reflect","ownKeys","getSymbols","number","$has","uncaughtFrozenStore","_l","UncaughtFrozenStore","findUncaughtFrozen","entry","delete","splice","ufstore","InternalMap","each","assign","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","$WeakMap","_f","strong","add","$iterDefine","SIZE","getEntry","k","prev","newPromiseCapability","promiseCapability","flags","forced","to","inc","memo","isRight","EPSILON","EPSILON32","MAX32","MIN32","fround","$abs","$sign","roundTiesToEven","log1p","msg","$parseFloat","parseFloat","$trim","$parseInt","ws","hex","radix","un","factories","bind","partArgs","bound","construct","$assign","windowNames","getWindowNames","defineProperties","names","cptable","enc","dec","DO_NOT_EXPORT_CODEPAGE","root","factory","cpt","magic","1200","1201","12000","12001","16969","20127","65000","65001","sbcs_cache","dbcs_cache","magic_cache","magic_decode","magic_encode","cpdcache","cpecache","sfcc","cca","has_buf","Buffer_from","nbfs","mdl","mdb","sbcs_encode","cp","EE","E","ee","make_EE","ofmt","sbcs_decode","DD","dbcs_encode","jj","dbcs_decode","utf8_d","ww","direct","encache","null_enc","cp_decache","cache","decache","last_enc","last_cp","sbcs","dbcs","BM","utils","decode","M","dash","tt","o64","c1","c2","c3","e2","e3","e4","encode","isstr","hascp","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","marker","runClearTimeout","Item","noop","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","isLE","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","tripletToBase64","num","output","style_builder","XLSX","$cptable","current_codepage","current_ansi","VALID_ANSI","CS2CP","0","1","2","77","128","129","130","134","136","161","162","163","177","178","186","204","222","238","255","69","set_ansi","set_cp","reset_cp","char_codes","utf16leread","utf16beread","debom","_getchar","_getansi","set_cptable","cpdoit","DENSE","DIF_XL","Base64_map","Base64_encode","input","e1","Base64_decode","buf_utf16le","new_raw_buf","new_unsafe_buf","s2a","s2ab","a2s","ab2a","bconcat","bufs","maxlen","chr0","chr1","_strrev","pad0","t","pad_","rpad_","p2_32","pad0r","pad0r1","pad0r2","SSF_isgeneral","days","months","table_fmt","3","4","9","10","11","12","13","14","15","16","17","18","19","20","21","22","37","38","39","40","45","46","47","48","49","56","SSF_default_map","5","6","7","8","23","24","25","26","27","28","29","30","31","50","51","52","53","54","55","57","58","59","60","61","62","67","68","70","71","72","73","74","75","76","78","79","80","81","82","SSF_default_str","63","64","65","66","41","42","43","44","SSF_frac","mixed","sgn","P_2","P_1","Q_2","Q_1","Q","q","SSF_parse_date_code","opts","b2","date","time","dow","dout","u","H","date1904","Date","setDate","getDate","getFullYear","getMonth","getDay","SSF_fix_hijri","SSFbasedate","SSFdnthresh","getTime","SSFbase1904","datenum_local","epoch","getTimezoneOffset","SSF_strip_decimal","SSF_general_num","V","LOG10E","SSF_normalize_exp","toPrecision","toFixed","toExponential","SSF_small_exp","SSF_large_exp","toUpperCase","SSF_general","_typeof","SSF_format","SSF_write_date","fmt","ss0","ss","outl","commaify","pct1","frac1","dec1","closeparen","phone","hashq","cc","rnd","dd","_frac","write_num_flt","ffmt","idx","write_num","write_num_cm","sfmt","write_num_pct","write_num_exp","period","fakee","$$","$1","$2","$3","ri","ff","aval","den","rr","base","myn","myd","write_num_f1","carry","oa","lres","rres","flr","write_num_int","write_num_cm2","write_num_pct2","write_num_exp2","write_num_f2","SSF_abstime","fmt_is_date","cfregex2","chkcond","thresh","choose_fmt","in_str","SSF_split_fmt","lat","m1","m2","dateNF","table","flen","dt","lst","hr","ssm","bt","nstr","myv","ostr","vv","decpt","lasti","retval","eval_fmt","SSF_load","SSF_load_table","tbl","make_ssf","SSF_init_table","SSF","format","load","_table","load_table","parse_date_code","is_date","get_table","SSFImplicit","32","33","34","35","36","dateNFregex","bad_formats","d.m","SSF__load","_fs","CRC32","T0","Int32Array","signed_crc_table","TT","slice_by_16_tables","T1","T2","T3","T4","T5","T6","T7","T8","T9","Ta","Tb","Tc","Td","Te","Tf","bstr","seed","L","CFB","fs","dirname","filename","write_dos_date","hms","getHours","getMinutes","getSeconds","write_shift","ymd","parse_extra_field","blob","prep_blob","read_shift","sz","tgt","mtime","atime","ctime","mt","get_fs","parse","file","options","parse_zip","di","row","mboundary","boundary","FileIndex","FullPaths","init_cfb","start_di","fcnt","line","parse_mime","parse_mad","mver","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","ssz","fat_addrs","mv","chk","HEADER_SIGNATURE","check_get_mver","header","shift","check_shifts","dir_cnt","sectors","nsectors","sectorify","sleuth_fat","cnt","ENDOFCHAIN","sector","__readInt32LE","sector_list","sl","chkd","buf_chain","modulus","seen","addr","nodes","__toBuffer","make_sector_list","Paths","files","mini","minifat_store","pl","namelen","__utf16le","color","clsid","state","ct","read_date","storage","get_sector_list","content","get_mfat_entry","read_directory","FI","FP","dad","build_full_paths","raw","payload","MSSZ","new_buf","__readUInt32LE","cfb","CLSID","nm","rebuild_cfb","seed_cfb","gc","_file","pop","fullPaths","HEADER_CLSID","Z","namecmp","elt","_write","_opts","fileType","fp","fi","ca","cstr","dispcnt","csl","qp","get_content_type","write_quoted_printable","write_base64_76","write_mad","cdirs","compression","start_cd","crcs","sz_cd","namebuf","outbuf","_deflateRawSync","write_zip","mini_size","fat_size","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","DIFSECT","FATSECT","_nm","console","error","_zlib","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","rev","read_bits_2","bl","h","read_bits_3","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","zero_fill_array","build_tree","clens","cmap","MAX","ccode","bl_count","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","DST_LN_RE","LEN_LN_RE","boff","write_stored","addrs","hash","mlen","len_eb","dst_eb","write_huff_fixed","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","read_bits_4","next_code","hcodes","h1","h2","_inflate","usz","woff","OL","max_len_1","max_len_2","bits","inflate","warn_or_throw","wrn","csz","efsz","fcsz","EF","parse_local_file","meth","setMilliseconds","setFullYear","setMonth","setHours","setMinutes","setSeconds","parse_dos_date","_csz","_usz","ef","InflRaw","InflateRaw","_processChunk","_finishFlushFlag","bytesRead","_inflateRawSync","cfb_add","unsafe","ContentTypeMap","htm","xml","gif","jpg","png","mso","thmx","sh33tj5","ctype","text","encoded","si","fdata","fname","cte","oi","parse_quoted_printable","fpath","cfb_gc","path","UCFullPaths","UCPaths","UCPath","readFileSync","read_file","writeFileSync","writeFile","cfb_new","cfb_del","cfb_mov","old_name","new_name","ReadShift","CheckField","use_zlib","zlib","message","_inflateRaw","blobify","a2u","write_dl","Deno","TextEncoder","utf8write","IE_SaveFile","Blob","msSaveBlob","saveAs","URL","createObjectURL","url","chrome","downloads","download","revokeObjectURL","href","body","click","$","File","Folder","ks","o2","evert_key","evert","evert_num","basedate","datenum","refdate","dnthresh","refoffset","numdate","setTime","parse_isodur","sec","good_pd_date_1","good_pd_date","good_pd","parseDate","fixdate","cc2str","debomit","TextDecoder","€","‚","ƒ","„","…","†","‡","ˆ","‰","Š","‹","Œ","Ž","‘","’","“","”","•","–","—","˜","™","š","›","œ","ž","Ÿ","dup","JSON","stringify","fuzzynum","wt","FDRE1","lower_months","fuzzydate","lower","fuzzytime1","getYear","split_regex","safe_split_regex","getdatastr","asNodeBuffer","asBinary","_data","getContent","getdatabin","safegetzipfile","zip","getzipfile","getzipdata","getdata","getzipstr","zipentries","zip_add_file","widx","ridx","utf8decode","zip_new","zip_read","resolve_path","XML_HEADER","attregexg","tagregex1","tagregex","nsregex","nsregex2","parsexmltag","skip_root","skip_LC","z","eq","strip_ns","encodings",""","'",">","<","&","rencoding","unescapexml","encregex","coderegex","xlsx","raw_unescapexml","decregex","charegex","escapexml","escapexmltag","htmlcharegex","escapehtml","xlml_fixstr","entregex","entrepl","parsexmlbool","utf8reada","orig","utf8readb","utf8readc","utf8corpus","utf8read","matchtag","mtcache","htmldecode","entities","vtregex","vt_cache","vtvregex","vtmregex","parseVector","matches","baseType","WTF","wtregex","writetag","wxt_helper","writextag","write_w3cdtf","toISOString","xlml_normalize","xlmlregex","XMLNS","CORE_PROPS","CUST_PROPS","EXT_PROPS","CT","RELS","TCMNT","dc","dcterms","dcmitype","mx","sjs","vt","xsi","xsd","XMLNS_main","XLMLNS","___toBuffer","___utf16le","__readUInt16LE","___hexlify","__hexlify","___utf8","__readUInt8","__utf8","___lpstr","__lpstr","___cpstr","__cpstr","___lpwstr","__lpwstr","___lpp4","__lpp4","___8lpp4","__8lpp4","___double","read_double_le","__double","is_buf","__readInt16LE","__readInt32BE","oI","oR","loc","oo","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","cppayload","bs","av","write_double_le","hexstr","fld","parsenoop","recordhopper","tmpbyte","cntbyte","RT","XLSBRecordEnum","buf_array","blksz","newblk","curbuf","endbuf","_bufs","write_record","ba","shift_cell_xls","cell","cRel","rRel","biff","shift_range_xls","range","encode_cell_xls","encode_cell","fix_col","fix_row","encode_range_xls","encode_row","encode_col","decode_row","rowstr","unfix_row","decode_col","colstr","unfix_col","col","decode_cell","decode_range","encode_range","cs","ce","fix_range","a1","formula_quote_sheet_name","sname","safe_decode_range","safe_format_cell","XF","numFmtId","format_cell","BErr","sheet_to_workbook","sheet","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","dense","_R","_C","origin","_origin","_range","__R","__C","nullError","sheetStubs","cellDates","cell_ref","aoa_to_sheet","write_UInt32LE","parse_XLWideString","cchCharacters","write_XLWideString","_null","parse_StrRun","ich","ifnt","parse_RichStr","rgsStrRun","dwSizeStrRun","require","parse_BrtCommentText","write_BrtCommentText","write_StrRun","parse_XLSBCell","iStyleRef","write_XLSBCell","parse_XLSBShortCell","write_XLSBShortCell","parse_XLSBCodeName","write_XLSBCodeName","parse_XLNullableWideString","write_XLNullableWideString","parse_XLNameWideString","parse_RelID","write_RelID","parse_RkNumber","fX100","fInt","RK","write_RkNumber","d100","parse_RfX","parse_UncheckedRfX","write_UncheckedRfX","parse_Xnum","write_Xnum","write_BrtColor","auto","theme","nTS","tint","rgb","parse_ClipboardFormatOrString","VT_I2","VT_I4","VT_VARIANT","VT_USTR","VT_CUSTOM","DocSummaryPIDDSI","2147483648","2147483651","1919054434","SummaryPIDSI","CountryEnum","84","86","90","105","213","216","218","351","354","358","420","886","961","962","963","964","965","966","971","972","974","981","65535","XLSFillPattern","XLSIcv","rgbify","RBErr","#NULL!","#DIV/0!","#VALUE!","#REF!","#NAME?","#NUM!","#N/A","#GETTING_DATA","#WTF?","XLSLblBuiltIn","ct2type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml","application/vnd.ms-excel.sheet.macroEnabled.main+xml","application/vnd.ms-excel.sheet.binary.macroEnabled.main","application/vnd.ms-excel.addin.macroEnabled.main+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml","application/vnd.ms-excel.worksheet","application/vnd.ms-excel.binIndexWs","application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml","application/vnd.ms-excel.chartsheet","application/vnd.ms-excel.macrosheet+xml","application/vnd.ms-excel.macrosheet","application/vnd.ms-excel.intlmacrosheet","application/vnd.ms-excel.binIndexMs","application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml","application/vnd.ms-excel.dialogsheet","application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml","application/vnd.ms-excel.sharedStrings","application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml","application/vnd.ms-excel.styles","application/vnd.openxmlformats-package.core-properties+xml","application/vnd.openxmlformats-officedocument.custom-properties+xml","application/vnd.openxmlformats-officedocument.extended-properties+xml","application/vnd.openxmlformats-officedocument.customXmlProperties+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty","application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml","application/vnd.ms-excel.comments","application/vnd.ms-excel.threadedcomments+xml","application/vnd.ms-excel.person+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml","application/vnd.ms-excel.sheetMetadata","application/vnd.ms-excel.pivotTable","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml","application/vnd.openxmlformats-officedocument.drawingml.chart+xml","application/vnd.ms-office.chartcolorstyle+xml","application/vnd.ms-office.chartstyle+xml","application/vnd.ms-office.chartex+xml","application/vnd.ms-excel.calcChain","application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings","application/vnd.ms-office.activeX","application/vnd.ms-office.activeX+xml","application/vnd.ms-excel.attachedToolbars","application/vnd.ms-excel.connections","application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml","application/vnd.ms-excel.externalLink","application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml","application/vnd.ms-excel.pivotCacheDefinition","application/vnd.ms-excel.pivotCacheRecords","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml","application/vnd.ms-excel.queryTable","application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml","application/vnd.ms-excel.userNames","application/vnd.ms-excel.revisionHeaders","application/vnd.ms-excel.revisionLog","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml","application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml","application/vnd.ms-excel.tableSingleCells","application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml","application/vnd.ms-excel.slicer","application/vnd.ms-excel.slicerCache","application/vnd.ms-excel.slicer+xml","application/vnd.ms-excel.slicerCache+xml","application/vnd.ms-excel.wsSortMap","application/vnd.ms-excel.table","application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml","application/vnd.openxmlformats-officedocument.theme+xml","application/vnd.openxmlformats-officedocument.themeOverride+xml","application/vnd.ms-excel.Timeline+xml","application/vnd.ms-excel.TimelineCache+xml","application/vnd.ms-office.vbaProject","application/vnd.ms-office.vbaProjectSignature","application/vnd.ms-office.volatileDependencies","application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml","application/vnd.ms-excel.controlproperties+xml","application/vnd.openxmlformats-officedocument.model+data","application/vnd.ms-excel.Survey+xml","application/vnd.openxmlformats-officedocument.drawing+xml","application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml","application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml","application/vnd.openxmlformats-officedocument.vmlDrawing","application/vnd.openxmlformats-package.relationships+xml","application/vnd.openxmlformats-officedocument.oleObject","image/png","CT_LIST","workbooks","xlsm","xlsb","xlam","xltx","strs","comments","charts","dialogs","macros","metadata","styles","write_ct","type2ct","evert_arr","xmlns","xmlns:xsd","xmlns:xsi","Extension","ContentType","f1","PartName","bookType","f2","f3","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","CMNT","SST","STY","THEME","CHART","CHARTEX","CS","WS","DS","MS","IMG","DRAW","XLMETA","PEOPLE","CONN","VBA","get_rels_path","parse_rels","currentFilePath","rels","!id","rel","Type","Target","Id","TargetMode","canonictarget","DRAW_ROOT","xmlns:xdr","xmlns:a","write_drawing","images","rId","image","position","fromCol","toCol","twoCell","attrs","write_rels","rid","add_rels","relobj","targetmode","CT_ODS","write_rdf_type","write_rdf_has","write_meta_ods","CORE_PROPS_REGEX","parse_core_props","cur","cp_doit","write_core_props","xmlns:cp","xmlns:dc","xmlns:dcterms","xmlns:dcmitype","Props","CreatedDate","xsi:type","ModifiedDate","PseudoPropsPairs","load_props_pairs","HP","TOP","props","hp","Worksheets","NamedRanges","DefinedNames","Chartsheets","ChartNames","write_ext_props","Application","xmlns:vt","custregex","write_cust_props","pid","write_vt","fmtid","evert_XLMLDPM","XLMLDocPropsMap","Title","Subject","Author","Keywords","Comments","LastAuthor","RevNumber","LastPrinted","Category","Manager","Company","AppVersion","ContentStatus","Identifier","Language","xlml_set_prop","parse_FILETIME","dwLowDateTime","dwHighDateTime","parse_lpstr","pad","parse_lpwstr","parse_VtStringBase","stringType","parse_VtString","parse_VtHeadingPair","headingString","parse_TypedPropertyValue","parse_dictionary","CodePage","dict","parse_BLOB","Size","parse_ClipboardData","parse_VtUnalignedString","cElements","parse_VtVecHeadingPairValue","parse_VtVecLpwstrValue","parse_VtVecUnalignedLpstrValue","write_TypedPropertyValue","write_FILETIME","parse_PropertySet","PIDSI","start_addr","NumProps","Dictionary","DictObj","PropID","Offset","PropH","fail","piddsi","oldpos","parsebool","XLSPSSkip","guess_property_type","write_PropertySet","RE","hdr","piao","prop","pr","pio","unshift","pinfo","parse_PropertySetStream","NumSets","FMTID0","FMTID1","Offset0","Offset1","SystemIdentifier","PSet1","PSet0","rval","FMTID","write_PropertySetStream","entries2","clsid2","ps0","ps1","parsenoop2","writebool","parseuint16","writeuint16","parseuint16a","parslurp","write_Bes","parse_ShortXLUnicodeString","cch","parse_XLUnicodeRichExtendedString","cbExtRst","fExtSt","fRichSt","width","cRun","write_XLUnicodeRichExtendedString","xlstr","otext","parse_XLUnicodeStringNoCch","parse_XLUnicodeString","parse_XLUnicodeString2","write_XLUnicodeString","parse_HyperlinkMoniker","extra","parse_URLMoniker","cAnti","preamble","ansiPath","parse_FileMoniker","parse_HyperlinkString","write_HyperlinkString","parse_LongRGBA","parse_LongRGB","parse_XLSCell","ixfe","write_XLSCell","parse_XTI","parse_RkRec","parse_Ref8U","rwFirst","rwLast","write_Ref8U","parse_RefU","parse_Ref","parse_FtCmo","ot","parse_FtSkip","FtTab","cf","fSharedNote","parse_BOF","BIFFVer","write_BOF","wb","write_BoundSheet8","hs","parse_DefaultRowHeight","miyRw","Unsynced","DyZero","ExAsc","ExDsc","write_Format","b5","parse_BIFF2Format","parse_Dimensions","write_XF","ixfeP","parse_BoolErr","parse_Bes","parse_XLHeaderFooter","parse_ExternName","fBuiltIn","fWantAdvise","fWantPict","fOle","fOleLink","fIcon","sbcch","udfName","parse_AddinUdf","Name","parse_Lbl","chKey","cce","itab","npflen","rgce","rgcb","parse_Rgce","parse_RgbExtra","parse_NameParsedFormula","parse_ExternSheet","parse_BIFF5ExternSheet","parse_Array","ref","parse_ArrayParsedFormula","parse_BIFF5OT","cchName","write_HLink","hl","hashidx","Pretarget","write_Hyperlink","write_HLinkTooltip","Tooltip","parse_ColInfo","cellStyles","colFirst","colLast","coldx","level","parse_Blank","parse_Scl","parse_String","DBF_SUPPORTED_VERSIONS","DBF","dbf_codepage_map","100","101","102","103","104","106","107","120","121","122","123","124","125","126","150","151","152","200","201","202","203","87","88","89","108","135","dbf_reverse_map","dbf_to_sheet","ft","vfp","l7","nrow","fpos","rlen","current_cp","codepage","fields","field","hend","sheetRows","dbf_to_aoa","wch","_RLEN","?","","to_workbook","to_sheet","from_sheet","aoa","sheet_to_json","headers","cols","hcnt","coltypes","colwidths","coldecimals","guess","_guess","hf","hb","rout","_n","_s","SYLK","sylk_escapes","AA","BA","CA","DA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","Aa","Ba","Ca","Da","Ha","Ja","Ae","Be","Ce","He","Ai","Bi","Ci","Hi","Ao","Bo","Co","Do","Ho","Au","Bu","Cu","Hu","KC","Kc","DN","Dn","Hy","B ","!","\"","#","(","%","'","H ","+",";","<","=",">","{","sylk_char_regex","sylk_char_fn","decode_sylk_char","newcc","sylk_to_aoa_str","records","rj","formats","next_cell_format","sht","rowinfo","colinfo","cw","Mval","Workbook","WBProps","Names","rstr","record","d1904","nn","Sheet","Ref","rc_to_a1","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","cell_t","cellText","shrbase","shift_formula_str","F_seen","hidden","hpt","hpx","pt2px","process_col","write_ws_cell_sylk","a1_to_rc","aoasht","sylk_to_aoa","outwb","RS","rec","wpx","width2px","px2char","write_ws_cols_sylk","rows","px2pt","write_ws_rows_sylk","coord","DIF","dif_to_aoa_str","dif_to_sheet","dif_to_aoa","push_field","topic","push_value","ETH","eth_to_sheet","eth_to_aoa","sep","sheet_to_eth_data","PRN","set_text_arr","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","FS","sepcc","startcc","_re","dateNF_regex","finish_cell","fuzzyfmla","Y","datestr","timestr","dateNF_fix","cellNF","outer","prn_to_sheet_str","lines","prn_to_aoa_str","prn_to_sheet","firstbyte","WK_","lotushopper","Enum","WK1Enum","lotus_to_workbook_buf","next_n","sidx","snames","realnames","refguess","book_append_sheet","delta","qpw_to_workbook_buf","vers","qpro","works","works2","tmpcell","WK3Enum","osheets","rnames","!ref","parse_cell","write_LABEL","write_INTEGER","write_NUMBER","wk1_parse_rc","FuncTab","83","109","111","BinOpTab","parse_cell_3","write_LABEL_16","wsidx","parse_NUMBER_17","v1","v2","write_NUMBER_17","log2","parse_NUMBER_27","parse_SHEETNAMECS","write_XFORMAT_SHEETNAME","argc","argL","argR","wk1_fmla_to_csf","142","147","153","154","155","156","174","175","176","184","185","187","188","195","205","206","207","208","256","259","260","261","262","263","265","266","267","268","270","271","384","389","390","393","396","512","514","513","516","517","640","641","642","643","644","645","646","647","648","658","659","660","661","662","665","666","768","772","1537","1600","1602","1793","1794","1795","1796","1920","2048","2049","2052","2688","10998","12849","28233","28484","sheet_to_wk1","write_biff_rec","write_BOF_WK1","write_RANGE","max_R","book_to_wk3","wscnt","write_BOF_WK3","parse_rs","tregex","rpregex","parse_r","rpr","font","pass","shadow","outline","strike","uval","family","valign","parse_rpr","rregex","rend","rs","rs_to_html","nlregex","r_to_html","terms","intro","outro","align","parse_rpr2","sitregex","sirregex","sirphregex","parse_si","cellHTML","sstr0","sstr1","sstr2","straywsregex","write_BrtSSTItem","write_sst_bin","sst","Count","Unique","write_BrtBeginSst","_JS2ANSI","parse_CRYPTOVersion","Major","Minor","parse_DataSpaceMapEntry","comps","parse_Primary","parse_TransformInfoHeader","ename","cmode","parse_EncryptionHeader","Flags","AlgID","valid","AlgIDHash","KeySize","ProviderType","CSPName","parse_EncryptionVerifier","Salt","Verifier","VerifierHash","parse_EncryptionInfo","verifier","parse_EncInfoStd","parse_EncInfoExt","KeyData","encryptedHmacKey","encryptedHmacValue","encs","uri","parse_EncInfoAgl","crypto_CreatePasswordVerifier_Method1","Password","PasswordArray","PasswordByte","PasswordDecoded","crypto_CreateXorArray_Method1","PadArray","InitialCode","XorMatrix","XorRor","byte1","byte2","Byte","Ror","password","Temp","PasswordLastChar","PadIndex","XorKey","CurrentElement","Char","CreateXorKey_Method1","Index","ObfuscationArray","crypto_MakeXorDecryptor","XorArrayIndex","XorArray","Data","Value","crypto_DecryptData_Method1","parse_FilePassHeader","Info","EncryptionVersionInfo","EncryptedVerifier","EncryptedVerifierHash","parse_RC4Header","EncryptionHeader","EncryptionVerifier","parse_RC4CryptoHeader","rtf_to_sheet_str","rowtf","rtfre","last_index","rtf_to_workbook","rtf_to_sheet","rgb2Hex","rgb_tint","hsl","H6","L2","rgb2HSL","hex2RGB","X","h6","hsl2RGB","DEF_MDW","MAX_MDW","MIN_MDW","MDW","char2width","chr","cycle_width","collw","find_mdw_colw","_MDW","coll","customWidth","PPI","pt","XLMLPatternTypeMap","None","Solid","Gray50","Gray75","Gray25","HorzStripe","VertStripe","ReverseDiagStripe","DiagStripe","DiagCross","ThickDiagCross","ThinHorzStripe","ThinVertStripe","ThinReverseDiagStripe","ThinHorzCross","cellXF_uint","cellXF_bool","parse_sty_xml","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","themes","NumberFmt","formatCode","parse_numFmts","Fonts","bold","italic","underline","condense","extend","vertAlign","scheme","indexed","icv","themeElements","clrScheme","parse_fonts","Fills","patternType","bgColor","fgColor","parse_fills","Borders","border","diagonalUp","diagonalDown","parse_borders","xf","CellXf","alignment","vertical","horizontal","textRotation","indent","wrapText","parse_cellXfs","write_sty_xml","toXml","NF","write_numFmts","cellXfs","write_cellXfs","write_BrtFmt","write_BrtFont","grbit","write_FontFlags","sss","charset","rev_XLSBFillPTNames","XLSBFillPTNames","parse_BrtFill","write_BrtFill","fls","write_BrtXF","write_Blxf","parse_BrtBorder","write_BORDERS_bin","write_BrtBorder","write_STYLES_bin","xfId","builtinId","write_BrtStyle","write_TABLESTYLES_bin","defTableStyle","defPivotStyle","write_BrtBeginTableStyles","write_sty_bin","write_FMTS_bin","write_FONTS_bin","write_FILLS_bin","fontId","fillId","borderId","write_CELLSTYLEXFS_bin","write_CELLXFS_bin","write_DXFS_bin","XLSXThemeClrScheme","clrsregex","fntsregex","fmtsregex","parse_themeElements","lastClr","themeltregex","parse_theme_xml","write_theme","Themes","themeXLSX","parse_FullColorExt","xclrType","nTintShade","xclrValue","parse_IcvXF","parse_ColorTheme","parse_ExtProp","extType","parse_XFExtGradient","update_xfext","xfext","xfe","write_xlmeta_bin","write_BrtMdtinfo","write_BrtBeginEsfmd","cm","write_BrtBeginEsmdb","write_BrtMdb","write_vml","csize","bbox","xmlns:v","xmlns:o","xmlns:x","xmlns:mv","v:ext","_shapeid","_comments","joinstyle","gradientshapeok","o:connecttype","coordsize","o:spt","fillopts","color2","angle","fillxml","fillcolor","strokecolor","obscured","write_vml_comment","sheet_insert_comments","threaded","people","comment","author","write_comments_xml","iauthor","ID","lastauthor","ts","write_tcmnt_xml","carr","rootid","tcopts","tcid","parentId","personId","parse_BrtCommentAuthor","write_comments_bin","write_BrtCommentAuthor","write_BrtBeginComment","CT_VBA","VBAFMTS","rcregex","rcbase","rcfunc","fstr","crefregex","$0","$4","$5","shift_formula_xlsx","_xlfn","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_PtgAttrBaxcel","bitSemi","parse_PtgAttrSpaceType","parse_SerAr","parse_PtgExtraMem","parse_PtgExtraArray","parse_PtgElfLoc","fQuoted","parse_RgceElfLoc","parse_PtgElfNoop","parse_PtgElfLel","PtgListRT","PtgTypes","iftab","FtabArgc","Ftab","cparams","tab","parsetab","Cetab","nameindex","rl","parse_RgceLocRel_BIFF2","cl","parse_RgceLocRel","parse_RgceAreaRel","ixti","parse_PtgNameX_BIFF5","PtgDupes","96","97","98","99","110","91","92","93","Ptg18","coltype","Ptg19","bitIf","bitGoto","ptgs","stringify_array","PtgBinOp","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","make_3d_range","get_ixti_raw","supbooks","XTI","SID","get_ixti","ixtiraw","stringify_formula","stack","nameidx","last_sp","sp","fflen","func","lbl","xlfn","externbook","bookidx","ixtidata","lp","rp","sharedf","parsedf","fnd","arrayf","_left","parse_Formula","parse_FormulaValue","cbf","parse_XLSCellParsedFormula","write_Formula","os","o1","write_FormulaValue","o3","bf","parse_XLSBParsedFormula","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","write_XLSBFormulaNum","oint","write_XLSBNameParsedFormula","write_XLSBFormulaBool","write_XLSBFormulaErr","write_XLSBFormulaRef","_str","write_XLSBFormulaRange","lastbang","write_XLSBFormulaArea3D","write_XLSBFormulaRef3D","write_XLSBFormulaRangeWS","write_XLSBFormulaRefErr3D","postamble","write_XLSBFormulaStr","85","94","95","112","113","114","115","116","117","118","119","127","131","132","133","137","138","139","140","143","144","145","146","148","149","159","164","166","167","168","169","170","171","172","173","189","190","191","192","193","194","196","197","198","199","209","210","211","212","214","215","217","219","220","223","224","225","226","227","228","229","240","243","249","250","251","252","253","254","269","272","273","274","276","277","278","279","280","281","282","283","284","285","288","289","290","291","292","293","295","296","297","298","302","305","306","307","308","309","310","311","312","313","314","315","316","318","319","320","321","322","323","324","325","328","330","336","338","339","342","343","344","350","352","355","356","370","373","374","375","376","377","378","379","380","381","382","383","385","386","388","391","392","394","395","397","398","399","400","412","413","414","415","416","417","421","422","423","424","425","430","431","432","433","434","435","436","437","438","439","440","441","442","443","444","445","446","447","448","449","450","451","452","453","454","455","456","458","459","460","461","462","463","464","465","466","467","468","469","470","471","472","473","474","475","476","477","478","480","481","482","485","489","491","493","494","495","509","510","511","518","519","520","521","522","523","545","546","547","548","549","620","621","653","667","673","753","755","808","141","157","158","160","165","179","180","181","182","183","221","230","231","232","233","234","235","236","237","239","241","242","244","245","246","247","248","257","258","264","275","286","287","294","299","300","301","303","304","317","326","327","329","331","332","334","335","337","340","341","345","346","347","348","349","353","357","359","360","361","362","363","364","365","366","367","368","369","371","372","387","401","402","403","404","405","406","407","408","409","410","411","418","419","426","427","428","429","457","724","479","483","484","ods_to_csf_formula","csf_to_ods_formula","ods_to_csf_3D","csf_to_ods_3D","_ssfopts","browser_has_Map","get_sst_id","revarr","col_obj_w","outlineLevel","default_margins","margins","defs","right","top","bottom","footer","get_cell_style","numFmt","addStyle","revssf","ssf","applyNumberFormat","safe_format","fillid","raw_rgb","check_ws","mergecregex","sheetdataregex","hlinkregex","dimregex","colregex","afregex","marginregex","sheetprregex","sheetprregex2","svsregex","parse_ws_xml","data1","data2","mtch","sheetPr","parse_ws_xml_sheetpr","parse_ws_xml_sheetpr2","parse_ws_xml_dim","svs","Views","sviewregex","zoomScale","zoom","rightToLeft","RTL","parse_ws_xml_sheetviews","columns","seencol","coli","colm","colM","parse_ws_xml_cols","parse_ws_xml_data","afilter","parse_ws_xml_autofilter","merges","_merge","hlink","location","Rel","tooltip","rng","parse_ws_xml_hlinks","margin","parse_ws_xml_margins","tmpref","codeName","CodeName","sheetprot_deffalse","sheetprot_deftrue","write_ws_xml_cell","oldt","oldv","bookSST","Strings","revStrings","cellregex","rowregex","isregex","refregex","match_v","match_f","sdata","sstr","ftag","cells","cref","tagr","tagc","do_format","rowobj","rowrite","marr","marrlen","xlen","rstarti","outa","ht","rslice","cellFormula","___f","_tag","xlmeta","Cell","_r","write_ws_xml","xmlns:r","rdata","_drawing","needed","vbaraw","cname","outlineprops","summaryBelow","summaryRight","above","write_ws_xml_sheetpr","sview","workbookViewId","write_ws_xml_sheetviews","sheetFormat","defaultRowHeight","baseColWidth","outlineLevelRow","write_ws_xml_cols","params","height","_cell","customHeight","write_ws_xml_data","write_ws_xml_protection","write_ws_xml_autofilter","write_ws_xml_merges","relc","write_ws_xml_margins","ignoreEC","numberStoredAsText","sqref","r:id","write_row_header","ncolspan","lcs","caddr","first","write_BrtRowHdr","parse_BrtWsDim","write_BrtWsDim","parse_BrtShortReal","parse_BrtMergeCell","write_BrtMergeCell","BrtMarginKeys","write_ws_bin_cell","last_seen","ncell","write_BrtShortIsst","write_BrtCellIsst","write_BrtShortSt","write_BrtCellSt","write_BrtShortRk","write_BrtCellRk","write_BrtShortReal","write_BrtCellReal","write_BrtShortBool","write_BrtCellBool","write_BrtShortError","write_BrtCellError","write_BrtShortBlank","write_BrtCellBlank","write_MERGECELLS","write_BrtBeginMergeCells","write_COLINFOS","write_BrtColInfo","write_IGNOREECS","write_BrtCellIgnoreEC","write_HLINKS","locidx","write_BrtHLink","write_WSVIEWS2","write_BrtBeginWsView","write_SHEETPROTECT","write_BrtSheetProtection","write_ws_bin","write_BrtWsProp","cap","write_CELLTABLE","write_AUTOFILTER","write_BrtMargins","write_LEGACYDRAWING","parse_chart","csheet","!type","nc","nf","parse_Cache","WBPropsDef","WBViewDef","SheetDef","CalcPrDef","push_defaults_array","defaults","push_defaults","parse_wb_defaults","CalcPr","WBView","badchars","check_ws_name","_good","check_wb","N","codes","cn","check_wb_names","dn","wbnsregex","write_BrtBundleSh","Hidden","iTabID","strRelID","parse_BrtFRTArchID$","ArchID","write_BOOKVIEWS","vistab","write_BrtBookView","write_BRTNAMES","dname","Comment","write_BrtName","write_EXTERNALS_xlsb","write_SELF_EXTERNS_xlsb","write_wb_bin","write_BrtFileVersion","filterPrivacy","write_BrtWbProp","write_BUNDLESHS","parse_wb","Ptg","parse_wb_bin","dnstart","localSheetId","parse_wb_xml","parse_ws","ai","af","vm","RR","aii","relId","rfx","parse_ws_bin","parse_cs","!drawel","!rel","parse_cs_bin","parse_cs_xml","parse_sty","parse_sty_bin","parse_sst","parse_sst_bin","uniqueCount","parse_sst_xml","parse_cmnt","authors","parse_comments_bin","commentList","authtag","cmnttag","authorId","guid","textMatch","parse_comments_xml","parse_cc","parse_cc_bin","parse_cc_xml","parse_xlink","parse_xlink_bin","parse_xlmeta","Types","metatype","parse_xlmeta_bin","lastmeta","offsets","parse_xlmeta_xml","XLMLFormatMap","attregexg2","attregex2","xlml_parsexmltag","words","xlml_parsexmltagobj","xlml_set_custprop","Custprops","oval","safe_format_xlml","xlml_format","process_style_xlml","stag","Interior","I","Pattern","parse_xlml_data","csty","sid","StyleID","interiors","Parent","UTC","Formula","ArrayRange","xlml_prefix_dname","xlml_clean_comment","parse_xlml_xml","Rn","opening","ishtml","_o","html_to_sheet","html_to_workbook","General Number","General Date","Long Date","Medium Date","Short Date","Long Time","Medium Time","Short Time","Currency","Fixed","Standard","Percent","Scientific","Yes/No","True/False","On/Off","sheetnames","cursheet","sheetname","dtag","didx","fidx","pidx","cstys","wsprops","raw_Rn3","HRef","HRefScreenTip","MergeAcross","MergeDown","cma","cmd","AutoFitHeight","Height","Format","ssfidx","Width","_col","Span","_NamedRange","_DefinedName","RefersTo","AutoFilter","Range","parse_fods","Margin","pagemargins","Top","Left","Right","Bottom","bookSheets","bookProps","parse_xlml","fix_read_opts","write_props_xlml","xlml_write_docprops","BLACKLIST","dt:dt","xlml_write_custprops","write_name_xlml","ss:Name","ss:RefersTo","write_ws_xlml_cell","attr","mi","escapexlml","_v","xlml_unfixstr","ss:Author","write_ws_xlml_comment","write_ws_xlml_row","write_ws_xlml","write_ws_xlml_names","ss:Index","skip","write_ws_xlml_table","x:Margin","x:Bottom","x:Left","x:Right","x:Top","objects","scenarios","selectLockedCells","selectUnlockedCells","write_ws_xlml_wsopts","write_xlml","General","write_wb_xlml","ss:Format","ss:ID","write_sty_xlml","write_names_xlml","xmlns:ss","xmlns:dt","xmlns:html","parse_compobj","AnsiUserType","AnsiClipboardFormat","parse_ClipboardFormatOrAnsiString","Reserved1","UnicodeClipboardFormat","parse_ClipboardFormatOrUnicodeString","Reserved2","CONTINUE_RT","slurp","RecordType","insitu","nextrt","XLSRecordEnum","ll","safe_format_xf","make_cell","parse_workbook","lastcell","cmnt","rngC","rngR","temp_val","country","Directory","last_formula","cur_sheet","Preamble","last_cell","XFs","palette","get_rgb","addcell","file_depth","xfd","icvFore","icvBack","process_cell_style","afi","rrtabid","lastuser","winlocked","wtf","last_lbl","last_RT","BIFF2Fmt","BIFF2FmtTable","FilterDatabases","seen_codepage","Date1904","WriteProtect","cpval","CalcRefMode","FullCalc","fDialog","fBelow","fRight","ExternCount","tmpri","1033","1024","1280","1536","biffguess","fakebs8","rknum","rkrec","_fr","_fc","_fe","_arraystart","isst","_j","_ixfe","b4idx","b2idx","cmo","lastobj","TxO","ImData","noteobj","Encryption","Metadata","Country","PSCLSID","SI","DSI","UDI","parse_xlscfb","CompObj","WorkbookP","bookVBA","newcfb","newpath","make_vba_xls","DocSummary","Summary","HeadingPairs","TitlesOfParts","parse_xls_props","bookFiles","write_xlscfb","wbpath","write_biff_buf","Keys","DSEntries","SEntries","CEntries","DocSummaryRE","SummaryRE","CEntries2","write_xls_props","vba","fill_vba_xls","fBold","fItalic","fUnderline","fStrikeout","fOutline","fShadow","fCondense","fExtend","parse_FontFlags","bCharSet","xColorType","bR","bG","bB","parse_BrtColor","ixfeParent","ifmt","defaultThemeVersion","strName","autoCompressPictures","backupFile","checkCompatibility","hidePivotFieldList","promptedSolutions","publishItems","refreshAllConnections","saveExternalLinkValues","showBorderUnselectedTables","showInkAnnotation","showObjects","showPivotChartFilter","updateLinks","333","fAlwaysCalc","486","487","488","490","492","496","497","498","499","500","501","502","503","504","505","506","507","508","515","524","525","526","527","528","529","530","531","532","533","534","535","536","537","538","539","540","541","542","550","551","552","553","554","555","556","557","558","559","560","561","562","564","565","566","569","570","572","573","574","577","578","579","580","581","582","583","584","585","586","587","588","589","590","591","592","593","594","595","596","597","598","599","600","601","602","603","604","605","606","607","608","609","610","611","612","613","614","615","616","617","618","619","625","626","627","628","629","630","631","632","633","634","635","636","637","638","639","649","650","651","652","654","655","656","657","663","664","668","669","671","672","674","675","676","677","678","679","680","681","1025","1026","1027","1028","1029","1030","1031","1032","1034","1035","1036","1037","1038","1039","1040","1041","1042","1043","1044","1045","1046","1047","1048","1049","1050","1051","1052","1053","1054","1055","1056","1057","1058","1059","1061","1062","1063","1064","1065","1066","1067","1068","1069","1070","1071","1072","1073","1075","1076","1077","1078","1079","1080","1081","1082","1083","1084","1085","1086","1087","1088","1089","1090","1091","1092","1093","1094","1095","1096","1097","1098","1099","1100","1101","1102","1103","1104","1105","1111","1112","1113","1114","1115","1116","1117","1118","1119","1120","1121","1122","1123","1124","1125","1126","1128","1129","1130","1131","1132","1133","1134","1135","1136","1137","1138","1139","1140","1141","1142","1143","1144","1145","1146","1147","1148","1149","1150","1152","1153","1154","1155","1156","1157","1158","1159","1160","1161","1162","1163","1164","1165","1166","1167","1168","1169","1170","1171","1172","1173","1177","1178","1180","1181","1182","2050","2051","2053","2054","2055","2056","2057","2058","2060","2067","2068","2069","2070","2071","2072","2073","2075","2076","2077","2078","2079","2080","2081","2082","2083","2084","2085","2086","2087","2088","2089","2090","2091","2092","2093","2094","2095","2096","2097","2098","2099","2100","2101","2102","2103","2104","2105","2106","2107","2108","2109","2110","2111","2112","2113","2114","2115","2116","2117","2118","2119","2120","2121","2122","2123","2124","2125","2126","2127","2128","2129","2130","2131","2132","2133","2134","2135","2136","2137","2138","2139","2140","2141","3072","3073","4096","4097","5002","5003","5081","5082","5083","5084","5085","5086","5087","5088","5089","5090","5092","5093","5094","5095","5096","5097","5099","idObj","stAuthor","parse_NoteSh","verificationBytes","parse_XORObfuscation","dyHeight","fl","Pos","Dim","CurTab","FirstTab","Selected","TabRatio","UserName","fts","parse_BIFF5Obj","parse_FtArray","ccv","rw","rkrecs","lastcol","ixfes","fStyle","alc","fWrap","alcV","fJustLast","trot","cIndent","fShrinkToFit","iReadOrder","fAtrNum","fAtrFnt","fAtrAlc","fAtrBdr","fAtrPat","fAtrProt","dgLeft","dgRight","dgTop","dgBottom","icvLeft","icvRight","grbitDiag","icvTop","icvBottom","icvDiag","dgDiag","fsxButton","parse_CellStyleXF","cmcs","ucnt","extsst","dsst","ctab","virtPath","rgst","texts","parse_ControlInfo","cchText","sVer","displayName","targetFrameName","moniker","oleMoniker","fileTime","Loc","parse_Hyperlink","xnum","1212","cUse","parse_SharedParsedFormula","wzTooltip","2059","2061","2062","2063","2064","2066","2146","2147","2148","2149","2150","2151","2152","2154","2155","2156","2161","2162","2164","2165","2166","2167","2168","2169","2170","2171","2172","cxfs","crc","2173","cexts","2174","2175","2180","2181","2182","2183","2184","2185","2186","2187","2188","2189","2190","2191","2192","2194","2195","2196","cchComment","2197","2198","themeXML","2199","2200","2201","2202","2203","2204","2205","2206","2207","2211","parse_frtHeader","2212","2213","2214","2215","4098","4099","4102","4103","4105","4106","4107","4108","4109","4116","4117","4118","4119","4120","4121","4122","4123","4124","4125","4126","4127","4128","4129","4130","4132","4133","4134","4135","4146","4147","4148","4149","4154","4156","4157","4158","4159","4160","4161","4163","4164","area","4165","4166","4168","4170","4171","4174","4175","4176","4177","4187","4188","4189","4191","4192","4193","4194","4195","4196","4197","4198","4199","4200","lcb","2157","2163","2177","2240","2241","2242","2243","2244","2245","2246","2247","2248","2249","2250","2251","2262","29282","write_BIFF2Cell","write_ws_biff2_cell","write_BIFF2INT","write_BIFF2NUM","write_BIFF2BERR","write_BIFF2LABEL","write_biff2_buf","write_ws_biff2","write_FONTS_biff8","write_Font","write_ws_cols_biff8","write_ColInfo","write_ws_biff8_cell","write_Number","write_BoolErr","write_LabelSst","b8","write_Label","write_ws_biff8","_WB","_sheet","MAX_ROWS","guts","write_Guts","write_Dimensions","write_Window2","write_MergeCells","HL","write_ws_biff8_hlinks","write_FEAT","write_biff8_global","_sheets","_wb","writezeroes","write_WriteAccess","write_RRTabId","write_Window1","safe1904","write_FMTS_biff8","write_CELLXFS_biff8","write_Country","write_biff_continue","write_SST","blen","fix_write_opts","write_biff8_buf","mtch2","hd","midx","colspan","rowspan","make_html_row","editable","HTML_BEGIN","HTML_END","make_html_preamble","sheet_to_html","sheet_add_dom","tagName","or_R","or_C","is_dom_element_hidden","elts","hasAttribute","getAttribute","innerHTML","Aelts","getElementsByTagName","Aelti","parse_dom_table","get_computed_style","ownerDocument","defaultView","getComputedStyle","get_get_computed_style_function","getPropertyValue","parse_text_p","fixed","parse_ods_styles","_nfm","number_format_map","NFtag","tNF","etpos","tidx","parse_content_xml","nfidx","sheetag","rowtag","ctag","textp","textpidx","textR","row_ol","mrange","rowpeat","colpeat","atag","_Ref","creator","creatoridx","isstub","intable","baddate","rptR","rpt","xlmlidx","styletag","nrange","ptp","parse_ods","FEtag","parse_manifest","Styles","write_styles_ods","master_styles","xmlns:office","xmlns:table","xmlns:style","xmlns:text","xmlns:draw","xmlns:fo","xmlns:xlink","xmlns:number","xmlns:svg","xmlns:of","office:version","write_number_format_ods","nopts","style:name","number:min-integer-digits","number:min-numerator-digits","number:max-denominator-value","number:denominator-value","number:decimal-places","number:min-decimal-places","has_time","np","write_names_ods","scoped","odsref","table:name","table:cell-range-address","table:base-cell-address","write_content_ods","write_text_p","null_cell_xml","write_ws","nfs","ods","ROWS","_Fref","text_p","_tgt","xlink:href","xmlns:meta","xmlns:presentation","xmlns:chart","xmlns:dr3d","xmlns:math","xmlns:form","xmlns:script","xmlns:ooo","xmlns:ooow","xmlns:oooc","xmlns:dom","xmlns:xforms","xmlns:sheet","xmlns:rpt","xmlns:xhtml","xmlns:grddl","xmlns:tableooo","xmlns:drawooo","xmlns:calcext","xmlns:loext","xmlns:field","xmlns:formx","xmlns:css3t","fods","xmlns:config","office:mimetype","cidx","colobj","nfi","write_automatic_styles_ods","write_ods","manifest","rdf","write_rdf","write_manifest","u8_to_dataview","u8str","u8","stru8","u8concat","u8a","acc","popcnt","parse_varint49","ptr","varint","write_varint49","varint_to_i32","i32","parse_shallow","write_shallow","item","mappa","parse_iwa_file","_a","messages","merge","write_iwa_file","ias","ia","midata","aipayload","mid","parse_snappy_chunk","chunks","decompress_iwa_file","compress_iwa_file","frame","parse_new_storage","rsst","dv","data_offset","d128","ieee","mantissa","readDecimal128LE","write_new_storage","writeDecimal128LE","write_old_storage","parse_cell_storage","parse_old_storage","parse_TSP_Reference","parse_TST_TableDataList","pb","le","rtp","rtpref","mtype","tswpsa","parse_TST_Tile","_c","_e","_g","_h","_m","used_storage_u8","used_storage","wide_offsets","used_storage_offsets","parse_TST_TileRowInfo","nrows","parse_TST_TableInfoArchive","tableref","tl","ref2","mtype2","_tile","pi","parse_TST_TableModelArchive","parse_TN_DocumentArchive","root2","parse_TN_SheetArchive","parse_numbers_iwa","indices","packets","packet","docroot","iwam","write_tile_row","tri","wide","new_7","new_4","last_offset","cell_storage","_dv","_last_offset","_cell_storage","celload","_celload","USE_WIDE_ROWS","write_numbers_iwa","numbers","trunc","dependents","packet2","deps","x2","indices_varint","ivi","mess","search","u8contains","xi","sheetrootref","sheetref","cruidsref","oldbucket","_x","cruids","row_header_ref","base_bucket","_bucket","col_header_ref","mergeid","dep","get_unique_msgid","mergedata","write_TSP_Reference","write_iwam","sstref","sentry","sstroot","sx","sxi","sstdata","tile","tileref","tentry","tileroot","tx","tiledata","rowload","R2","tilerow","fix_opts_func","safe_parse_wbrels","wbrels","get_sheet_type","safe_parse_sheet","relsPath","sheetRels","stype","dfile","drelsp","chartp","parse_drawing","crelsp","parse_ms","parse_ds","tcomments","parse_tcmnt_xml","strip_front_slash","_zip","getzipbin","index_zip","Bun","readSync","binname","threadedcomments","links","coreprops","extprops","custprops","calcchains","drawings","TODO","ctext","calcchain","parse_ct","link","propdata","parse_ext_props","toks","warn","parse_cust_props","bookDeps","wbsheets","wbext","wbrelsi","wbrelsfile","displayname","parse_people_xml","nmode","wsloop","snjseen","snj","Deps","bin","parse_xlsxcfb","parse_DataSpaceVersionInfo","dsm","parse_DataSpaceMap","seds","parse_DataSpaceDefinition","einfo","decrypt_agile","decrypt_std76","write_zip_xlsx","vbafmt","_sn","wsrels","_type","draw_rels","sId","need_vml","needtc","rId1","sitag","write_sst_xml","write_names","workbookPr","sheetId","write_wb_xml","write_xlmeta_xml","person","userId","providerId","write_people_xml","read_plaintext","main","read_prn","infile","read_binary","bstrify","ab","vu","read_cfb","OLD_WTF","read_wb_ID","read_zip","read_utf16","read_plaintext_raw","write_cfb_ctr","write_zip_xlsb","write_zip_denouement","StyleBuilder","oopts","ftype","nodebuffer","generate","encrypt_agile","write_string_type","bom","write_stxt_type","Base64_encode_pass","write_binary_type","writeSyncXLSX","write_zip_typeXLSX","writeSync","sheet_to_txt","sheet_to_csv","sheet_to_rtf","write_cfb_type","write_zip_type","resolve_book_type","xls","slk","socialcalc","Sh33tJS","make_json_row","defval","isempty","__rowNum__","rawNumbers","outi","header_cnt","skipHidden","blankrows","qreg","make_csv_row","txt","forceQuotes","endregex","strip","sheet_add_json","js","skipHeader","JS","ROW","ws_get_cell_stub","RC","book_new","roll","cell_set_hyperlink","_Readable","split_cell","json_to_sheet","table_to_sheet","table_to_book","sheet_to_formulae","cmds","sheet_to_row_object_array","sheet_get_cell","book_set_sheet_visibility","sh","vis","wb_sheet_idx","cell_set_number_format","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","dynamic","rngstr","wsr","SHEET_VISIBLE","SHEET_HIDDEN","SHEET_VERY_HIDDEN","__stream","to_json","stream","objectMode","_read","to_html","to_csv","BOM","set_readable","XmlNode","attributes","children","_attributes","_children","_prefix","append","prefix","escapeAttributeValue","att_value","customNumFmtId","fmt_table","_hashIndex","initialize","$fonts","$fills","$borders","$numFmts","$cellStyleXfs","$xf","$cellXfs","$cellStyles","$dxfs","$tableStyles","$styles","defaultStyle","defaultCellStyle","gray125Style","addStyles","hashKey","_addXf","_duckTypeStyle","patternFill","_getStyleCSS","css","_addFont","_addFill","_addBorder","_addNumFmt","$alignment","readingOrder","$font","numFmtIdx","$numFmt","$patternFill","$fgColor","$bgColor","$fill","_getSubBorder","direction","spec","$direction","$color","$border","readFile","writeFileAsync","_cb","writeXLSX","writeFileXLSX","make_xlsx_lib","webpackPolyfill","deprecate","paths","__WEBPACK_AMD_DEFINE_RESULT__","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","INVALID_TEMPL_VAR_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","\\","\n","\r","
","
","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","types","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","arrayAggregator","iteratee","accumulator","arrayEach","arrayEachRight","resIndex","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","initAccum","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","current","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","ś","ŝ","ş","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ź","Ż","ź","ż","IJ","ij","ʼn","ſ","escapeHtmlChar","&","escapeStringChar","hasUnicode","mapToArray","overArg","transform","replaceHolders","placeholder","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","'","runInContext","context","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","nativeObjectToString","objectCtorString","oldDash","reIsNative","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","copySymbols","Ctor","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","cloneRegExp","symbol","cloneSymbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","computed","valuesIndex","templateSettings","escape","evaluate","interpolate","variable","imports","getMapData","pairs","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","isMasked","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","criteria","objCriteria","othCriteria","ordersLength","compareAscending","order","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","createCaseFirst","methodName","trailing","createCompounder","callback","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","flatten","otherFunc","isKeyable","getValue","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoize","memoizeCapped","quote","subString","clone","difference","differenceBy","differenceWith","findLastIndex","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bindKey","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","isNumber","isString","lte","toArray","iteratorToArray","remainder","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","omit","basePick","pickBy","toPairs","toPairsIn","camelCase","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","after","castArray","chunk","compact","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","strLength","padEnd","padStart","floating","temp","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","substring","newEnd","unescape","uniqueId","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","getView","iterLength","takeCount","iterIndex","commit","wrapped","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","XMLHttpRequest","responseType","onload","response","onerror","send","status","dispatchEvent","MouseEvent","createEvent","initMouseEvent","HTMLAnchorElement","webkitURL","msSaveOrOpenBlob","autoBom","innerText","HTMLElement","safari","FileReader","onloadend","readAsDataURL","__webpack_exports__","BlobBuilder","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","blobSupported","blobSupportsArrayBufferView","blobBuilderSupported","getBlob","mapArrayBufferViews","BlobBuilderConstructor","bb","part","BlobConstructor","_lodash","make_lay_excel","objectExtend","downloadExl","exportExcel","sheet1","opt","CreatedData","wbExtend","!merges","!margins","!cols","!rows","!protect","!autofilter","sheet_name","is_aoa","option","splitRes","splitContent","mergeCellOpt","writeOpt","wbout","FileSaver","styleContent","lineData","rowIndex","rowData","numToTitle","rowOpt","otherOpt","tableToJson","dom","querySelectorAll","handleLineNode","lineDomList","headDom","bodyDom","numsTitleCache","titleNumsCache","ans","titleToNum","total","getDefaultRange","fieldKeys","startPos","rangeArr","splitPosition","setCellStyle","config","currentRow","currentCol","newCell","setRoundBorder","rangeObj","diagonal","setExportCellStyle","makeMergeConfig","makeColConfig","defaultNum","change","startIndex","currentIndex","makeRowConfig","filterDataToAoaData","filterData","aoaData","itemData","filterExportData","exportData","true_fields","new_field_name","old_field_name","filterImportData","fileindex","importExcel","checkMime","supportReadMime","book","reader","ev","excelData","sheetObj","readAsBinaryString","dateCodeToDate","strPad","padString","repeatCount","exceptStr","dateFormat","YYYY","YY","MM","HH","ii","reg","dateCodeFormat","getUrlSuffix","imageUrlToBase64","canvas","getContext","img","Image","crossOrigin","drawImage","dataURL","toDataURL","layui","define","LAY_EXCEL","regExp","replacer","$re","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","regeneratorRuntime","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","isGeneratorFunction","genFun","ctor","mark","awrap","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","tryLocsList","Context","reset","skipTempReset","sent","_sent","delegate","tryEntries","resetTryEntry","stop","rootRecord","completion","dispatchException","exception","handle","caught","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","abrupt","finallyEntry","complete","afterLoc","finish","catch","thrown","delegateYield","resultName","nextLoc","protoGenerator","generator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","err","unwrapped","previousPromise","callInvokeWithMethodAndArg","return","info","pushTryEntry","locs","iteratorMethod","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","$task","MSIE","boundArgs","setInterval","microtask","OBSERVABLE","cleanupSubscription","subscription","cleanup","subscriptionClosed","closeSubscription","Subscription","observer","subscriber","SubscriptionObserver","unsubscribe","$Observable","subscribe","observable","items","Observable","asap","$metadata","toMetaKey","ordinaryDefineOwnMetadata","metadataKey","metadataValue","ordinaryHasOwnMetadata","hasOwnMetadata","ordinaryHasMetadata","hasMetadata","ordinaryOwnMetadataKeys","getOwnMetadataKeys","ordinaryGetOwnMetadata","getOwnMetadata","ordinaryMetadataKeys","oKeys","pKeys","getMetadataKeys","ordinaryGetMetadata","getMetadata","deleteMetadata","defineMetadata","perform","try","promiseResolve","finally","onFinally","signbit","umulh","$u","$v","u0","v0","u1","DEG_PER_RAD","PI","radians","degrees","RAD_PER_DEG","imulh","isubh","x0","x1","y0","y1","$x0","$y0","iaddh","fscale","__lookupSetter__","__lookupGetter__","__defineGetter__","$values","createProperty","getOwnPropertyDescriptors","getDesc","getFlags","RegExpProto","$RegExpStringIterator","matchAll","rx","$pad","WEBKIT_BUG","$at","arraySpeciesCreate","depthArg","$includes","setProto","propertyKey","existingDescriptor","receiver","ownDesc","$preventExtensions","$isExtensible","Enumerate","enumerate","deleteProperty","rConstruct","NEW_TARGET_BUG","ARGS_BUG","newTarget","$args","rApply","fApply","thisArgument","argumentsList","init","$isView","fin","viewS","viewT","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","newPromiseCapabilityModule","v8","$Promise","empty","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","isReject","ok","reaction","exited","handler","onHandleUnhandled","onUnhandled","unhandled","isUnhandled","onunhandledrejection","reason","onrejectionhandled","$reject","_w","$resolve","executor","onFulfilled","onRejected","capability","all","$index","alreadyCalled","race","advanceStringIndex","callRegExpExec","$min","$push","SUPPORTS_Y","SPLIT","$split","maybeCallNative","internalSplit","lastLength","lastLastIndex","splitLimit","separatorCopy","splitter","unicodeMatching","lim","sameValue","regExpExec","SEARCH","$search","previousLastIndex","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","REPLACE","$replace","searchValue","replaceValue","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","symbols","ch","capture","$match","matchStr","$flags","$RegExp","CORRECT_NEW","tiRE","piRE","fiU","proxy","$find","NEGATIVE_ZERO","$indexOf","$reduce","$every","$some","$filter","$forEach","STRICT","$sort","upTo","cloned","hint","TO_PRIMITIVE","DateProto","$toISOString","lz","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","pv","$startsWith","$endsWith","endPosition","codePointAt","point","callSite","tpl","$fromCodePoint","fromCodePoint","tanh","sinh","log10","$imul","imul","xn","yn","xl","yl","hypot","value1","value2","div","larg","sqrt","cosh","clz32","LOG2E","cbrt","$atanh","atanh","$asinh","asinh","$acosh","acosh","MAX_VALUE","MIN_SAFE_INTEGER","_isFinite","$fails","aNumberValue","$toPrecision","$toFixed","ERROR","numToString","fractionDigits","$Number","BROKEN_COF","TRIM","argument","third","maxCode","digits","HAS_INSTANCE","FunctionProto","FProto","nameRE","$isSealed","$isFrozen","$seal","$freeze","$getPrototypeOf","$getOwnPropertyDescriptor","wksDefine","enumKeys","_create","gOPNExt","$GOPS","$JSON","_stringify","HIDDEN","SymbolRegistry","AllSymbols","OPSymbols","QObject","findChild","setSymbolDesc","protoDesc","sym","$defineProperties","$propertyIsEnumerable","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","for","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","$replacer","_babelPolyfill","DEFINE_PROPERTY"],"mappings":"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A,WACA,cACA,kBACA,gBACA,YACA,UACA,YACA,eACA,UACA,YAmGGC,GAAS1S,GAhGb,SAAgB3sC,GAAO,OAAOA,EAAI/R,IAAI,SAASgc,GAAK,OAASA,GAAG,GAAI,IAAKA,GAAG,EAAG,IAAM,IAAFA,KAIpEq1C,EAEd,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAGA,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAEA,QACA,MACA,IACA,QACA,QACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,MACA,SAEA,IACA,SACA,SACA,MACA,QACA,QACA,MACA,IACA,MACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,MACA,QACA,MACA,QACA,SACA,SACA,QACA,QAGA,EACA,SACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAKGtG,IACJj2B,EAAM,SACN4F,EAAM,UACNrB,GAAM,UACNuB,GAAM,QACNM,GAAM,SACNmL,GAAM,QACNhJ,GAAM,OACNC,GAAM,gBACNtH,IAAM,SAGFs7B,IACHC,SAAiB,EACjBC,UAAiB,EACjBC,UAAiB,GACjBC,QAAiB,GACjBC,SAAiB,GACjBC,QAAiB,GACjBC,OAAiB,GACjBC,gBAAiB,GACjBC,QAAiB,KAGdC,IACH,yBACA,kBACA,mBACA,gBACA,iBACA,iBACA,mBACA,qBACA,iBACA,kBACA,sBACA,wBACA,oBACA,yBAOGC,IAEHC,6EAA8E,YAC9EC,uDAAwD,YACxDC,0DAA2D,YAC3DC,uDAAwD,YACxDC,gFAAiF,YAGjFC,4EAA6E,SAC7EC,qCAAsC,SACtCC,sCAAuC,OAGvCC,6EAA8E,SAC9EC,sCAAuC,SAGvCC,0CAA2C,SAC3CC,sCAAuC,SACvCC,0CAA2C,OAC3CC,sCAAuC,OAGvCC,8EAA+E,UAC/EC,uCAAwC,UAGxCC,gFAAiF,OACjFC,yCAA0C,OAG1CC,yEAA0E,SAC1EC,kCAAmC,SAGnCC,6DA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Lid,IAAK,OACLhd,IAAK,OACLmiB,IAAK,QACLC,IAAK,QACLC,IAAK,SACLC,IAAK,OACLC,IAAK,QACLC,IAAK,QACLC,IAAK,OACLC,IAAK,UACL9xB,IAAK,aACLC,IAAK,OACLC,IAAK,QACLC,IAAK,YACLC,IAAK,OACLC,IAAK,OACLC,IAAK,QACLyxB,IAAK,SACL3oE,IAAK,WACLC,IAAK,UACLC,IAAK,IACL0oE,IAAK,IACLC,IAAK,QACLC,IAAK,SACL3oE,IAAK,QACL23C,IAAK,UACL13C,IAAK,QACL2oE,IAAK,WACLC,IAAK,SACLC,IAAK,OACLC,IAAK,YACL6N,IAAK,YACL9vB,IAAK,MACLkiB,IAAK,MACLC,IAAK,MACLC,IAAK,UACLC,IAAK,UACLpiB,IAAK,UACLqiB,IAAK,WACLC,IAAK,WACLryB,IAAK,OACLC,IAAK,UACLC,IAAK,WACL8P,IAAK,cACLC,IAAK,iBACLC,IAAK,gBACLC,IAAK,iBACL0vB,IAAK,WACLC,IAAK,cACLxN,IAAK,iBACLyN,IAAK,iBACL72E,IAAK,aACLC,IAAK,QACLC,IAAK,UACLmpE,IAAK,WACLyN,IAAK,QACLxN,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,IAAK,aACLC,IAAK,MACLC,IAAK,QACLC,IAAK,QACL3iB,IAAK,OACLC,IAAK,WACLC,IAAK,UACLjnD,IAAK,OACLC,IAAK,UACL22E,IAAK,YACLC,IAAK,UACLC,IAAK,OACLC,IAAK,UACLC,IAAK,UACL9vB,IAAK,OACLC,IAAK,WACLjnD,IAAK,gBACLknD,IAAK,aACLC,IAAK,eACLsiB,IAAK,WACLC,IAAK,YACLC,IAAK,WACLC,IAAK,OACLC,IAAK,SACLC,IAAK,OACL1iB,IAAK,UACL2iB,IAAK,QACLC,IAAK,QACLC,IAAK,YACLC,IAAK,UACLtzB,IAAK,aACLC,IAAK,aACL52C,IAAK,WACLonD,IAAK,QACLC,IAAK,UACLC,IAAK,WACLC,IAAK,QACL2iB,IAAK,SACLC,IAAK,OACLC,IAAK,OACLC,IAAK,UACLlwC,IAAK,YACLm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Q,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,IACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,mCCrMzB,SAAA6B,GAQA,GANA7B,EAAQ,KAERA,EAAQ,KAERA,EAAQ,KAER6B,EAAAgzN,eACA,UAAA5tM,MAAA,kDAEAplB,EAAAgzN,gBAAA,EAEA,IAAAC,EAAA,iBACA,SAAApb,EAAA30M,EAAA1C,EAAAjB,GACA2D,EAAA1C,IAAAvB,OAAAg0N,GAAA/vN,EAAA1C,GACAiQ,UAAA,EACAtR,cAAA,EACAI,UAIAs4M,EAAAl0M,OAAA/D,UAAA,aAAAsrM,UACA2M,EAAAl0M,OAAA/D,UAAA,cAAAqrM,QAEA,gMAAAhnM,MAAA,KAAAqE,QAAA,SAAA9H,MACAA,IAAAq3M,EAAA1tM,MAAA3J,EAAAiB,SAAA/C,KAAAu1B,QAAAzzB","file":"excel.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 344);\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var Map = require('./es6.map');\nvar $export = require('./_export');\nvar shared = require('./_shared')('metadata');\nvar store = shared.store || (shared.store = new (require('./es6.weak-map'))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","module.exports = false;\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = {};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","exports.f = {}.propertyIsEnumerable;\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","'use strict';\n// Forced replacement prototype accessors methods\nmodule.exports = require('./_library') || !require('./_fails')(function () {\n var K = Math.random();\n // In FF throws only define methods\n // eslint-disable-next-line no-undef, no-useless-call\n __defineSetter__.call(null, K, function () { /* empty */ });\n delete require('./_global')[K];\n});\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","// https://rwaldron.github.io/proposal-math-extensions/\nmodule.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {\n if (\n arguments.length === 0\n // eslint-disable-next-line no-self-compare\n || x != x\n // eslint-disable-next-line no-self-compare\n || inLow != inLow\n // eslint-disable-next-line no-self-compare\n || inHigh != inHigh\n // eslint-disable-next-line no-self-compare\n || outLow != outLow\n // eslint-disable-next-line no-self-compare\n || outHigh != outHigh\n ) return NaN;\n if (x === Infinity || x === -Infinity) return x;\n return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","exports.f = require('./_wks');\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","/*! cpexcel.js (C) 2013-present SheetJS -- http://sheetjs.com */\r\n/*jshint -W100 */\r\nvar cptable = {version:\"1.15.0\"};\r\ncptable[437] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[620] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàąçêëèïîćÄĄĘęłôöĆûùŚÖÜ¢Ł¥śƒŹŻóÓńŃźż¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[737] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[850] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[852] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[857] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[861] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[865] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[866] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[874] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[895] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ČüéďäĎŤčěĚĹÍľǪÄÁÉžŽôöÓůÚýÖÜŠĽÝŘťáíóúňŇŮÔšřŕŔ¼§«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[932] = (function(){ var d = [], e = {}, D = [], j;\r\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������\".split(\"\");\r\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\r\nD[129] = \"���������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×�÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯���\".split(\"\");\r\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\r\nD[130] = \"�������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ�������abcdefghijklmnopqrstuvwxyz����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������\".split(\"\");\r\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\r\nD[131] = \"����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\r\nD[132] = \"����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя�������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂�����������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\r\nD[135] = \"����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻�〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪���������������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\r\nD[136] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭���\".split(\"\");\r\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\r\nD[137] = \"����������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円�園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改���\".split(\"\");\r\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\r\nD[138] = \"����������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫�橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄���\".split(\"\");\r\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\r\nD[139] = \"����������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救�朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈���\".split(\"\");\r\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\r\nD[140] = \"����������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨�劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向���\".split(\"\");\r\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\r\nD[141] = \"����������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降�項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷���\".split(\"\");\r\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\r\nD[142] = \"����������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止�死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周���\".split(\"\");\r\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\r\nD[143] = \"����������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾���\".split(\"\");\r\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\r\nD[144] = \"����������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨�逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線���\".split(\"\");\r\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\r\nD[145] = \"����������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻�操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只���\".split(\"\");\r\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\r\nD[146] = \"����������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄�逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓���\".split(\"\");\r\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\r\nD[147] = \"����������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬�凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入���\".split(\"\");\r\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\r\nD[148] = \"����������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅�楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美���\".split(\"\");\r\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\r\nD[149] = \"����������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷�斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋���\".split(\"\");\r\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\r\nD[150] = \"����������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆�摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒���\".split(\"\");\r\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\r\nD[151] = \"����������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲�沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯���\".split(\"\");\r\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\r\nD[152] = \"����������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲���\".split(\"\");\r\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\r\nD[153] = \"����������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭�凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨���\".split(\"\");\r\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\r\nD[154] = \"����������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸�噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩���\".split(\"\");\r\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\r\nD[155] = \"����������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀�它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏���\".split(\"\");\r\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\r\nD[156] = \"����������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠�怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛���\".split(\"\");\r\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\r\nD[157] = \"����������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫�捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼���\".split(\"\");\r\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\r\nD[158] = \"����������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎�梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣���\".split(\"\");\r\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\r\nD[159] = \"����������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌���\".split(\"\");\r\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\r\nD[224] = \"����������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝�烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱���\".split(\"\");\r\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\r\nD[225] = \"����������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿�痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���\".split(\"\");\r\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\r\nD[226] = \"����������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆���\".split(\"\");\r\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\r\nD[227] = \"����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋���\".split(\"\");\r\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\r\nD[228] = \"����������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤�艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���\".split(\"\");\r\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\r\nD[229] = \"����������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬�蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞���\".split(\"\");\r\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\r\nD[230] = \"����������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧�諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊���\".split(\"\");\r\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\r\nD[231] = \"����������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮���\".split(\"\");\r\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\r\nD[232] = \"����������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙�閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰���\".split(\"\");\r\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\r\nD[233] = \"����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃�騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈���\".split(\"\");\r\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\r\nD[234] = \"����������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯�黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙�������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\r\nD[237] = \"����������������������������������������������������������������纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏�塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱���\".split(\"\");\r\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\r\nD[238] = \"����������������������������������������������������������������犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙�蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦'"���\".split(\"\");\r\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\r\nD[250] = \"����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊�兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���\".split(\"\");\r\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\r\nD[251] = \"����������������������������������������������������������������涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神�祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙���\".split(\"\");\r\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\r\nD[252] = \"����������������������������������������������������������������髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\r\nreturn {\"enc\": e, \"dec\": d }; })();\r\ncptable[936] = (function(){ var d = [], e = {}, D = [], j;\r\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\r\nD[129] = \"����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�\".split(\"\");\r\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\r\nD[130] = \"����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�\".split(\"\");\r\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\r\nD[131] = \"����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�\".split(\"\");\r\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\r\nD[132] = \"����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�\".split(\"\");\r\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\r\nD[133] = \"����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�\".split(\"\");\r\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\r\nD[134] = \"����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�\".split(\"\");\r\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\r\nD[135] = \"����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�\".split(\"\");\r\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\r\nD[136] = \"����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�\".split(\"\");\r\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\r\nD[137] = \"����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�\".split(\"\");\r\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\r\nD[138] = \"����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�\".split(\"\");\r\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\r\nD[139] = \"����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�\".split(\"\");\r\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\r\nD[140] = \"����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�\".split(\"\");\r\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\r\nD[141] = \"����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�\".split(\"\");\r\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\r\nD[142] = \"����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�\".split(\"\");\r\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\r\nD[143] = \"����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�\".split(\"\");\r\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\r\nD[144] = \"����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�\".split(\"\");\r\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\r\nD[145] = \"����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�\".split(\"\");\r\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\r\nD[146] = \"����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�\".split(\"\");\r\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\r\nD[147] = \"����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�\".split(\"\");\r\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\r\nD[148] = \"����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�\".split(\"\");\r\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\r\nD[149] = \"����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�\".split(\"\");\r\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\r\nD[150] = \"����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�\".split(\"\");\r\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\r\nD[151] = \"����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�\".split(\"\");\r\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\r\nD[152] = \"����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�\".split(\"\");\r\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\r\nD[153] = \"����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�\".split(\"\");\r\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\r\nD[154] = \"����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�\".split(\"\");\r\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\r\nD[155] = \"����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�\".split(\"\");\r\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\r\nD[156] = \"����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�\".split(\"\");\r\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\r\nD[157] = \"����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�\".split(\"\");\r\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\r\nD[158] = \"����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�\".split(\"\");\r\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\r\nD[159] = \"����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�\".split(\"\");\r\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\r\nD[160] = \"����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�\".split(\"\");\r\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\r\nD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�\".split(\"\");\r\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\r\nD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���\".split(\"\");\r\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\r\nD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�\".split(\"\");\r\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\r\nD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\r\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\r\nD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\r\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\r\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������︵︶︹︺︿﹀︽︾﹁﹂﹃﹄��︻︼︷︸︱�︳︴����������\".split(\"\");\r\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\r\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\r\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\r\nD[168] = \"����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞�����������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ�ńň�ɡ����ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\r\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\r\nD[169] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦�℡㈱�‐���ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫�������������〇�������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\r\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\r\nD[170] = \"����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\r\nD[171] = \"����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\r\nD[172] = \"����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\r\nD[173] = \"����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\r\nD[174] = \"����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\r\nD[175] = \"����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\r\nD[176] = \"����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�\".split(\"\");\r\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\r\nD[177] = \"����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\r\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\r\nD[178] = \"����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�\".split(\"\");\r\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\r\nD[179] = \"����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�\".split(\"\");\r\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\r\nD[180] = \"����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\r\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\r\nD[181] = \"����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�\".split(\"\");\r\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\r\nD[182] = \"����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�\".split(\"\");\r\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\r\nD[183] = \"����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�\".split(\"\");\r\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\r\nD[184] = \"����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�\".split(\"\");\r\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\r\nD[185] = \"����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�\".split(\"\");\r\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\r\nD[186] = \"����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�\".split(\"\");\r\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\r\nD[187] = \"����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�\".split(\"\");\r\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\r\nD[188] = \"����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�\".split(\"\");\r\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\r\nD[189] = \"����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�\".split(\"\");\r\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\r\nD[190] = \"����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�\".split(\"\");\r\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\r\nD[191] = \"����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�\".split(\"\");\r\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\r\nD[192] = \"����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�\".split(\"\");\r\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\r\nD[193] = \"����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�\".split(\"\");\r\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\r\nD[194] = \"����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\r\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\r\nD[195] = \"����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�\".split(\"\");\r\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\r\nD[196] = \"����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�\".split(\"\");\r\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\r\nD[197] = \"����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�\".split(\"\");\r\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\r\nD[198] = \"����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�\".split(\"\");\r\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\r\nD[199] = \"����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\r\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\r\nD[200] = \"����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�\".split(\"\");\r\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\r\nD[201] = \"����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�\".split(\"\");\r\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\r\nD[202] = \"����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�\".split(\"\");\r\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\r\nD[203] = \"����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�\".split(\"\");\r\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\r\nD[204] = \"����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�\".split(\"\");\r\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\r\nD[205] = \"����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�\".split(\"\");\r\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\r\nD[206] = \"����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�\".split(\"\");\r\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\r\nD[207] = \"����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�\".split(\"\");\r\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\r\nD[208] = \"����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�\".split(\"\");\r\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\r\nD[209] = \"����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�\".split(\"\");\r\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\r\nD[210] = \"����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�\".split(\"\");\r\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\r\nD[211] = \"����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�\".split(\"\");\r\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\r\nD[212] = \"����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�\".split(\"\");\r\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\r\nD[213] = \"����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�\".split(\"\");\r\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\r\nD[214] = \"����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\r\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\r\nD[215] = \"����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������\".split(\"\");\r\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\r\nD[216] = \"����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�\".split(\"\");\r\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\r\nD[217] = \"����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\r\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\r\nD[218] = \"����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�\".split(\"\");\r\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\r\nD[219] = \"����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�\".split(\"\");\r\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\r\nD[220] = \"����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�\".split(\"\");\r\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\r\nD[221] = \"����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�\".split(\"\");\r\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\r\nD[222] = \"����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�\".split(\"\");\r\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\r\nD[223] = \"����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�\".split(\"\");\r\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\r\nD[224] = \"����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�\".split(\"\");\r\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\r\nD[225] = \"����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�\".split(\"\");\r\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\r\nD[226] = \"����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�\".split(\"\");\r\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\r\nD[227] = \"����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\r\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\r\nD[228] = \"����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�\".split(\"\");\r\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\r\nD[229] = \"����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�\".split(\"\");\r\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\r\nD[230] = \"����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\r\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\r\nD[231] = \"����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�\".split(\"\");\r\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\r\nD[232] = \"����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\r\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\r\nD[233] = \"����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�\".split(\"\");\r\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\r\nD[234] = \"����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�\".split(\"\");\r\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\r\nD[235] = \"����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\r\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\r\nD[236] = \"����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�\".split(\"\");\r\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\r\nD[237] = \"����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�\".split(\"\");\r\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\r\nD[238] = \"����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\r\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\r\nD[239] = \"����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\r\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\r\nD[240] = \"����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\r\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\r\nD[241] = \"����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�\".split(\"\");\r\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\r\nD[242] = \"����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�\".split(\"\");\r\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\r\nD[243] = \"����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�\".split(\"\");\r\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\r\nD[244] = \"����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�\".split(\"\");\r\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\r\nD[245] = \"����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\r\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\r\nD[246] = \"����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\r\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\r\nD[247] = \"����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\r\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\r\nD[248] = \"����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\r\nD[249] = \"����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\r\nD[250] = \"����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\r\nD[251] = \"����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\r\nD[252] = \"����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\r\nD[253] = \"����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\r\nD[254] = \"����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\r\nreturn {\"enc\": e, \"dec\": d }; })();\r\ncptable[949] = (function(){ var d = [], e = {}, D = [], j;\r\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\r\nD[129] = \"�����������������������������������������������������������������갂갃갅갆갋갌갍갎갏갘갞갟갡갢갣갥갦갧갨갩갪갫갮갲갳갴������갵갶갷갺갻갽갾갿걁걂걃걄걅걆걇걈걉걊걌걎걏걐걑걒걓걕������걖걗걙걚걛걝걞걟걠걡걢걣걤걥걦걧걨걩걪걫걬걭걮걯걲걳걵걶걹걻걼걽걾걿겂겇겈겍겎겏겑겒겓겕겖겗겘겙겚겛겞겢겣겤겥겦겧겫겭겮겱겲겳겴겵겶겷겺겾겿곀곂곃곅곆곇곉곊곋곍곎곏곐곑곒곓곔곖곘곙곚곛곜곝곞곟곢곣곥곦곩곫곭곮곲곴곷곸곹곺곻곾곿괁괂괃괅괇괈괉괊괋괎괐괒괓�\".split(\"\");\r\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\r\nD[130] = \"�����������������������������������������������������������������괔괕괖괗괙괚괛괝괞괟괡괢괣괤괥괦괧괨괪괫괮괯괰괱괲괳������괶괷괹괺괻괽괾괿굀굁굂굃굆굈굊굋굌굍굎굏굑굒굓굕굖굗������굙굚굛굜굝굞굟굠굢굤굥굦굧굨굩굪굫굮굯굱굲굷굸굹굺굾궀궃궄궅궆궇궊궋궍궎궏궑궒궓궔궕궖궗궘궙궚궛궞궟궠궡궢궣궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴궵궶궸궹궺궻궼궽궾궿귂귃귅귆귇귉귊귋귌귍귎귏귒귔귕귖귗귘귙귚귛귝귞귟귡귢귣귥귦귧귨귩귪귫귬귭귮귯귰귱귲귳귴귵귶귷�\".split(\"\");\r\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\r\nD[131] = \"�����������������������������������������������������������������귺귻귽귾긂긃긄긅긆긇긊긌긎긏긐긑긒긓긕긖긗긘긙긚긛긜������긝긞긟긠긡긢긣긤긥긦긧긨긩긪긫긬긭긮긯긲긳긵긶긹긻긼������긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗깘깙깚깛깞깢깣깤깦깧깪깫깭깮깯깱깲깳깴깵깶깷깺깾깿꺀꺁꺂꺃꺆꺇꺈꺉꺊꺋꺍꺎꺏꺐꺑꺒꺓꺔꺕꺖꺗꺘꺙꺚꺛꺜꺝꺞꺟꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻꺿껁껂껃껅껆껇껈껉껊껋껎껒껓껔껕껖껗껚껛껝껞껟껠껡껢껣껤껥�\".split(\"\");\r\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\r\nD[132] = \"�����������������������������������������������������������������껦껧껩껪껬껮껯껰껱껲껳껵껶껷껹껺껻껽껾껿꼀꼁꼂꼃꼄꼅������꼆꼉꼊꼋꼌꼎꼏꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜꼝꼞꼟꼠꼡꼢꼣������꼤꼥꼦꼧꼨꼩꼪꼫꼮꼯꼱꼳꼵꼶꼷꼸꼹꼺꼻꼾꽀꽄꽅꽆꽇꽊꽋꽌꽍꽎꽏꽑꽒꽓꽔꽕꽖꽗꽘꽙꽚꽛꽞꽟꽠꽡꽢꽣꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴꽵꽶꽷꽸꽺꽻꽼꽽꽾꽿꾁꾂꾃꾅꾆꾇꾉꾊꾋꾌꾍꾎꾏꾒꾓꾔꾖꾗꾘꾙꾚꾛꾝꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷꾺꾻꾽꾾�\".split(\"\");\r\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\r\nD[133] = \"�����������������������������������������������������������������꾿꿁꿂꿃꿄꿅꿆꿊꿌꿏꿐꿑꿒꿓꿕꿖꿗꿘꿙꿚꿛꿝꿞꿟꿠꿡������꿢꿣꿤꿥꿦꿧꿪꿫꿬꿭꿮꿯꿲꿳꿵꿶꿷꿹꿺꿻꿼꿽꿾꿿뀂뀃������뀅뀆뀇뀈뀉뀊뀋뀍뀎뀏뀑뀒뀓뀕뀖뀗뀘뀙뀚뀛뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸뀹뀺뀻뀼뀽뀾뀿끀끁끂끃끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞끟끠끡끢끣끤끥끦끧끨끩끪끫끬끭끮끯끰끱끲끳끴끵끶끷끸끹끺끻끾끿낁낂낃낅낆낇낈낉낊낋낎낐낒낓낔낕낖낗낛낝낞낣낤�\".split(\"\");\r\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\r\nD[134] = \"�����������������������������������������������������������������낥낦낧낪낰낲낶낷낹낺낻낽낾낿냀냁냂냃냆냊냋냌냍냎냏냒������냓냕냖냗냙냚냛냜냝냞냟냡냢냣냤냦냧냨냩냪냫냬냭냮냯냰������냱냲냳냴냵냶냷냸냹냺냻냼냽냾냿넀넁넂넃넄넅넆넇넊넍넎넏넑넔넕넖넗넚넞넟넠넡넢넦넧넩넪넫넭넮넯넰넱넲넳넶넺넻넼넽넾넿녂녃녅녆녇녉녊녋녌녍녎녏녒녓녖녗녙녚녛녝녞녟녡녢녣녤녥녦녧녨녩녪녫녬녭녮녯녰녱녲녳녴녵녶녷녺녻녽녾녿놁놃놄놅놆놇놊놌놎놏놐놑놕놖놗놙놚놛놝�\".split(\"\");\r\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\r\nD[135] = \"�����������������������������������������������������������������놞놟놠놡놢놣놤놥놦놧놩놪놫놬놭놮놯놰놱놲놳놴놵놶놷놸������놹놺놻놼놽놾놿뇀뇁뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋뇍뇎뇏뇑뇒뇓뇕������뇖뇗뇘뇙뇚뇛뇞뇠뇡뇢뇣뇤뇥뇦뇧뇪뇫뇭뇮뇯뇱뇲뇳뇴뇵뇶뇷뇸뇺뇼뇾뇿눀눁눂눃눆눇눉눊눍눎눏눐눑눒눓눖눘눚눛눜눝눞눟눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰눱눲눳눵눶눷눸눹눺눻눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌뉍뉎뉏뉐뉑뉒뉓뉔뉕뉖뉗뉙뉚뉛뉝뉞뉟뉡뉢뉣뉤뉥뉦뉧뉪뉫뉬뉭뉮�\".split(\"\");\r\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\r\nD[136] = \"�����������������������������������������������������������������뉯뉰뉱뉲뉳뉶뉷뉸뉹뉺뉻뉽뉾뉿늀늁늂늃늆늇늈늊늋늌늍늎������늏늒늓늕늖늗늛늜늝늞늟늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷������늸늹늺늻늼늽늾늿닀닁닂닃닄닅닆닇닊닋닍닎닏닑닓닔닕닖닗닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉댊댋댌댍댎댏댒댖댗댘댙댚댛댝댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬댭댮댯댰댱댲댳댴댵댶댷댸댹댺댻댼댽댾댿덀덁덂덃덄덅덆덇덈덉덊덋덌덍덎덏덐덑덒덓덗덙덚덝덠덡덢덣�\".split(\"\");\r\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\r\nD[137] = \"�����������������������������������������������������������������덦덨덪덬덭덯덲덳덵덶덷덹덺덻덼덽덾덿뎂뎆뎇뎈뎉뎊뎋뎍������뎎뎏뎑뎒뎓뎕뎖뎗뎘뎙뎚뎛뎜뎝뎞뎟뎢뎣뎤뎥뎦뎧뎩뎪뎫뎭������뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸뎹뎺뎻뎼뎽뎾뎿돀돁돂돃돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩돪돫돬돭돮돯돰돱돲돳돴돵돶돷돸돹돺돻돽돾돿됀됁됂됃됄됅됆됇됈됉됊됋됌됍됎됏됑됒됓됔됕됖됗됙됚됛됝됞됟됡됢됣됤됥됦됧됪됬됭됮됯됰됱됲됳됵됶됷됸됹됺됻됼됽됾됿둀둁둂둃둄�\".split(\"\");\r\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\r\nD[138] = \"�����������������������������������������������������������������둅둆둇둈둉둊둋둌둍둎둏둒둓둕둖둗둙둚둛둜둝둞둟둢둤둦������둧둨둩둪둫둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼둽둾둿뒁뒂������뒃뒄뒅뒆뒇뒉뒊뒋뒌뒍뒎뒏뒐뒑뒒뒓뒔뒕뒖뒗뒘뒙뒚뒛뒜뒞뒟뒠뒡뒢뒣뒥뒦뒧뒩뒪뒫뒭뒮뒯뒰뒱뒲뒳뒴뒶뒸뒺뒻뒼뒽뒾뒿듁듂듃듅듆듇듉듊듋듌듍듎듏듑듒듓듔듖듗듘듙듚듛듞듟듡듢듥듧듨듩듪듫듮듰듲듳듴듵듶듷듹듺듻듼듽듾듿딀딁딂딃딄딅딆딇딈딉딊딋딌딍딎딏딐딑딒딓딖딗딙딚딝�\".split(\"\");\r\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\r\nD[139] = \"�����������������������������������������������������������������딞딟딠딡딢딣딦딫딬딭딮딯딲딳딵딶딷딹딺딻딼딽딾딿땂땆������땇땈땉땊땎땏땑땒땓땕땖땗땘땙땚땛땞땢땣땤땥땦땧땨땩땪������땫땬땭땮땯땰땱땲땳땴땵땶땷땸땹땺땻땼땽땾땿떀떁떂떃떄떅떆떇떈떉떊떋떌떍떎떏떐떑떒떓떔떕떖떗떘떙떚떛떜떝떞떟떢떣떥떦떧떩떬떭떮떯떲떶떷떸떹떺떾떿뗁뗂뗃뗅뗆뗇뗈뗉뗊뗋뗎뗒뗓뗔뗕뗖뗗뗙뗚뗛뗜뗝뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨뗩뗪뗫뗭뗮뗯뗰뗱뗲뗳뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿�\".split(\"\");\r\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\r\nD[140] = \"�����������������������������������������������������������������똀똁똂똃똄똅똆똇똈똉똊똋똌똍똎똏똒똓똕똖똗똙똚똛똜똝������똞똟똠똡똢똣똤똦똧똨똩똪똫똭똮똯똰똱똲똳똵똶똷똸똹똺������똻똼똽똾똿뙀뙁뙂뙃뙄뙅뙆뙇뙉뙊뙋뙌뙍뙎뙏뙐뙑뙒뙓뙔뙕뙖뙗뙘뙙뙚뙛뙜뙝뙞뙟뙠뙡뙢뙣뙥뙦뙧뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿뚀뚁뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌뚍뚎뚏뚐뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛뚞뚟뚡뚢뚣뚥뚦뚧뚨뚩뚪뚭뚮뚯뚰뚲뚳뚴뚵뚶뚷뚸뚹뚺뚻뚼뚽뚾뚿뛀뛁뛂�\".split(\"\");\r\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\r\nD[141] = \"�����������������������������������������������������������������뛃뛄뛅뛆뛇뛈뛉뛊뛋뛌뛍뛎뛏뛐뛑뛒뛓뛕뛖뛗뛘뛙뛚뛛뛜뛝������뛞뛟뛠뛡뛢뛣뛤뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯뛱뛲뛳뛵뛶뛷뛹뛺������뛻뛼뛽뛾뛿뜂뜃뜄뜆뜇뜈뜉뜊뜋뜌뜍뜎뜏뜐뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜뜝뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧뜪뜫뜭뜮뜱뜲뜳뜴뜵뜶뜷뜺뜼뜽뜾뜿띀띁띂띃띅띆띇띉띊띋띍띎띏띐띑띒띓띖띗띘띙띚띛띜띝띞띟띡띢띣띥띦띧띩띪띫띬띭띮띯띲띴띶띷띸띹띺띻띾띿랁랂랃랅랆랇랈랉랊랋랎랓랔랕랚랛랝랞�\".split(\"\");\r\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\r\nD[142] = \"�����������������������������������������������������������������랟랡랢랣랤랥랦랧랪랮랯랰랱랲랳랶랷랹랺랻랼랽랾랿럀럁������럂럃럄럅럆럈럊럋럌럍럎럏럐럑럒럓럔럕럖럗럘럙럚럛럜럝������럞럟럠럡럢럣럤럥럦럧럨럩럪럫럮럯럱럲럳럵럶럷럸럹럺럻럾렂렃렄렅렆렊렋렍렎렏렑렒렓렔렕렖렗렚렜렞렟렠렡렢렣렦렧렩렪렫렭렮렯렰렱렲렳렶렺렻렼렽렾렿롁롂롃롅롆롇롈롉롊롋롌롍롎롏롐롒롔롕롖롗롘롙롚롛롞롟롡롢롣롥롦롧롨롩롪롫롮롰롲롳롴롵롶롷롹롺롻롽롾롿뢀뢁뢂뢃뢄�\".split(\"\");\r\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\r\nD[143] = \"�����������������������������������������������������������������뢅뢆뢇뢈뢉뢊뢋뢌뢎뢏뢐뢑뢒뢓뢔뢕뢖뢗뢘뢙뢚뢛뢜뢝뢞뢟������뢠뢡뢢뢣뢤뢥뢦뢧뢩뢪뢫뢬뢭뢮뢯뢱뢲뢳뢵뢶뢷뢹뢺뢻뢼뢽������뢾뢿룂룄룆룇룈룉룊룋룍룎룏룑룒룓룕룖룗룘룙룚룛룜룞룠룢룣룤룥룦룧룪룫룭룮룯룱룲룳룴룵룶룷룺룼룾룿뤀뤁뤂뤃뤅뤆뤇뤈뤉뤊뤋뤌뤍뤎뤏뤐뤑뤒뤓뤔뤕뤖뤗뤙뤚뤛뤜뤝뤞뤟뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻뤾뤿륁륂륃륅륆륇륈륉륊륋륍륎륐륒륓륔륕륖륗�\".split(\"\");\r\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\r\nD[144] = \"�����������������������������������������������������������������륚륛륝륞륟륡륢륣륤륥륦륧륪륬륮륯륰륱륲륳륶륷륹륺륻륽������륾륿릀릁릂릃릆릈릋릌릏릐릑릒릓릔릕릖릗릘릙릚릛릜릝릞������릟릠릡릢릣릤릥릦릧릨릩릪릫릮릯릱릲릳릵릶릷릸릹릺릻릾맀맂맃맄맅맆맇맊맋맍맓맔맕맖맗맚맜맟맠맢맦맧맩맪맫맭맮맯맰맱맲맳맶맻맼맽맾맿먂먃먄먅먆먇먉먊먋먌먍먎먏먐먑먒먓먔먖먗먘먙먚먛먜먝먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬먭먮먯먰먱먲먳먴먵먶먷먺먻먽먾먿멁멃멄멅멆�\".split(\"\");\r\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\r\nD[145] = \"�����������������������������������������������������������������멇멊멌멏멐멑멒멖멗멙멚멛멝멞멟멠멡멢멣멦멪멫멬멭멮멯������멲멳멵멶멷멹멺멻멼멽멾멿몀몁몂몆몈몉몊몋몍몎몏몐몑몒������몓몔몕몖몗몘몙몚몛몜몝몞몟몠몡몢몣몤몥몦몧몪몭몮몯몱몳몴몵몶몷몺몼몾몿뫀뫁뫂뫃뫅뫆뫇뫉뫊뫋뫌뫍뫎뫏뫐뫑뫒뫓뫔뫕뫖뫗뫚뫛뫜뫝뫞뫟뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻뫽뫾뫿묁묂묃묅묆묇묈묉묊묋묌묎묐묒묓묔묕묖묗묙묚묛묝묞묟묡묢묣묤묥묦묧�\".split(\"\");\r\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\r\nD[146] = \"�����������������������������������������������������������������묨묪묬묭묮묯묰묱묲묳묷묹묺묿뭀뭁뭂뭃뭆뭈뭊뭋뭌뭎뭑뭒������뭓뭕뭖뭗뭙뭚뭛뭜뭝뭞뭟뭠뭢뭤뭥뭦뭧뭨뭩뭪뭫뭭뭮뭯뭰뭱������뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼뭽뭾뭿뮀뮁뮂뮃뮄뮅뮆뮇뮉뮊뮋뮍뮎뮏뮑뮒뮓뮔뮕뮖뮗뮘뮙뮚뮛뮜뮝뮞뮟뮠뮡뮢뮣뮥뮦뮧뮩뮪뮫뮭뮮뮯뮰뮱뮲뮳뮵뮶뮸뮹뮺뮻뮼뮽뮾뮿믁믂믃믅믆믇믉믊믋믌믍믎믏믑믒믔믕믖믗믘믙믚믛믜믝믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬믭믮믯믰믱믲믳믴믵믶믷믺믻믽믾밁�\".split(\"\");\r\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\r\nD[147] = \"�����������������������������������������������������������������밃밄밅밆밇밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵������밶밷밹밺밻밼밽밾밿뱂뱆뱇뱈뱊뱋뱎뱏뱑뱒뱓뱔뱕뱖뱗뱘뱙������뱚뱛뱜뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸뱹뱺뱻뱼뱽뱾뱿벀벁벂벃벆벇벉벊벍벏벐벑벒벓벖벘벛벜벝벞벟벢벣벥벦벩벪벫벬벭벮벯벲벶벷벸벹벺벻벾벿볁볂볃볅볆볇볈볉볊볋볌볎볒볓볔볖볗볙볚볛볝볞볟볠볡볢볣볤볥볦볧볨볩볪볫볬볭볮볯볰볱볲볳볷볹볺볻볽�\".split(\"\");\r\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\r\nD[148] = \"�����������������������������������������������������������������볾볿봀봁봂봃봆봈봊봋봌봍봎봏봑봒봓봕봖봗봘봙봚봛봜봝������봞봟봠봡봢봣봥봦봧봨봩봪봫봭봮봯봰봱봲봳봴봵봶봷봸봹������봺봻봼봽봾봿뵁뵂뵃뵄뵅뵆뵇뵊뵋뵍뵎뵏뵑뵒뵓뵔뵕뵖뵗뵚뵛뵜뵝뵞뵟뵠뵡뵢뵣뵥뵦뵧뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿붂붃붅붆붋붌붍붎붏붒붔붖붗붘붛붝붞붟붠붡붢붣붥붦붧붨붩붪붫붬붭붮붯붱붲붳붴붵붶붷붹붺붻붼붽붾붿뷀뷁뷂뷃뷄뷅뷆뷇뷈뷉뷊뷋뷌뷍뷎뷏뷐뷑�\".split(\"\");\r\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\r\nD[149] = \"�����������������������������������������������������������������뷒뷓뷖뷗뷙뷚뷛뷝뷞뷟뷠뷡뷢뷣뷤뷥뷦뷧뷨뷪뷫뷬뷭뷮뷯뷱������뷲뷳뷵뷶뷷뷹뷺뷻뷼뷽뷾뷿븁븂븄븆븇븈븉븊븋븎븏븑븒븓������븕븖븗븘븙븚븛븞븠븡븢븣븤븥븦븧븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸븹븺븻븼븽븾븿빀빁빂빃빆빇빉빊빋빍빏빐빑빒빓빖빘빜빝빞빟빢빣빥빦빧빩빫빬빭빮빯빲빶빷빸빹빺빾빿뺁뺂뺃뺅뺆뺇뺈뺉뺊뺋뺎뺒뺓뺔뺕뺖뺗뺚뺛뺜뺝뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳뺴뺵뺶뺷�\".split(\"\");\r\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\r\nD[150] = \"�����������������������������������������������������������������뺸뺹뺺뺻뺼뺽뺾뺿뻀뻁뻂뻃뻄뻅뻆뻇뻈뻉뻊뻋뻌뻍뻎뻏뻒뻓������뻕뻖뻙뻚뻛뻜뻝뻞뻟뻡뻢뻦뻧뻨뻩뻪뻫뻭뻮뻯뻰뻱뻲뻳뻴뻵������뻶뻷뻸뻹뻺뻻뻼뻽뻾뻿뼀뼂뼃뼄뼅뼆뼇뼊뼋뼌뼍뼎뼏뼐뼑뼒뼓뼔뼕뼖뼗뼚뼞뼟뼠뼡뼢뼣뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿뽂뽃뽅뽆뽇뽉뽊뽋뽌뽍뽎뽏뽒뽓뽔뽖뽗뽘뽙뽚뽛뽜뽝뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷뽸뽹뽺뽻뽼뽽뽾뽿뾀뾁뾂�\".split(\"\");\r\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\r\nD[151] = \"�����������������������������������������������������������������뾃뾄뾅뾆뾇뾈뾉뾊뾋뾌뾍뾎뾏뾐뾑뾒뾓뾕뾖뾗뾘뾙뾚뾛뾜뾝������뾞뾟뾠뾡뾢뾣뾤뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯뾱뾲뾳뾴뾵뾶뾷뾸������뾹뾺뾻뾼뾽뾾뾿뿀뿁뿂뿃뿄뿆뿇뿈뿉뿊뿋뿎뿏뿑뿒뿓뿕뿖뿗뿘뿙뿚뿛뿝뿞뿠뿢뿣뿤뿥뿦뿧뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸뿹뿺뿻뿼뿽뿾뿿쀀쀁쀂쀃쀄쀅쀆쀇쀈쀉쀊쀋쀌쀍쀎쀏쀐쀑쀒쀓쀔쀕쀖쀗쀘쀙쀚쀛쀜쀝쀞쀟쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻쀽쀾쀿�\".split(\"\");\r\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\r\nD[152] = \"�����������������������������������������������������������������쁀쁁쁂쁃쁄쁅쁆쁇쁈쁉쁊쁋쁌쁍쁎쁏쁐쁒쁓쁔쁕쁖쁗쁙쁚쁛������쁝쁞쁟쁡쁢쁣쁤쁥쁦쁧쁪쁫쁬쁭쁮쁯쁰쁱쁲쁳쁴쁵쁶쁷쁸쁹������쁺쁻쁼쁽쁾쁿삀삁삂삃삄삅삆삇삈삉삊삋삌삍삎삏삒삓삕삖삗삙삚삛삜삝삞삟삢삤삦삧삨삩삪삫삮삱삲삷삸삹삺삻삾샂샃샄샆샇샊샋샍샎샏샑샒샓샔샕샖샗샚샞샟샠샡샢샣샦샧샩샪샫샭샮샯샰샱샲샳샶샸샺샻샼샽샾샿섁섂섃섅섆섇섉섊섋섌섍섎섏섑섒섓섔섖섗섘섙섚섛섡섢섥섨섩섪섫섮�\".split(\"\");\r\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\r\nD[153] = \"�����������������������������������������������������������������섲섳섴섵섷섺섻섽섾섿셁셂셃셄셅셆셇셊셎셏셐셑셒셓셖셗������셙셚셛셝셞셟셠셡셢셣셦셪셫셬셭셮셯셱셲셳셵셶셷셹셺셻������셼셽셾셿솀솁솂솃솄솆솇솈솉솊솋솏솑솒솓솕솗솘솙솚솛솞솠솢솣솤솦솧솪솫솭솮솯솱솲솳솴솵솶솷솸솹솺솻솼솾솿쇀쇁쇂쇃쇅쇆쇇쇉쇊쇋쇍쇎쇏쇐쇑쇒쇓쇕쇖쇙쇚쇛쇜쇝쇞쇟쇡쇢쇣쇥쇦쇧쇩쇪쇫쇬쇭쇮쇯쇲쇴쇵쇶쇷쇸쇹쇺쇻쇾쇿숁숂숃숅숆숇숈숉숊숋숎숐숒숓숔숕숖숗숚숛숝숞숡숢숣�\".split(\"\");\r\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\r\nD[154] = \"�����������������������������������������������������������������숤숥숦숧숪숬숮숰숳숵숶숷숸숹숺숻숼숽숾숿쉀쉁쉂쉃쉄쉅������쉆쉇쉉쉊쉋쉌쉍쉎쉏쉒쉓쉕쉖쉗쉙쉚쉛쉜쉝쉞쉟쉡쉢쉣쉤쉦������쉧쉨쉩쉪쉫쉮쉯쉱쉲쉳쉵쉶쉷쉸쉹쉺쉻쉾슀슂슃슄슅슆슇슊슋슌슍슎슏슑슒슓슔슕슖슗슙슚슜슞슟슠슡슢슣슦슧슩슪슫슮슯슰슱슲슳슶슸슺슻슼슽슾슿싀싁싂싃싄싅싆싇싈싉싊싋싌싍싎싏싐싑싒싓싔싕싖싗싘싙싚싛싞싟싡싢싥싦싧싨싩싪싮싰싲싳싴싵싷싺싽싾싿쌁쌂쌃쌄쌅쌆쌇쌊쌋쌎쌏�\".split(\"\");\r\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\r\nD[155] = \"�����������������������������������������������������������������쌐쌑쌒쌖쌗쌙쌚쌛쌝쌞쌟쌠쌡쌢쌣쌦쌧쌪쌫쌬쌭쌮쌯쌰쌱쌲������쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀썁썂썃썄썆썇썈썉썊썋썌썍������썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜썝썞썟썠썡썢썣썤썥썦썧썪썫썭썮썯썱썳썴썵썶썷썺썻썾썿쎀쎁쎂쎃쎅쎆쎇쎉쎊쎋쎍쎎쎏쎐쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻쎼쎽쎾쎿쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗쏚�\".split(\"\");\r\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\r\nD[156] = \"�����������������������������������������������������������������쏛쏝쏞쏡쏣쏤쏥쏦쏧쏪쏫쏬쏮쏯쏰쏱쏲쏳쏶쏷쏹쏺쏻쏼쏽쏾������쏿쐀쐁쐂쐃쐄쐅쐆쐇쐉쐊쐋쐌쐍쐎쐏쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚������쐛쐜쐝쐞쐟쐠쐡쐢쐣쐥쐦쐧쐨쐩쐪쐫쐭쐮쐯쐱쐲쐳쐵쐶쐷쐸쐹쐺쐻쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣쑦쑧쑩쑪쑫쑭쑮쑯쑰쑱쑲쑳쑶쑷쑸쑺쑻쑼쑽쑾쑿쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐쒑쒒쒓쒕쒖쒗쒘쒙쒚쒛쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩�\".split(\"\");\r\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\r\nD[157] = \"�����������������������������������������������������������������쒪쒫쒬쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒹쒺쒻쒽쒾쒿쓀쓁쓂쓃쓄쓅������쓆쓇쓈쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟������쓠쓡쓢쓣쓤쓥쓦쓧쓨쓪쓫쓬쓭쓮쓯쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂씃씄씅씆씇씈씉씊씋씍씎씏씑씒씓씕씖씗씘씙씚씛씝씞씟씠씡씢씣씤씥씦씧씪씫씭씮씯씱씲씳씴씵씶씷씺씼씾씿앀앁앂앃앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩앪앫앬앭앮앯앲앶앷앸앹앺앻앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔�\".split(\"\");\r\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\r\nD[158] = \"�����������������������������������������������������������������얖얙얚얛얝얞얟얡얢얣얤얥얦얧얨얪얫얬얭얮얯얰얱얲얳얶������얷얺얿엀엁엂엃엋엍엏엒엓엕엖엗엙엚엛엜엝엞엟엢엤엦엧������엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑옒옓옔옕옖옗옚옝옞옟옠옡옢옣옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉왊왋왌왍왎왏왒왖왗왘왙왚왛왞왟왡왢왣왤왥왦왧왨왩왪왫왭왮왰왲왳왴왵왶왷왺왻왽왾왿욁욂욃욄욅욆욇욊욌욎욏욐욑욒욓욖욗욙욚욛욝욞욟욠욡욢욣욦�\".split(\"\");\r\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\r\nD[159] = \"�����������������������������������������������������������������욨욪욫욬욭욮욯욲욳욵욶욷욻욼욽욾욿웂웄웆웇웈웉웊웋웎������웏웑웒웓웕웖웗웘웙웚웛웞웟웢웣웤웥웦웧웪웫웭웮웯웱웲������웳웴웵웶웷웺웻웼웾웿윀윁윂윃윆윇윉윊윋윍윎윏윐윑윒윓윖윘윚윛윜윝윞윟윢윣윥윦윧윩윪윫윬윭윮윯윲윴윶윸윹윺윻윾윿읁읂읃읅읆읇읈읉읋읎읐읙읚읛읝읞읟읡읢읣읤읥읦읧읩읪읬읭읮읯읰읱읲읳읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛잜잝잞잟잢잧잨잩잪잫잮잯잱잲잳잵잶잷�\".split(\"\");\r\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\r\nD[160] = \"�����������������������������������������������������������������잸잹잺잻잾쟂쟃쟄쟅쟆쟇쟊쟋쟍쟏쟑쟒쟓쟔쟕쟖쟗쟙쟚쟛쟜������쟞쟟쟠쟡쟢쟣쟥쟦쟧쟩쟪쟫쟭쟮쟯쟰쟱쟲쟳쟴쟵쟶쟷쟸쟹쟺������쟻쟼쟽쟾쟿젂젃젅젆젇젉젋젌젍젎젏젒젔젗젘젙젚젛젞젟젡젢젣젥젦젧젨젩젪젫젮젰젲젳젴젵젶젷젹젺젻젽젾젿졁졂졃졄졅졆졇졊졋졎졏졐졑졒졓졕졖졗졘졙졚졛졜졝졞졟졠졡졢졣졤졥졦졧졨졩졪졫졬졭졮졯졲졳졵졶졷졹졻졼졽졾졿좂좄좈좉좊좎좏좐좑좒좓좕좖좗좘좙좚좛좜좞좠좢좣좤�\".split(\"\");\r\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\r\nD[161] = \"�����������������������������������������������������������������좥좦좧좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸좹좺좻좾좿죀죁������죂죃죅죆죇죉죊죋죍죎죏죐죑죒죓죖죘죚죛죜죝죞죟죢죣죥������죦죧죨죩죪죫죬죭죮죯죰죱죲죳죴죶죷죸죹죺죻죾죿줁줂줃줇줈줉줊줋줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�\".split(\"\");\r\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\r\nD[162] = \"�����������������������������������������������������������������줐줒줓줔줕줖줗줙줚줛줜줝줞줟줠줡줢줣줤줥줦줧줨줩줪줫������줭줮줯줰줱줲줳줵줶줷줸줹줺줻줼줽줾줿쥀쥁쥂쥃쥄쥅쥆쥇������쥈쥉쥊쥋쥌쥍쥎쥏쥒쥓쥕쥖쥗쥙쥚쥛쥜쥝쥞쥟쥢쥤쥥쥦쥧쥨쥩쥪쥫쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������\".split(\"\");\r\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\r\nD[163] = \"�����������������������������������������������������������������쥱쥲쥳쥵쥶쥷쥸쥹쥺쥻쥽쥾쥿즀즁즂즃즄즅즆즇즊즋즍즎즏������즑즒즓즔즕즖즗즚즜즞즟즠즡즢즣즤즥즦즧즨즩즪즫즬즭즮������즯즰즱즲즳즴즵즶즷즸즹즺즻즼즽즾즿짂짃짅짆짉짋짌짍짎짏짒짔짗짘짛!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�\".split(\"\");\r\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\r\nD[164] = \"�����������������������������������������������������������������짞짟짡짣짥짦짨짩짪짫짮짲짳짴짵짶짷짺짻짽짾짿쨁쨂쨃쨄������쨅쨆쨇쨊쨎쨏쨐쨑쨒쨓쨕쨖쨗쨙쨚쨛쨜쨝쨞쨟쨠쨡쨢쨣쨤쨥������쨦쨧쨨쨪쨫쨬쨭쨮쨯쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀쩁쩂쩃쩄쩅쩆ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�\".split(\"\");\r\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\r\nD[165] = \"�����������������������������������������������������������������쩇쩈쩉쩊쩋쩎쩏쩑쩒쩓쩕쩖쩗쩘쩙쩚쩛쩞쩢쩣쩤쩥쩦쩧쩩쩪������쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸쩹쩺쩻쩼쩾쩿쪀쪁쪂쪃쪅쪆������쪇쪈쪉쪊쪋쪌쪍쪎쪏쪐쪑쪒쪓쪔쪕쪖쪗쪙쪚쪛쪜쪝쪞쪟쪠쪡쪢쪣쪤쪥쪦쪧ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������\".split(\"\");\r\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\r\nD[166] = \"�����������������������������������������������������������������쪨쪩쪪쪫쪬쪭쪮쪯쪰쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻쪾쪿쫁쫂쫃쫅������쫆쫇쫈쫉쫊쫋쫎쫐쫒쫔쫕쫖쫗쫚쫛쫜쫝쫞쫟쫡쫢쫣쫤쫥쫦쫧������쫨쫩쫪쫫쫭쫮쫯쫰쫱쫲쫳쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀쬁쬂쬃쬄쬅쬆쬇쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\r\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\r\nD[167] = \"�����������������������������������������������������������������쬋쬌쬍쬎쬏쬑쬒쬓쬕쬖쬗쬙쬚쬛쬜쬝쬞쬟쬢쬣쬤쬥쬦쬧쬨쬩������쬪쬫쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼쬽쬾쬿쭀쭂쭃쭄������쭅쭆쭇쭊쭋쭍쭎쭏쭑쭒쭓쭔쭕쭖쭗쭚쭛쭜쭞쭟쭠쭡쭢쭣쭥쭦쭧쭨쭩쭪쭫쭬㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������\".split(\"\");\r\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\r\nD[168] = \"�����������������������������������������������������������������쭭쭮쭯쭰쭱쭲쭳쭴쭵쭶쭷쭺쭻쭼쭽쭾쭿쮀쮁쮂쮃쮄쮅쮆쮇쮈������쮉쮊쮋쮌쮍쮎쮏쮐쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛쮝쮞쮟쮠쮡쮢쮣������쮤쮥쮦쮧쮨쮩쮪쮫쮬쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷쮹쮺쮻쮼쮽쮾쮿쯀쯁쯂쯃쯄ÆЪĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�\".split(\"\");\r\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\r\nD[169] = \"�����������������������������������������������������������������쯅쯆쯇쯈쯉쯊쯋쯌쯍쯎쯏쯐쯑쯒쯓쯕쯖쯗쯘쯙쯚쯛쯜쯝쯞쯟������쯠쯡쯢쯣쯥쯦쯨쯪쯫쯬쯭쯮쯯쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼������쯽쯾쯿찀찁찂찃찄찅찆찇찈찉찊찋찎찏찑찒찓찕찖찗찘찙찚찛찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�\".split(\"\");\r\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\r\nD[170] = \"�����������������������������������������������������������������찥찦찪찫찭찯찱찲찳찴찵찶찷찺찿챀챁챂챃챆챇챉챊챋챍챎������챏챐챑챒챓챖챚챛챜챝챞챟챡챢챣챥챧챩챪챫챬챭챮챯챱챲������챳챴챶챷챸챹챺챻챼챽챾챿첀첁첂첃첄첅첆첇첈첉첊첋첌첍첎첏첐첑첒첓ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\r\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\r\nD[171] = \"�����������������������������������������������������������������첔첕첖첗첚첛첝첞첟첡첢첣첤첥첦첧첪첮첯첰첱첲첳첶첷첹������첺첻첽첾첿쳀쳁쳂쳃쳆쳈쳊쳋쳌쳍쳎쳏쳑쳒쳓쳕쳖쳗쳘쳙쳚������쳛쳜쳝쳞쳟쳠쳡쳢쳣쳥쳦쳧쳨쳩쳪쳫쳭쳮쳯쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼쳽ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\r\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\r\nD[172] = \"�����������������������������������������������������������������쳾쳿촀촂촃촄촅촆촇촊촋촍촎촏촑촒촓촔촕촖촗촚촜촞촟촠������촡촢촣촥촦촧촩촪촫촭촮촯촰촱촲촳촴촵촶촷촸촺촻촼촽촾������촿쵀쵁쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌쵍쵎쵏쵐쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛쵝쵞쵟АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\r\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\r\nD[173] = \"�����������������������������������������������������������������쵡쵢쵣쵥쵦쵧쵨쵩쵪쵫쵮쵰쵲쵳쵴쵵쵶쵷쵹쵺쵻쵼쵽쵾쵿춀������춁춂춃춄춅춆춇춉춊춋춌춍춎춏춐춑춒춓춖춗춙춚춛춝춞춟������춠춡춢춣춦춨춪춫춬춭춮춯춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀췁췂췃췅�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\r\nD[174] = \"�����������������������������������������������������������������췆췇췈췉췊췋췍췎췏췑췒췓췔췕췖췗췘췙췚췛췜췝췞췟췠췡������췢췣췤췥췦췧췩췪췫췭췮췯췱췲췳췴췵췶췷췺췼췾췿츀츁츂������츃츅츆츇츉츊츋츍츎츏츐츑츒츓츕츖츗츘츚츛츜츝츞츟츢츣츥츦츧츩츪츫�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\r\nD[175] = \"�����������������������������������������������������������������츬츭츮츯츲츴츶츷츸츹츺츻츼츽츾츿칀칁칂칃칄칅칆칇칈칉������칊칋칌칍칎칏칐칑칒칓칔칕칖칗칚칛칝칞칢칣칤칥칦칧칪칬������칮칯칰칱칲칳칶칷칹칺칻칽칾칿캀캁캂캃캆캈캊캋캌캍캎캏캒캓캕캖캗캙�����������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\r\nD[176] = \"�����������������������������������������������������������������캚캛캜캝캞캟캢캦캧캨캩캪캫캮캯캰캱캲캳캴캵캶캷캸캹캺������캻캼캽캾캿컀컂컃컄컅컆컇컈컉컊컋컌컍컎컏컐컑컒컓컔컕������컖컗컘컙컚컛컜컝컞컟컠컡컢컣컦컧컩컪컭컮컯컰컱컲컳컶컺컻컼컽컾컿가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�\".split(\"\");\r\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\r\nD[177] = \"�����������������������������������������������������������������켂켃켅켆켇켉켊켋켌켍켎켏켒켔켖켗켘켙켚켛켝켞켟켡켢켣������켥켦켧켨켩켪켫켮켲켳켴켵켶켷켹켺켻켼켽켾켿콀콁콂콃콄������콅콆콇콈콉콊콋콌콍콎콏콐콑콒콓콖콗콙콚콛콝콞콟콠콡콢콣콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�\".split(\"\");\r\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\r\nD[178] = \"�����������������������������������������������������������������콭콮콯콲콳콵콶콷콹콺콻콼콽콾콿쾁쾂쾃쾄쾆쾇쾈쾉쾊쾋쾍������쾎쾏쾐쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜쾝쾞쾟쾠쾢쾣쾤쾥쾦쾧쾩������쾪쾫쾬쾭쾮쾯쾱쾲쾳쾴쾵쾶쾷쾸쾹쾺쾻쾼쾽쾾쾿쿀쿁쿂쿃쿅쿆쿇쿈쿉쿊쿋깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�\".split(\"\");\r\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\r\nD[179] = \"�����������������������������������������������������������������쿌쿍쿎쿏쿐쿑쿒쿓쿔쿕쿖쿗쿘쿙쿚쿛쿜쿝쿞쿟쿢쿣쿥쿦쿧쿩������쿪쿫쿬쿭쿮쿯쿲쿴쿶쿷쿸쿹쿺쿻쿽쿾쿿퀁퀂퀃퀅퀆퀇퀈퀉퀊������퀋퀌퀍퀎퀏퀐퀒퀓퀔퀕퀖퀗퀙퀚퀛퀜퀝퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨퀩퀪퀫퀬끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�\".split(\"\");\r\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\r\nD[180] = \"�����������������������������������������������������������������퀮퀯퀰퀱퀲퀳퀶퀷퀹퀺퀻퀽퀾퀿큀큁큂큃큆큈큊큋큌큍큎큏������큑큒큓큕큖큗큙큚큛큜큝큞큟큡큢큣큤큥큦큧큨큩큪큫큮큯������큱큲큳큵큶큷큸큹큺큻큾큿킀킂킃킄킅킆킇킈킉킊킋킌킍킎킏킐킑킒킓킔뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�\".split(\"\");\r\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\r\nD[181] = \"�����������������������������������������������������������������킕킖킗킘킙킚킛킜킝킞킟킠킡킢킣킦킧킩킪킫킭킮킯킰킱킲������킳킶킸킺킻킼킽킾킿탂탃탅탆탇탊탋탌탍탎탏탒탖탗탘탙탚������탛탞탟탡탢탣탥탦탧탨탩탪탫탮탲탳탴탵탶탷탹탺탻탼탽탾탿턀턁턂턃턄덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\r\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\r\nD[182] = \"�����������������������������������������������������������������턅턆턇턈턉턊턋턌턎턏턐턑턒턓턔턕턖턗턘턙턚턛턜턝턞턟������턠턡턢턣턤턥턦턧턨턩턪턫턬턭턮턯턲턳턵턶턷턹턻턼턽턾������턿텂텆텇텈텉텊텋텎텏텑텒텓텕텖텗텘텙텚텛텞텠텢텣텤텥텦텧텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�\".split(\"\");\r\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\r\nD[183] = \"�����������������������������������������������������������������텮텯텰텱텲텳텴텵텶텷텸텹텺텻텽텾텿톀톁톂톃톅톆톇톉톊������톋톌톍톎톏톐톑톒톓톔톕톖톗톘톙톚톛톜톝톞톟톢톣톥톦톧������톩톪톫톬톭톮톯톲톴톶톷톸톹톻톽톾톿퇁퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌퇍퇎퇏래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�\".split(\"\");\r\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\r\nD[184] = \"�����������������������������������������������������������������퇐퇑퇒퇓퇔퇕퇖퇗퇙퇚퇛퇜퇝퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨퇩퇪������퇫퇬퇭퇮퇯퇰퇱퇲퇳퇵퇶퇷퇹퇺퇻퇼퇽퇾퇿툀툁툂툃툄툅툆������툈툊툋툌툍툎툏툑툒툓툔툕툖툗툘툙툚툛툜툝툞툟툠툡툢툣툤툥툦툧툨툩륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\r\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\r\nD[185] = \"�����������������������������������������������������������������툪툫툮툯툱툲툳툵툶툷툸툹툺툻툾퉀퉂퉃퉄퉅퉆퉇퉉퉊퉋퉌������퉍퉎퉏퉐퉑퉒퉓퉔퉕퉖퉗퉘퉙퉚퉛퉝퉞퉟퉠퉡퉢퉣퉥퉦퉧퉨������퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�\".split(\"\");\r\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\r\nD[186] = \"�����������������������������������������������������������������튍튎튏튒튓튔튖튗튘튙튚튛튝튞튟튡튢튣튥튦튧튨튩튪튫튭������튮튯튰튲튳튴튵튶튷튺튻튽튾틁틃틄틅틆틇틊틌틍틎틏틐틑������틒틓틕틖틗틙틚틛틝틞틟틠틡틢틣틦틧틨틩틪틫틬틭틮틯틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�\".split(\"\");\r\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\r\nD[187] = \"�����������������������������������������������������������������틻틼틽틾틿팂팄팆팇팈팉팊팋팏팑팒팓팕팗팘팙팚팛팞팢팣������팤팦팧팪팫팭팮팯팱팲팳팴팵팶팷팺팾팿퍀퍁퍂퍃퍆퍇퍈퍉������퍊퍋퍌퍍퍎퍏퍐퍑퍒퍓퍔퍕퍖퍗퍘퍙퍚퍛퍜퍝퍞퍟퍠퍡퍢퍣퍤퍥퍦퍧퍨퍩빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�\".split(\"\");\r\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\r\nD[188] = \"�����������������������������������������������������������������퍪퍫퍬퍭퍮퍯퍰퍱퍲퍳퍴퍵퍶퍷퍸퍹퍺퍻퍾퍿펁펂펃펅펆펇������펈펉펊펋펎펒펓펔펕펖펗펚펛펝펞펟펡펢펣펤펥펦펧펪펬펮������펯펰펱펲펳펵펶펷펹펺펻펽펾펿폀폁폂폃폆폇폊폋폌폍폎폏폑폒폓폔폕폖샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�\".split(\"\");\r\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\r\nD[189] = \"�����������������������������������������������������������������폗폙폚폛폜폝폞폟폠폢폤폥폦폧폨폩폪폫폮폯폱폲폳폵폶폷������폸폹폺폻폾퐀퐂퐃퐄퐅퐆퐇퐉퐊퐋퐌퐍퐎퐏퐐퐑퐒퐓퐔퐕퐖������퐗퐘퐙퐚퐛퐜퐞퐟퐠퐡퐢퐣퐤퐥퐦퐧퐨퐩퐪퐫퐬퐭퐮퐯퐰퐱퐲퐳퐴퐵퐶퐷숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�\".split(\"\");\r\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\r\nD[190] = \"�����������������������������������������������������������������퐸퐹퐺퐻퐼퐽퐾퐿푁푂푃푅푆푇푈푉푊푋푌푍푎푏푐푑푒푓������푔푕푖푗푘푙푚푛푝푞푟푡푢푣푥푦푧푨푩푪푫푬푮푰푱푲������푳푴푵푶푷푺푻푽푾풁풃풄풅풆풇풊풌풎풏풐풑풒풓풕풖풗풘풙풚풛풜풝쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�\".split(\"\");\r\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\r\nD[191] = \"�����������������������������������������������������������������풞풟풠풡풢풣풤풥풦풧풨풪풫풬풭풮풯풰풱풲풳풴풵풶풷풸������풹풺풻풼풽풾풿퓀퓁퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋퓍퓎퓏퓑퓒퓓퓕������퓖퓗퓘퓙퓚퓛퓝퓞퓠퓡퓢퓣퓤퓥퓦퓧퓩퓪퓫퓭퓮퓯퓱퓲퓳퓴퓵퓶퓷퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�\".split(\"\");\r\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\r\nD[192] = \"�����������������������������������������������������������������퓾퓿픀픁픂픃픅픆픇픉픊픋픍픎픏픐픑픒픓픖픘픙픚픛픜픝������픞픟픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰픱픲픳픴픵픶픷������픸픹픺픻픾픿핁핂핃핅핆핇핈핉핊핋핎핐핒핓핔핕핖핗핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�\".split(\"\");\r\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\r\nD[193] = \"�����������������������������������������������������������������핤핦핧핪핬핮핯핰핱핲핳핶핷핹핺핻핽핾핿햀햁햂햃햆햊햋������햌햍햎햏햑햒햓햔햕햖햗햘햙햚햛햜햝햞햟햠햡햢햣햤햦햧������햨햩햪햫햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼햽햾햿헀헁헂헃헄헅헆헇점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�\".split(\"\");\r\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\r\nD[194] = \"�����������������������������������������������������������������헊헋헍헎헏헑헓헔헕헖헗헚헜헞헟헠헡헢헣헦헧헩헪헫헭헮������헯헰헱헲헳헶헸헺헻헼헽헾헿혂혃혅혆혇혉혊혋혌혍혎혏혒������혖혗혘혙혚혛혝혞혟혡혢혣혥혦혧혨혩혪혫혬혮혯혰혱혲혳혴혵혶혷혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�\".split(\"\");\r\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\r\nD[195] = \"�����������������������������������������������������������������혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝홞홟홠홡������홢홣홤홥홦홨홪홫홬홭홮홯홲홳홵홶홷홸홹홺홻홼홽홾홿횀������횁횂횄횆횇횈횉횊횋횎횏횑횒횓횕횖횗횘횙횚횛횜횞횠횢횣횤횥횦횧횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�\".split(\"\");\r\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\r\nD[196] = \"�����������������������������������������������������������������횫횭횮횯횱횲횳횴횵횶횷횸횺횼횽횾횿훀훁훂훃훆훇훉훊훋������훍훎훏훐훒훓훕훖훘훚훛훜훝훞훟훡훢훣훥훦훧훩훪훫훬훭������훮훯훱훲훳훴훶훷훸훹훺훻훾훿휁휂휃휅휆휇휈휉휊휋휌휍휎휏휐휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�\".split(\"\");\r\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\r\nD[197] = \"�����������������������������������������������������������������휕휖휗휚휛휝휞휟휡휢휣휤휥휦휧휪휬휮휯휰휱휲휳휶휷휹������휺휻휽휾휿흀흁흂흃흅흆흈흊흋흌흍흎흏흒흓흕흚흛흜흝흞������흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵흶흷흸흹흺흻흾흿힀힂힃힄힅힆힇힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�\".split(\"\");\r\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\r\nD[198] = \"�����������������������������������������������������������������힍힎힏힑힒힓힔힕힖힗힚힜힞힟힠힡힢힣������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�\".split(\"\");\r\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\r\nD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�\".split(\"\");\r\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\r\nD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�\".split(\"\");\r\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\r\nD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\r\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\r\nD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�\".split(\"\");\r\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\r\nD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�\".split(\"\");\r\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\r\nD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�\".split(\"\");\r\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\r\nD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�\".split(\"\");\r\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\r\nD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�\".split(\"\");\r\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\r\nD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�\".split(\"\");\r\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\r\nD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�\".split(\"\");\r\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\r\nD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\r\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\r\nD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�\".split(\"\");\r\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\r\nD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�\".split(\"\");\r\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\r\nD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�\".split(\"\");\r\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\r\nD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�\".split(\"\");\r\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\r\nD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�\".split(\"\");\r\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\r\nD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�\".split(\"\");\r\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\r\nD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�\".split(\"\");\r\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\r\nD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�\".split(\"\");\r\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\r\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�\".split(\"\");\r\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\r\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�\".split(\"\");\r\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\r\nD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�\".split(\"\");\r\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\r\nD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�\".split(\"\");\r\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\r\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�\".split(\"\");\r\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\r\nD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�\".split(\"\");\r\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\r\nD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�\".split(\"\");\r\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\r\nD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�\".split(\"\");\r\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\r\nD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�\".split(\"\");\r\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\r\nD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�\".split(\"\");\r\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\r\nD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�\".split(\"\");\r\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\r\nD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�\".split(\"\");\r\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\r\nD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�\".split(\"\");\r\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\r\nD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�\".split(\"\");\r\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\r\nD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�\".split(\"\");\r\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\r\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\r\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\r\nD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�\".split(\"\");\r\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\r\nD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�\".split(\"\");\r\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\r\nD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�\".split(\"\");\r\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\r\nD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�\".split(\"\");\r\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\r\nD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�\".split(\"\");\r\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\r\nD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�\".split(\"\");\r\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\r\nD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�\".split(\"\");\r\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\r\nD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�\".split(\"\");\r\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\r\nD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�\".split(\"\");\r\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\r\nD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�\".split(\"\");\r\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\r\nD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�\".split(\"\");\r\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\r\nD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�\".split(\"\");\r\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\r\nD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�\".split(\"\");\r\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\r\nD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�\".split(\"\");\r\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\r\nD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�\".split(\"\");\r\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\r\nD[250] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�\".split(\"\");\r\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\r\nD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�\".split(\"\");\r\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\r\nD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�\".split(\"\");\r\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\r\nD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\r\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\r\nreturn {\"enc\": e, \"dec\": d }; })();\r\ncptable[950] = (function(){ var d = [], e = {}, D = [], j;\r\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\r\nD[161] = \"���������������������������������������������������������������� ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚����������������������������������﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/�\".split(\"\");\r\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\r\nD[162] = \"����������������������������������������������������������������\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭����������������������������������╮╰╯═╞╪╡◢◣◥◤╱╲╳0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩十卄卅ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv�\".split(\"\");\r\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\r\nD[163] = \"����������������������������������������������������������������wxyzΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ����������������������������������ㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ���������������������������������€������������������������������\".split(\"\");\r\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\r\nD[164] = \"����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才����������������������������������丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙�\".split(\"\");\r\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\r\nD[165] = \"����������������������������������������������������������������世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外����������������������������������央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全�\".split(\"\");\r\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\r\nD[166] = \"����������������������������������������������������������������共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年����������������������������������式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣�\".split(\"\");\r\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\r\nD[167] = \"����������������������������������������������������������������作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍����������������������������������均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠�\".split(\"\");\r\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\r\nD[168] = \"����������������������������������������������������������������杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒����������������������������������芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵�\".split(\"\");\r\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\r\nD[169] = \"����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊�\".split(\"\");\r\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\r\nD[170] = \"����������������������������������������������������������������昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠����������������������������������炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附�\".split(\"\");\r\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\r\nD[171] = \"����������������������������������������������������������������陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品����������������������������������哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷�\".split(\"\");\r\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\r\nD[172] = \"����������������������������������������������������������������拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄�\".split(\"\");\r\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\r\nD[173] = \"����������������������������������������������������������������耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥����������������������������������迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪�\".split(\"\");\r\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\r\nD[174] = \"����������������������������������������������������������������哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙����������������������������������恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�\".split(\"\");\r\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\r\nD[175] = \"����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷����������������������������������砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃�\".split(\"\");\r\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\r\nD[176] = \"����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡����������������������������������陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀�\".split(\"\");\r\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\r\nD[177] = \"����������������������������������������������������������������娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽����������������������������������情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺�\".split(\"\");\r\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\r\nD[178] = \"����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶����������������������������������瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼�\".split(\"\");\r\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\r\nD[179] = \"����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途����������������������������������部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠�\".split(\"\");\r\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\r\nD[180] = \"����������������������������������������������������������������婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍����������������������������������插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋�\".split(\"\");\r\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\r\nD[181] = \"����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘����������������������������������窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁�\".split(\"\");\r\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\r\nD[182] = \"����������������������������������������������������������������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑����������������������������������間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼�\".split(\"\");\r\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\r\nD[183] = \"����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業����������������������������������楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督�\".split(\"\");\r\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\r\nD[184] = \"����������������������������������������������������������������睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�\".split(\"\");\r\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\r\nD[185] = \"����������������������������������������������������������������辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴����������������������������������飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�\".split(\"\");\r\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\r\nD[186] = \"����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬�\".split(\"\");\r\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\r\nD[187] = \"����������������������������������������������������������������罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤����������������������������������說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�\".split(\"\");\r\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\r\nD[188] = \"����������������������������������������������������������������劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂����������������������������������慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃�\".split(\"\");\r\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\r\nD[189] = \"����������������������������������������������������������������瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞�\".split(\"\");\r\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\r\nD[190] = \"����������������������������������������������������������������輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉����������������������������������鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡�\".split(\"\");\r\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\r\nD[191] = \"����������������������������������������������������������������濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚�\".split(\"\");\r\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\r\nD[192] = \"����������������������������������������������������������������錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇����������������������������������嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬�\".split(\"\");\r\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\r\nD[193] = \"����������������������������������������������������������������瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪����������������������������������薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁�\".split(\"\");\r\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\r\nD[194] = \"����������������������������������������������������������������駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘����������������������������������癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦�\".split(\"\");\r\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\r\nD[195] = \"����������������������������������������������������������������鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸����������������������������������獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類�\".split(\"\");\r\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\r\nD[196] = \"����������������������������������������������������������������願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼����������������������������������纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴�\".split(\"\");\r\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\r\nD[197] = \"����������������������������������������������������������������護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬����������������������������������禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒�\".split(\"\");\r\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\r\nD[198] = \"����������������������������������������������������������������讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲���������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\r\nD[201] = \"����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋�\".split(\"\");\r\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\r\nD[202] = \"����������������������������������������������������������������汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘����������������������������������吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇�\".split(\"\");\r\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\r\nD[203] = \"����������������������������������������������������������������杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢�\".split(\"\");\r\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\r\nD[204] = \"����������������������������������������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋����������������������������������怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲�\".split(\"\");\r\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\r\nD[205] = \"����������������������������������������������������������������泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏�\".split(\"\");\r\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\r\nD[206] = \"����������������������������������������������������������������哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺�\".split(\"\");\r\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\r\nD[207] = \"����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂����������������������������������洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀�\".split(\"\");\r\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\r\nD[208] = \"����������������������������������������������������������������穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪����������������������������������苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�\".split(\"\");\r\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\r\nD[209] = \"����������������������������������������������������������������唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧����������������������������������恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤�\".split(\"\");\r\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\r\nD[210] = \"����������������������������������������������������������������毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐�\".split(\"\");\r\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\r\nD[211] = \"����������������������������������������������������������������笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢����������������������������������荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�\".split(\"\");\r\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\r\nD[212] = \"����������������������������������������������������������������酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏�\".split(\"\");\r\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\r\nD[213] = \"����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟����������������������������������捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉�\".split(\"\");\r\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\r\nD[214] = \"����������������������������������������������������������������淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏����������������������������������痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟�\".split(\"\");\r\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\r\nD[215] = \"����������������������������������������������������������������耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷����������������������������������蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪�\".split(\"\");\r\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\r\nD[216] = \"����������������������������������������������������������������釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷����������������������������������堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔�\".split(\"\");\r\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\r\nD[217] = \"����������������������������������������������������������������惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒����������������������������������晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞�\".split(\"\");\r\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\r\nD[218] = \"����������������������������������������������������������������湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖����������������������������������琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥�\".split(\"\");\r\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\r\nD[219] = \"����������������������������������������������������������������罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳����������������������������������菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺�\".split(\"\");\r\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\r\nD[220] = \"����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈����������������������������������隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆�\".split(\"\");\r\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\r\nD[221] = \"����������������������������������������������������������������媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤����������������������������������搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼�\".split(\"\");\r\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\r\nD[222] = \"����������������������������������������������������������������毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓����������������������������������煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�\".split(\"\");\r\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\r\nD[223] = \"����������������������������������������������������������������稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤�\".split(\"\");\r\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\r\nD[224] = \"����������������������������������������������������������������觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿����������������������������������遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠�\".split(\"\");\r\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\r\nD[225] = \"����������������������������������������������������������������凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠����������������������������������寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉�\".split(\"\");\r\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\r\nD[226] = \"����������������������������������������������������������������榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊����������������������������������漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓�\".split(\"\");\r\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\r\nD[227] = \"����������������������������������������������������������������禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�\".split(\"\");\r\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\r\nD[228] = \"����������������������������������������������������������������裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘�\".split(\"\");\r\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\r\nD[229] = \"����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉����������������������������������憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒�\".split(\"\");\r\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\r\nD[230] = \"����������������������������������������������������������������澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙����������������������������������獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟�\".split(\"\");\r\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\r\nD[231] = \"����������������������������������������������������������������膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢����������������������������������蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧�\".split(\"\");\r\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\r\nD[232] = \"����������������������������������������������������������������踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓����������������������������������銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮�\".split(\"\");\r\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\r\nD[233] = \"����������������������������������������������������������������噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺����������������������������������憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸�\".split(\"\");\r\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\r\nD[234] = \"����������������������������������������������������������������澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘�\".split(\"\");\r\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\r\nD[235] = \"����������������������������������������������������������������蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠����������������������������������諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�\".split(\"\");\r\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\r\nD[236] = \"����������������������������������������������������������������錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕����������������������������������魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎�\".split(\"\");\r\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\r\nD[237] = \"����������������������������������������������������������������檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞�\".split(\"\");\r\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\r\nD[238] = \"����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞����������������������������������謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜�\".split(\"\");\r\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\r\nD[239] = \"����������������������������������������������������������������鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶�\".split(\"\");\r\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\r\nD[240] = \"����������������������������������������������������������������璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒����������������������������������臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧�\".split(\"\");\r\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\r\nD[241] = \"����������������������������������������������������������������蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰�\".split(\"\");\r\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\r\nD[242] = \"����������������������������������������������������������������徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕�\".split(\"\");\r\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\r\nD[243] = \"����������������������������������������������������������������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦����������������������������������鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲�\".split(\"\");\r\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\r\nD[244] = \"����������������������������������������������������������������嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩����������������������������������禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿�\".split(\"\");\r\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\r\nD[245] = \"����������������������������������������������������������������鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛����������������������������������鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥�\".split(\"\");\r\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\r\nD[246] = \"����������������������������������������������������������������蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺����������������������������������騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚�\".split(\"\");\r\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\r\nD[247] = \"����������������������������������������������������������������糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊����������������������������������驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾�\".split(\"\");\r\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\r\nD[248] = \"����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏����������������������������������齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚�\".split(\"\");\r\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\r\nD[249] = \"����������������������������������������������������������������纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓�\".split(\"\");\r\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\r\nreturn {\"enc\": e, \"dec\": d }; })();\r\ncptable[1250] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[1251] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[1252] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[1253] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[1254] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[1255] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹ�ֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[1256] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[1257] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[1258] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[10000] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[10006] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[10007] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[10008] = (function(){ var d = [], e = {}, D = [], j;\r\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€���������������������������������������������������������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\r\nD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。・ˉˇ¨〃々―~�…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�\".split(\"\");\r\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\r\nD[162] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���\".split(\"\");\r\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\r\nD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�\".split(\"\");\r\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\r\nD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\r\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\r\nD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\r\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\r\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������\".split(\"\");\r\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\r\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\r\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\r\nD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\r\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\r\nD[169] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\r\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\r\nD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�\".split(\"\");\r\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\r\nD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\r\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\r\nD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�\".split(\"\");\r\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\r\nD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�\".split(\"\");\r\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\r\nD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\r\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\r\nD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�\".split(\"\");\r\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\r\nD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�\".split(\"\");\r\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\r\nD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�\".split(\"\");\r\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\r\nD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�\".split(\"\");\r\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\r\nD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�\".split(\"\");\r\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\r\nD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�\".split(\"\");\r\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\r\nD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�\".split(\"\");\r\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\r\nD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�\".split(\"\");\r\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\r\nD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�\".split(\"\");\r\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\r\nD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�\".split(\"\");\r\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\r\nD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�\".split(\"\");\r\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\r\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�\".split(\"\");\r\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\r\nD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�\".split(\"\");\r\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\r\nD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\r\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\r\nD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�\".split(\"\");\r\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\r\nD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�\".split(\"\");\r\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\r\nD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�\".split(\"\");\r\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\r\nD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�\".split(\"\");\r\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\r\nD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\r\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\r\nD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�\".split(\"\");\r\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\r\nD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�\".split(\"\");\r\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\r\nD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�\".split(\"\");\r\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\r\nD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�\".split(\"\");\r\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\r\nD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�\".split(\"\");\r\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\r\nD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�\".split(\"\");\r\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\r\nD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�\".split(\"\");\r\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\r\nD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�\".split(\"\");\r\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\r\nD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�\".split(\"\");\r\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\r\nD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�\".split(\"\");\r\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\r\nD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�\".split(\"\");\r\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\r\nD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�\".split(\"\");\r\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\r\nD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�\".split(\"\");\r\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\r\nD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�\".split(\"\");\r\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\r\nD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\r\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\r\nD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������\".split(\"\");\r\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\r\nD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�\".split(\"\");\r\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\r\nD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\r\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\r\nD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�\".split(\"\");\r\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\r\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�\".split(\"\");\r\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\r\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�\".split(\"\");\r\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\r\nD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�\".split(\"\");\r\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\r\nD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�\".split(\"\");\r\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\r\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�\".split(\"\");\r\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\r\nD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�\".split(\"\");\r\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\r\nD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�\".split(\"\");\r\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\r\nD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�\".split(\"\");\r\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\r\nD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\r\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\r\nD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�\".split(\"\");\r\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\r\nD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�\".split(\"\");\r\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\r\nD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\r\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\r\nD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�\".split(\"\");\r\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\r\nD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\r\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\r\nD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�\".split(\"\");\r\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\r\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�\".split(\"\");\r\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\r\nD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\r\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\r\nD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�\".split(\"\");\r\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\r\nD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�\".split(\"\");\r\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\r\nD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\r\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\r\nD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\r\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\r\nD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\r\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\r\nD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�\".split(\"\");\r\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\r\nD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�\".split(\"\");\r\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\r\nD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�\".split(\"\");\r\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\r\nD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�\".split(\"\");\r\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\r\nD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\r\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\r\nD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\r\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\r\nD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\r\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\r\nreturn {\"enc\": e, \"dec\": d }; })();\r\ncptable[10029] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[10079] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[10081] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\ncptable[28591] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\r\n// eslint-disable-next-line no-undef\r\nif (typeof module !== 'undefined' && module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = cptable;\r\n/*! cputils.js (C) 2013-present SheetJS -- http://sheetjs.com */\r\n/* vim: set ft=javascript: */\r\n/*jshint newcap: false */\r\n(function(root, factory) {\r\n /*jshint ignore:start */\r\n /*eslint-disable */\r\n \"use strict\";\r\n if(typeof cptable === \"undefined\") {\r\n if(typeof require !== \"undefined\"){\r\n var cpt = cptable;\r\n if (typeof module !== 'undefined' && module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = factory(cpt);\r\n else root.cptable = factory(cpt);\r\n } else throw new Error(\"cptable not found\");\r\n } else cptable = factory(cptable);\r\n /*eslint-enable */\r\n /*jshint ignore:end */\r\n}(this, function(cpt){\r\n \"use strict\";\r\n /*global module, Buffer */\r\n var magic = {\r\n \"1200\":\"utf16le\",\r\n \"1201\":\"utf16be\",\r\n \"12000\":\"utf32le\",\r\n \"12001\":\"utf32be\",\r\n \"16969\":\"utf64le\",\r\n \"20127\":\"ascii\",\r\n \"65000\":\"utf7\",\r\n \"65001\":\"utf8\"\r\n };\r\n\r\n var sbcs_cache = [874,1250,1251,1252,1253,1254,1255,1256,10000];\r\n var dbcs_cache = [932,936,949,950];\r\n var magic_cache = [65001];\r\n var magic_decode = {};\r\n var magic_encode = {};\r\n var cpdcache = {};\r\n var cpecache = {};\r\n\r\n var sfcc = function sfcc(x) { return String.fromCharCode(x); };\r\n var cca = function cca(x) { return x.charCodeAt(0); };\r\n\r\n var has_buf = (typeof Buffer !== 'undefined');\r\n var Buffer_from = function(){};\r\n if(has_buf) {\r\n var nbfs = !Buffer.from;\r\n if(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\r\n Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\r\n // $FlowIgnore\r\n if(!Buffer.allocUnsafe) Buffer.allocUnsafe = function(n) { return new Buffer(n); };\r\n\r\n var mdl = 1024, mdb = Buffer.allocUnsafe(mdl);\r\n var make_EE = function make_EE(E){\r\n var EE = Buffer.allocUnsafe(65536);\r\n for(var i = 0; i < 65536;++i) EE[i] = 0;\r\n var keys = Object.keys(E), len = keys.length;\r\n for(var ee = 0, e = keys[ee]; ee < len; ++ee) {\r\n if(!(e = keys[ee])) continue;\r\n EE[e.charCodeAt(0)] = E[e];\r\n }\r\n return EE;\r\n };\r\n var sbcs_encode = function make_sbcs_encode(cp) {\r\n var EE = make_EE(cpt[cp].enc);\r\n return function sbcs_e(data, ofmt) {\r\n var len = data.length;\r\n var out, i=0, j=0, D=0, w=0;\r\n if(typeof data === 'string') {\r\n out = Buffer.allocUnsafe(len);\r\n for(i = 0; i < len; ++i) out[i] = EE[data.charCodeAt(i)];\r\n } else if(Buffer.isBuffer(data)) {\r\n out = Buffer.allocUnsafe(2*len);\r\n j = 0;\r\n for(i = 0; i < len; ++i) {\r\n D = data[i];\r\n if(D < 128) out[j++] = EE[D];\r\n else if(D < 224) { out[j++] = EE[((D&31)<<6)+(data[i+1]&63)]; ++i; }\r\n else if(D < 240) { out[j++] = EE[((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63)]; i+=2; }\r\n else {\r\n w = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3;\r\n if(w < 65536) out[j++] = EE[w];\r\n else { w -= 65536; out[j++] = EE[0xD800 + ((w>>10)&1023)]; out[j++] = EE[0xDC00 + (w&1023)]; }\r\n }\r\n }\r\n out = out.slice(0,j);\r\n } else {\r\n out = Buffer.allocUnsafe(len);\r\n for(i = 0; i < len; ++i) out[i] = EE[data[i].charCodeAt(0)];\r\n }\r\n if(!ofmt || ofmt === 'buf') return out;\r\n if(ofmt !== 'arr') return out.toString('binary');\r\n return [].slice.call(out);\r\n };\r\n };\r\n var sbcs_decode = function make_sbcs_decode(cp) {\r\n var D = cpt[cp].dec;\r\n var DD = Buffer.allocUnsafe(131072), d=0, c=\"\";\r\n for(d=0;d>8;\r\n }\r\n return function sbcs_d(data) {\r\n var len = data.length, i=0, j=0;\r\n if(2 * len > mdl) { mdl = 2 * len; mdb = Buffer.allocUnsafe(mdl); }\r\n if(Buffer.isBuffer(data)) {\r\n for(i = 0; i < len; i++) {\r\n j = 2*data[i];\r\n mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\r\n }\r\n } else if(typeof data === \"string\") {\r\n for(i = 0; i < len; i++) {\r\n j = 2*data.charCodeAt(i);\r\n mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\r\n }\r\n } else {\r\n for(i = 0; i < len; i++) {\r\n j = 2*data[i];\r\n mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\r\n }\r\n }\r\n return mdb.slice(0, 2 * len).toString('ucs2');\r\n };\r\n };\r\n var dbcs_encode = function make_dbcs_encode(cp) {\r\n var E = cpt[cp].enc;\r\n var EE = Buffer.allocUnsafe(131072);\r\n for(var i = 0; i < 131072; ++i) EE[i] = 0;\r\n var keys = Object.keys(E);\r\n for(var ee = 0, e = keys[ee]; ee < keys.length; ++ee) {\r\n if(!(e = keys[ee])) continue;\r\n var f = e.charCodeAt(0);\r\n EE[2*f] = E[e] & 255; EE[2*f+1] = E[e]>>8;\r\n }\r\n return function dbcs_e(data, ofmt) {\r\n var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, jj=0, k=0, D=0;\r\n if(typeof data === 'string') {\r\n for(i = k = 0; i < len; ++i) {\r\n j = data.charCodeAt(i)*2;\r\n out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\r\n }\r\n out = out.slice(0,k);\r\n } else if(Buffer.isBuffer(data)) {\r\n for(i = k = 0; i < len; ++i) {\r\n D = data[i];\r\n if(D < 128) j = D;\r\n else if(D < 224) { j = ((D&31)<<6)+(data[i+1]&63); ++i; }\r\n else if(D < 240) { j = ((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63); i+=2; }\r\n else { j = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3; }\r\n if(j<65536) { j*=2; out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; }\r\n else { jj = j-65536;\r\n j=2*(0xD800 + ((jj>>10)&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\r\n j=2*(0xDC00 + (jj&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\r\n }\r\n }\r\n out = out.slice(0,k);\r\n } else {\r\n for(i = k = 0; i < len; i++) {\r\n j = data[i].charCodeAt(0)*2;\r\n out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\r\n }\r\n }\r\n if(!ofmt || ofmt === 'buf') return out;\r\n if(ofmt !== 'arr') return out.toString('binary');\r\n return [].slice.call(out);\r\n };\r\n };\r\n var dbcs_decode = function make_dbcs_decode(cp) {\r\n var D = cpt[cp].dec;\r\n var DD = Buffer.allocUnsafe(131072), d=0, c, w=0, j=0, i=0;\r\n for(i = 0; i < 65536; ++i) { DD[2*i] = 0xFF; DD[2*i+1] = 0xFD;}\r\n for(d = 0; d < D.length; ++d) {\r\n if(!(c=D[d])) continue;\r\n w = c.charCodeAt(0);\r\n j = 2*d;\r\n DD[j] = w&255; DD[j+1] = w>>8;\r\n }\r\n return function dbcs_d(data) {\r\n var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, k=0;\r\n if(Buffer.isBuffer(data)) {\r\n for(i = 0; i < len; i++) {\r\n j = 2*data[i];\r\n if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; }\r\n out[k++] = DD[j]; out[k++] = DD[j+1];\r\n }\r\n } else if(typeof data === \"string\") {\r\n for(i = 0; i < len; i++) {\r\n j = 2*data.charCodeAt(i);\r\n if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data.charCodeAt(i)<<8)+data.charCodeAt(i+1)); ++i; }\r\n out[k++] = DD[j]; out[k++] = DD[j+1];\r\n }\r\n } else {\r\n for(i = 0; i < len; i++) {\r\n j = 2*data[i];\r\n if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; }\r\n out[k++] = DD[j]; out[k++] = DD[j+1];\r\n }\r\n }\r\n return out.slice(0,k).toString('ucs2');\r\n };\r\n };\r\n magic_decode[65001] = function utf8_d(data) {\r\n if(typeof data === \"string\") return utf8_d(data.split(\"\").map(cca));\r\n var len = data.length, w = 0, ww = 0;\r\n if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); }\r\n var i = 0;\r\n if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3;\r\n for(var j = 1, k = 0, D = 0; i < len; i+=j) {\r\n j = 1; D = data[i];\r\n if(D < 128) w = D;\r\n else if(D < 224) { w=(D&31)*64+(data[i+1]&63); j=2; }\r\n else if(D < 240) { w=((D&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; }\r\n else { w=(D&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; }\r\n if(w < 65536) { mdb[k++] = w&255; mdb[k++] = w>>8; }\r\n else {\r\n w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023);\r\n mdb[k++] = ww&255; mdb[k++] = ww>>>8; mdb[k++] = w&255; mdb[k++] = (w>>>8)&255;\r\n }\r\n }\r\n return mdb.slice(0,k).toString('ucs2');\r\n };\r\n magic_encode[65001] = function utf8_e(data, ofmt) {\r\n if(has_buf && Buffer.isBuffer(data)) {\r\n if(!ofmt || ofmt === 'buf') return data;\r\n if(ofmt !== 'arr') return data.toString('binary');\r\n return [].slice.call(data);\r\n }\r\n var len = data.length, w = 0, ww = 0, j = 0;\r\n var direct = typeof data === \"string\";\r\n if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); }\r\n for(var i = 0; i < len; ++i) {\r\n w = direct ? data.charCodeAt(i) : data[i].charCodeAt(0);\r\n if(w <= 0x007F) mdb[j++] = w;\r\n else if(w <= 0x07FF) {\r\n mdb[j++] = 192 + (w >> 6);\r\n mdb[j++] = 128 + (w&63);\r\n } else if(w >= 0xD800 && w <= 0xDFFF) {\r\n w -= 0xD800; ++i;\r\n ww = (direct ? data.charCodeAt(i) : data[i].charCodeAt(0)) - 0xDC00 + (w << 10);\r\n mdb[j++] = 240 + ((ww>>>18) & 0x07);\r\n mdb[j++] = 144 + ((ww>>>12) & 0x3F);\r\n mdb[j++] = 128 + ((ww>>>6) & 0x3F);\r\n mdb[j++] = 128 + (ww & 0x3F);\r\n } else {\r\n mdb[j++] = 224 + (w >> 12);\r\n mdb[j++] = 128 + ((w >> 6)&63);\r\n mdb[j++] = 128 + (w&63);\r\n }\r\n }\r\n if(!ofmt || ofmt === 'buf') return mdb.slice(0,j);\r\n if(ofmt !== 'arr') return mdb.slice(0,j).toString('binary');\r\n return [].slice.call(mdb, 0, j);\r\n };\r\n }\r\n\r\n var encache = function encache() {\r\n if(has_buf) {\r\n if(cpdcache[sbcs_cache[0]]) return;\r\n var i=0, s=0;\r\n for(i = 0; i < sbcs_cache.length; ++i) {\r\n s = sbcs_cache[i];\r\n if(cpt[s]) {\r\n cpdcache[s] = sbcs_decode(s);\r\n cpecache[s] = sbcs_encode(s);\r\n }\r\n }\r\n for(i = 0; i < dbcs_cache.length; ++i) {\r\n s = dbcs_cache[i];\r\n if(cpt[s]) {\r\n cpdcache[s] = dbcs_decode(s);\r\n cpecache[s] = dbcs_encode(s);\r\n }\r\n }\r\n for(i = 0; i < magic_cache.length; ++i) {\r\n s = magic_cache[i];\r\n if(magic_decode[s]) cpdcache[s] = magic_decode[s];\r\n if(magic_encode[s]) cpecache[s] = magic_encode[s];\r\n }\r\n }\r\n };\r\n var null_enc = function(data, ofmt) { void ofmt; return \"\"; };\r\n var cp_decache = function cp_decache(cp) { delete cpdcache[cp]; delete cpecache[cp]; };\r\n var decache = function decache() {\r\n if(has_buf) {\r\n if(!cpdcache[sbcs_cache[0]]) return;\r\n sbcs_cache.forEach(cp_decache);\r\n dbcs_cache.forEach(cp_decache);\r\n magic_cache.forEach(cp_decache);\r\n }\r\n last_enc = null_enc; last_cp = 0;\r\n };\r\n var cache = {\r\n encache: encache,\r\n decache: decache,\r\n sbcs: sbcs_cache,\r\n dbcs: dbcs_cache\r\n };\r\n\r\n encache();\r\n\r\n var BM = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n var SetD = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?\";\r\n var last_enc = null_enc, last_cp = 0;\r\n var encode = function encode(cp, data, ofmt) {\r\n if(cp === last_cp && last_enc) { return last_enc(data, ofmt); }\r\n if(cpecache[cp]) { last_enc = cpecache[last_cp=cp]; return last_enc(data, ofmt); }\r\n if(has_buf && Buffer.isBuffer(data)) data = data.toString('utf8');\r\n var len = data.length;\r\n var out = has_buf ? Buffer.allocUnsafe(4*len) : [], w=0, i=0, j = 0, ww=0;\r\n var C = cpt[cp], E, M = \"\";\r\n var isstr = typeof data === 'string';\r\n if(C && (E=C.enc)) for(i = 0; i < len; ++i, ++j) {\r\n w = E[isstr? data.charAt(i) : data[i]];\r\n if(w > 255) {\r\n out[j] = w>>8;\r\n out[++j] = w&255;\r\n } else out[j] = w&255;\r\n }\r\n else if((M=magic[cp])) switch(M) {\r\n case \"utf8\":\r\n if(has_buf && isstr) { out = Buffer_from(data, M); j = out.length; break; }\r\n for(i = 0; i < len; ++i, ++j) {\r\n w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\r\n if(w <= 0x007F) out[j] = w;\r\n else if(w <= 0x07FF) {\r\n out[j] = 192 + (w >> 6);\r\n out[++j] = 128 + (w&63);\r\n } else if(w >= 0xD800 && w <= 0xDFFF) {\r\n w -= 0xD800;\r\n ww = (isstr ? data.charCodeAt(++i) : data[++i].charCodeAt(0)) - 0xDC00 + (w << 10);\r\n out[j] = 240 + ((ww>>>18) & 0x07);\r\n out[++j] = 144 + ((ww>>>12) & 0x3F);\r\n out[++j] = 128 + ((ww>>>6) & 0x3F);\r\n out[++j] = 128 + (ww & 0x3F);\r\n } else {\r\n out[j] = 224 + (w >> 12);\r\n out[++j] = 128 + ((w >> 6)&63);\r\n out[++j] = 128 + (w&63);\r\n }\r\n }\r\n break;\r\n case \"ascii\":\r\n if(has_buf && typeof data === \"string\") { out = Buffer_from(data, M); j = out.length; break; }\r\n for(i = 0; i < len; ++i, ++j) {\r\n w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\r\n if(w <= 0x007F) out[j] = w;\r\n else throw new Error(\"bad ascii \" + w);\r\n }\r\n break;\r\n case \"utf16le\":\r\n if(has_buf && typeof data === \"string\") { out = Buffer_from(data, M); j = out.length; break; }\r\n for(i = 0; i < len; ++i) {\r\n w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\r\n out[j++] = w&255;\r\n out[j++] = w>>8;\r\n }\r\n break;\r\n case \"utf16be\":\r\n for(i = 0; i < len; ++i) {\r\n w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\r\n out[j++] = w>>8;\r\n out[j++] = w&255;\r\n }\r\n break;\r\n case \"utf32le\":\r\n for(i = 0; i < len; ++i) {\r\n w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\r\n if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00);\r\n out[j++] = w&255; w >>= 8;\r\n out[j++] = w&255; w >>= 8;\r\n out[j++] = w&255; w >>= 8;\r\n out[j++] = w&255;\r\n }\r\n break;\r\n case \"utf32be\":\r\n for(i = 0; i < len; ++i) {\r\n w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\r\n if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00);\r\n out[j+3] = w&255; w >>= 8;\r\n out[j+2] = w&255; w >>= 8;\r\n out[j+1] = w&255; w >>= 8;\r\n out[j] = w&255;\r\n j+=4;\r\n }\r\n break;\r\n case \"utf7\":\r\n for(i = 0; i < len; i++) {\r\n var c = isstr ? data.charAt(i) : data[i].charAt(0);\r\n if(c === \"+\") { out[j++] = 0x2b; out[j++] = 0x2d; continue; }\r\n if(SetD.indexOf(c) > -1) { out[j++] = c.charCodeAt(0); continue; }\r\n var tt = encode(1201, c);\r\n out[j++] = 0x2b;\r\n out[j++] = BM.charCodeAt(tt[0]>>2);\r\n out[j++] = BM.charCodeAt(((tt[0]&0x03)<<4) + ((tt[1]||0)>>4));\r\n out[j++] = BM.charCodeAt(((tt[1]&0x0F)<<2) + ((tt[2]||0)>>6));\r\n out[j++] = 0x2d;\r\n }\r\n break;\r\n default: throw new Error(\"Unsupported magic: \" + cp + \" \" + magic[cp]);\r\n }\r\n else throw new Error(\"Unrecognized CP: \" + cp);\r\n out = out.slice(0,j);\r\n if(!has_buf) return (ofmt == 'str') ? (out).map(sfcc).join(\"\") : out;\r\n if(!ofmt || ofmt === 'buf') return out;\r\n if(ofmt !== 'arr') return out.toString('binary');\r\n return [].slice.call(out);\r\n };\r\n var decode = function decode(cp, data) {\r\n var F; if((F=cpdcache[cp])) return F(data);\r\n if(typeof data === \"string\") return decode(cp, data.split(\"\").map(cca));\r\n var len = data.length, out = new Array(len), s=\"\", w=0, i=0, j=1, k=0, ww=0;\r\n var C = cpt[cp], D, M=\"\";\r\n if(C && (D=C.dec)) {\r\n for(i = 0; i < len; i+=j) {\r\n j = 2;\r\n s = D[(data[i]<<8)+ data[i+1]];\r\n if(!s) {\r\n j = 1;\r\n s = D[data[i]];\r\n }\r\n if(!s) throw new Error('Unrecognized code: ' + data[i] + ' ' + data[i+j-1] + ' ' + i + ' ' + j + ' ' + D[data[i]]);\r\n out[k++] = s;\r\n }\r\n }\r\n else if((M=magic[cp])) switch(M) {\r\n case \"utf8\":\r\n if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3;\r\n for(; i < len; i+=j) {\r\n j = 1;\r\n if(data[i] < 128) w = data[i];\r\n else if(data[i] < 224) { w=(data[i]&31)*64+(data[i+1]&63); j=2; }\r\n else if(data[i] < 240) { w=((data[i]&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; }\r\n else { w=(data[i]&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; }\r\n if(w < 65536) { out[k++] = String.fromCharCode(w); }\r\n else {\r\n w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023);\r\n out[k++] = String.fromCharCode(ww); out[k++] = String.fromCharCode(w);\r\n }\r\n }\r\n break;\r\n case \"ascii\":\r\n if(has_buf && Buffer.isBuffer(data)) return data.toString(M);\r\n for(i = 0; i < len; i++) out[i] = String.fromCharCode(data[i]);\r\n k = len; break;\r\n case \"utf16le\":\r\n if(len >= 2 && data[0] == 0xFF) if(data[1] == 0xFE) i = 2;\r\n if(has_buf && Buffer.isBuffer(data)) return data.toString(M);\r\n j = 2;\r\n for(; i+1 < len; i+=j) {\r\n out[k++] = String.fromCharCode((data[i+1]<<8) + data[i]);\r\n }\r\n break;\r\n case \"utf16be\":\r\n if(len >= 2 && data[0] == 0xFE) if(data[1] == 0xFF) i = 2;\r\n j = 2;\r\n for(; i+1 < len; i+=j) {\r\n out[k++] = String.fromCharCode((data[i]<<8) + data[i+1]);\r\n }\r\n break;\r\n case \"utf32le\":\r\n if(len >= 4 && data[0] == 0xFF) if(data[1] == 0xFE && data[2] === 0 && data[3] === 0) i = 4;\r\n j = 4;\r\n for(; i < len; i+=j) {\r\n w = (data[i+3]<<24) + (data[i+2]<<16) + (data[i+1]<<8) + (data[i]);\r\n if(w > 0xFFFF) {\r\n w -= 0x10000;\r\n out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF));\r\n out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF));\r\n }\r\n else out[k++] = String.fromCharCode(w);\r\n }\r\n break;\r\n case \"utf32be\":\r\n if(len >= 4 && data[3] == 0xFF) if(data[2] == 0xFE && data[1] === 0 && data[0] === 0) i = 4;\r\n j = 4;\r\n for(; i < len; i+=j) {\r\n w = (data[i]<<24) + (data[i+1]<<16) + (data[i+2]<<8) + (data[i+3]);\r\n if(w > 0xFFFF) {\r\n w -= 0x10000;\r\n out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF));\r\n out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF));\r\n }\r\n else out[k++] = String.fromCharCode(w);\r\n }\r\n break;\r\n case \"utf7\":\r\n if(len >= 4 && data[0] == 0x2B && data[1] == 0x2F && data[2] == 0x76) {\r\n if(len >= 5 && data[3] == 0x38 && data[4] == 0x2D) i = 5;\r\n else if(data[3] == 0x38 || data[3] == 0x39 || data[3] == 0x2B || data[3] == 0x2F) i = 4;\r\n }\r\n for(; i < len; i+=j) {\r\n if(data[i] !== 0x2b) { j=1; out[k++] = String.fromCharCode(data[i]); continue; }\r\n j=1;\r\n if(data[i+1] === 0x2d) { j = 2; out[k++] = \"+\"; continue; }\r\n // eslint-disable-next-line no-useless-escape\r\n while(String.fromCharCode(data[i+j]).match(/[A-Za-z0-9+\\/]/)) j++;\r\n var dash = 0;\r\n if(data[i+j] === 0x2d) { ++j; dash=1; }\r\n var tt = [];\r\n var o64 = \"\";\r\n var c1=0, c2=0, c3=0;\r\n var e1=0, e2=0, e3=0, e4=0;\r\n for(var l = 1; l < j - dash;) {\r\n e1 = BM.indexOf(String.fromCharCode(data[i+l++]));\r\n e2 = BM.indexOf(String.fromCharCode(data[i+l++]));\r\n c1 = e1 << 2 | e2 >> 4;\r\n tt.push(c1);\r\n e3 = BM.indexOf(String.fromCharCode(data[i+l++]));\r\n if(e3 === -1) break;\r\n c2 = (e2 & 15) << 4 | e3 >> 2;\r\n tt.push(c2);\r\n e4 = BM.indexOf(String.fromCharCode(data[i+l++]));\r\n if(e4 === -1) break;\r\n c3 = (e3 & 3) << 6 | e4;\r\n if(e4 < 64) tt.push(c3);\r\n }\r\n o64 = decode(1201, tt);\r\n for(l = 0; l < o64.length; ++l) out[k++] = o64.charAt(l);\r\n }\r\n break;\r\n default: throw new Error(\"Unsupported magic: \" + cp + \" \" + magic[cp]);\r\n }\r\n else throw new Error(\"Unrecognized CP: \" + cp);\r\n return out.slice(0,k).join(\"\");\r\n };\r\n var hascp = function hascp(cp) { return !!(cpt[cp] || magic[cp]); };\r\n cpt.utils = { decode: decode, encode: encode, hascp: hascp, magic: magic, cache:cache };\r\n return cpt;\r\n}));\r\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\r\n/* vim: set ts=2: */\r\n/*exported XLSX */\r\n/*global global, exports, module, require:false, process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\r\n// jeffrey: jszip import\r\nvar XLSX = {};\r\nvar style_builder;\r\nfunction make_xlsx_lib(XLSX){\r\nXLSX.version = '0.18.10';\r\nvar current_codepage = 1200, current_ansi = 1252;\r\n/*global cptable:true, window */\r\nvar $cptable;\r\n\r\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\r\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\r\nvar CS2CP = ({\r\n0: 1252, /* ANSI */\r\n1: 65001, /* DEFAULT */\r\n2: 65001, /* SYMBOL */\r\n77: 10000, /* MAC */\r\n128: 932, /* SHIFTJIS */\r\n129: 949, /* HANGUL */\r\n130: 1361, /* JOHAB */\r\n134: 936, /* GB2312 */\r\n136: 950, /* CHINESEBIG5 */\r\n161: 1253, /* GREEK */\r\n162: 1254, /* TURKISH */\r\n163: 1258, /* VIETNAMESE */\r\n177: 1255, /* HEBREW */\r\n178: 1256, /* ARABIC */\r\n186: 1257, /* BALTIC */\r\n204: 1251, /* RUSSIAN */\r\n222: 874, /* THAI */\r\n238: 1250, /* EASTEUROPE */\r\n255: 1252, /* OEM */\r\n69: 6969 /* MISC */\r\n});\r\n\r\nvar set_ansi = function(cp) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\r\nfunction reset_ansi() { set_ansi(1252); }\r\n\r\nvar set_cp = function(cp) { current_codepage = cp; set_ansi(cp); };\r\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\r\n\r\nfunction char_codes(data) { var o = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\r\n\r\nfunction utf16leread(data) {\r\n\tvar o = [];\r\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\r\n\treturn o.join(\"\");\r\n}\r\nfunction utf16beread(data) {\r\n\tvar o = [];\r\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\r\n\treturn o.join(\"\");\r\n}\r\n\r\nvar debom = function(data) {\r\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\r\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\r\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\r\n\tif(c1 == 0xFEFF) return data.slice(1);\r\n\treturn data;\r\n};\r\n\r\nvar _getchar = function _gc1(x) { return String.fromCharCode(x); };\r\nvar _getansi = function _ga1(x) { return String.fromCharCode(x); };\r\n\r\nfunction set_cptable(cptable) {\r\n\t$cptable = cptable;\r\n\tset_cp = function(cp) { current_codepage = cp; set_ansi(cp); };\r\n\tdebom = function(data) {\r\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\r\n\t\treturn data;\r\n\t};\r\n\t_getchar = function _gc2(x) {\r\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\r\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\r\n\t};\r\n\t_getansi = function _ga2(x) {\r\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\r\n\t};\r\n\tcpdoit();\r\n}\r\nvar DENSE = null;\r\nvar DIF_XL = true;\r\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\nfunction Base64_encode(input) {\r\n var o = \"\";\r\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\r\n for (var i = 0; i < input.length; ) {\r\n c1 = input.charCodeAt(i++);\r\n e1 = c1 >> 2;\r\n c2 = input.charCodeAt(i++);\r\n e2 = (c1 & 3) << 4 | c2 >> 4;\r\n c3 = input.charCodeAt(i++);\r\n e3 = (c2 & 15) << 2 | c3 >> 6;\r\n e4 = c3 & 63;\r\n if (isNaN(c2)) {\r\n e3 = e4 = 64;\r\n } else if (isNaN(c3)) {\r\n e4 = 64;\r\n }\r\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\r\n }\r\n return o;\r\n}\r\nfunction Base64_encode_pass(input) {\r\n var o = \"\";\r\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\r\n for (var i = 0; i < input.length; ) {\r\n c1 = input.charCodeAt(i++);\r\n if (c1 > 255)\r\n c1 = 95;\r\n e1 = c1 >> 2;\r\n c2 = input.charCodeAt(i++);\r\n if (c2 > 255)\r\n c2 = 95;\r\n e2 = (c1 & 3) << 4 | c2 >> 4;\r\n c3 = input.charCodeAt(i++);\r\n if (c3 > 255)\r\n c3 = 95;\r\n e3 = (c2 & 15) << 2 | c3 >> 6;\r\n e4 = c3 & 63;\r\n if (isNaN(c2)) {\r\n e3 = e4 = 64;\r\n } else if (isNaN(c3)) {\r\n e4 = 64;\r\n }\r\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\r\n }\r\n return o;\r\n}\r\nfunction Base64_decode(input) {\r\n var o = \"\";\r\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\r\n input = input.replace(/^data:([^\\/]+\\/[^\\/]+)?;base64\\,/, \"\").replace(/[^\\w\\+\\/\\=]/g, \"\");\r\n for (var i = 0; i < input.length; ) {\r\n e1 = Base64_map.indexOf(input.charAt(i++));\r\n e2 = Base64_map.indexOf(input.charAt(i++));\r\n c1 = e1 << 2 | e2 >> 4;\r\n o += String.fromCharCode(c1);\r\n e3 = Base64_map.indexOf(input.charAt(i++));\r\n c2 = (e2 & 15) << 4 | e3 >> 2;\r\n if (e3 !== 64) {\r\n o += String.fromCharCode(c2);\r\n }\r\n e4 = Base64_map.indexOf(input.charAt(i++));\r\n c3 = (e3 & 3) << 6 | e4;\r\n if (e4 !== 64) {\r\n o += String.fromCharCode(c3);\r\n }\r\n }\r\n return o;\r\n}\r\nvar has_buf = (function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\r\n\r\nvar Buffer_from = (function() {\r\n\tif(typeof Buffer !== 'undefined') {\r\n\t\tvar nbfs = !Buffer.from;\r\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\r\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\r\n\t}\r\n\treturn function() {};\r\n})();\r\nvar buf_utf16le = (function() {\r\n\tif(typeof Buffer === 'undefined') return false;\r\n\tvar x = Buffer_from([65,0]);\r\n\tif(!x) return false;\r\n\tvar o = x.toString(\"utf16le\");\r\n\treturn o.length == 1;\r\n})();\r\n\r\n\r\nfunction new_raw_buf(len) {\r\n\t/* jshint -W056 */\r\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\r\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\r\n\t/* jshint +W056 */\r\n}\r\n\r\nfunction new_unsafe_buf(len) {\r\n\t/* jshint -W056 */\r\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\r\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\r\n\t/* jshint +W056 */\r\n}\r\n\r\nvar s2a = function s2a(s) {\r\n\tif(has_buf) return Buffer_from(s, \"binary\");\r\n\treturn s.split(\"\").map(function(x){ return x.charCodeAt(0) & 0xff; });\r\n};\r\n\r\nfunction s2ab(s) {\r\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\r\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\r\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\treturn buf;\r\n}\r\n\r\nfunction a2s(data) {\r\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\r\n\tvar o = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\r\n}\r\n\r\nfunction a2u(data) {\r\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\r\n\treturn new Uint8Array(data);\r\n}\r\n\r\nfunction ab2a(data) {\r\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\r\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\r\nvar o = new Array(data.length);\r\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\r\n\treturn o;\r\n}\r\n\r\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\r\n\tif(typeof Uint8Array !== \"undefined\") {\r\n\t\tvar i = 0, maxlen = 0;\r\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\r\n\t\tvar o = new Uint8Array(maxlen);\r\n\t\tvar len = 0;\r\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\r\n\t\t\tlen = bufs[i].length;\r\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\r\n\t\t\telse if(typeof bufs[i] == \"string\") { throw \"wtf\"; }\r\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\r\n\t\t}\r\n\t\treturn o;\r\n\t}\r\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\r\n};\r\n\r\nfunction utf8decode(content) {\r\n\tvar out = [], widx = 0, L = content.length + 250;\r\n\tvar o = new_raw_buf(content.length + 255);\r\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\r\n\t\tvar c = content.charCodeAt(ridx);\r\n\t\tif(c < 0x80) o[widx++] = c;\r\n\t\telse if(c < 0x800) {\r\n\t\t\to[widx++] = (192|((c>>6)&31));\r\n\t\t\to[widx++] = (128|(c&63));\r\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\r\n\t\t\tc = (c&1023)+64;\r\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\r\n\t\t\to[widx++] = (240|((c>>8)&7));\r\n\t\t\to[widx++] = (128|((c>>2)&63));\r\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\r\n\t\t\to[widx++] = (128|(d&63));\r\n\t\t} else {\r\n\t\t\to[widx++] = (224|((c>>12)&15));\r\n\t\t\to[widx++] = (128|((c>>6)&63));\r\n\t\t\to[widx++] = (128|(c&63));\r\n\t\t}\r\n\t\tif(widx > L) {\r\n\t\t\tout.push(o.slice(0, widx));\r\n\t\t\twidx = 0;\r\n\t\t\to = new_raw_buf(65535);\r\n\t\t\tL = 65530;\r\n\t\t}\r\n\t}\r\n\tout.push(o.slice(0, widx));\r\n\treturn bconcat(out);\r\n}\r\n\r\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\r\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\r\n/*jshint -W041 */\r\nfunction _strrev(x) { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\r\nfunction pad0(v,d){var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\r\nfunction pad_(v,d){var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\r\nfunction rpad_(v,d){var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\r\nfunction pad0r1(v,d){var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\r\nfunction pad0r2(v,d){var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\r\nvar p2_32 = Math.pow(2,32);\r\nfunction pad0r(v,d){if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\r\n/* yes, in 2022 this is still faster than string compare */\r\nfunction SSF_isgeneral(s, i) { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\r\nvar days = [\r\n\t['Sun', 'Sunday'],\r\n\t['Mon', 'Monday'],\r\n\t['Tue', 'Tuesday'],\r\n\t['Wed', 'Wednesday'],\r\n\t['Thu', 'Thursday'],\r\n\t['Fri', 'Friday'],\r\n\t['Sat', 'Saturday']\r\n];\r\nvar months = [\r\n\t['J', 'Jan', 'January'],\r\n\t['F', 'Feb', 'February'],\r\n\t['M', 'Mar', 'March'],\r\n\t['A', 'Apr', 'April'],\r\n\t['M', 'May', 'May'],\r\n\t['J', 'Jun', 'June'],\r\n\t['J', 'Jul', 'July'],\r\n\t['A', 'Aug', 'August'],\r\n\t['S', 'Sep', 'September'],\r\n\t['O', 'Oct', 'October'],\r\n\t['N', 'Nov', 'November'],\r\n\t['D', 'Dec', 'December']\r\n];\r\nfunction SSF_init_table(t) {\r\n\tif(!t) t = {};\r\n\tt[0]= 'General';\r\n\tt[1]= '0';\r\n\tt[2]= '0.00';\r\n\tt[3]= '#,##0';\r\n\tt[4]= '#,##0.00';\r\n\tt[9]= '0%';\r\n\tt[10]= '0.00%';\r\n\tt[11]= '0.00E+00';\r\n\tt[12]= '# ?/?';\r\n\tt[13]= '# ??/??';\r\n\tt[14]= 'm/d/yy';\r\n\tt[15]= 'd-mmm-yy';\r\n\tt[16]= 'd-mmm';\r\n\tt[17]= 'mmm-yy';\r\n\tt[18]= 'h:mm AM/PM';\r\n\tt[19]= 'h:mm:ss AM/PM';\r\n\tt[20]= 'h:mm';\r\n\tt[21]= 'h:mm:ss';\r\n\tt[22]= 'm/d/yy h:mm';\r\n\tt[37]= '#,##0 ;(#,##0)';\r\n\tt[38]= '#,##0 ;[Red](#,##0)';\r\n\tt[39]= '#,##0.00;(#,##0.00)';\r\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\r\n\tt[45]= 'mm:ss';\r\n\tt[46]= '[h]:mm:ss';\r\n\tt[47]= 'mmss.0';\r\n\tt[48]= '##0.0E+0';\r\n\tt[49]= '@';\r\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\r\n\treturn t;\r\n}\r\n/* repeated to satiate webpack */\r\nvar table_fmt = {\r\n\t0: 'General',\r\n\t1: '0',\r\n\t2: '0.00',\r\n\t3: '#,##0',\r\n\t4: '#,##0.00',\r\n\t9: '0%',\r\n\t10: '0.00%',\r\n\t11: '0.00E+00',\r\n\t12: '# ?/?',\r\n\t13: '# ??/??',\r\n\t14: 'm/d/yy',\r\n\t15: 'd-mmm-yy',\r\n\t16: 'd-mmm',\r\n\t17: 'mmm-yy',\r\n\t18: 'h:mm AM/PM',\r\n\t19: 'h:mm:ss AM/PM',\r\n\t20: 'h:mm',\r\n\t21: 'h:mm:ss',\r\n\t22: 'm/d/yy h:mm',\r\n\t37: '#,##0 ;(#,##0)',\r\n\t38: '#,##0 ;[Red](#,##0)',\r\n\t39: '#,##0.00;(#,##0.00)',\r\n\t40: '#,##0.00;[Red](#,##0.00)',\r\n\t45: 'mm:ss',\r\n\t46: '[h]:mm:ss',\r\n\t47: 'mmss.0',\r\n\t48: '##0.0E+0',\r\n\t49: '@',\r\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\r\n};\r\n\r\n/* Defaults determined by systematically testing in Excel 2019 */\r\n\r\n/* These formats appear to default to other formats in the table */\r\nvar SSF_default_map = {\r\n\t5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40\r\n\r\n\t23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0\r\n\r\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\r\n\r\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\r\n\t55: 14, 56: 14, 57: 14, 58: 14,\r\n\t59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4\r\n\r\n\t67: 9, 68: 10, // 67 -> 9 ... 68 -> 10\r\n\t69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14\r\n\t72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17\r\n\t76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22\r\n\t79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47\r\n\t82: 0 // 82 -> 0 ... 65536 -> 0 (omitted)\r\n};\r\n\r\n\r\n/* These formats technically refer to Accounting formats with no equivalent */\r\nvar SSF_default_str = {\r\n\t// 5 -- Currency, 0 decimal, black negative\r\n\t5: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\r\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\r\n\r\n\t// 6 -- Currency, 0 decimal, red negative\r\n\t6: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\r\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\r\n\r\n\t// 7 -- Currency, 2 decimal, black negative\r\n\t7: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\r\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\r\n\r\n\t// 8 -- Currency, 2 decimal, red negative\r\n\t8: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\r\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\r\n\r\n\t// 41 -- Accounting, 0 decimal, No Symbol\r\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\r\n\r\n\t// 42 -- Accounting, 0 decimal, $ Symbol\r\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\r\n\r\n\t// 43 -- Accounting, 2 decimal, No Symbol\r\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\r\n\r\n\t// 44 -- Accounting, 2 decimal, $ Symbol\r\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\r\n};\r\n\r\nfunction SSF_frac(x, D, mixed) {\r\n\tvar sgn = x < 0 ? -1 : 1;\r\n\tvar B = x * sgn;\r\n\tvar P_2 = 0, P_1 = 1, P = 0;\r\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\r\n\tvar A = Math.floor(B);\r\n\twhile(Q_1 < D) {\r\n\t\tA = Math.floor(B);\r\n\t\tP = A * P_1 + P_2;\r\n\t\tQ = A * Q_1 + Q_2;\r\n\t\tif((B - A) < 0.00000005) break;\r\n\t\tB = 1 / (B - A);\r\n\t\tP_2 = P_1; P_1 = P;\r\n\t\tQ_2 = Q_1; Q_1 = Q;\r\n\t}\r\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\r\n\tif(!mixed) return [0, sgn * P, Q];\r\n\tvar q = Math.floor(sgn * P/Q);\r\n\treturn [q, sgn*P - q*Q, Q];\r\n}\r\nfunction SSF_parse_date_code(v,opts,b2) {\r\n\tif(v > 2958465 || v < 0) return null;\r\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\r\n\tvar dout=[];\r\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\r\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\r\n\tif(opts && opts.date1904) date += 1462;\r\n\tif(out.u > 0.9999) {\r\n\t\tout.u = 0;\r\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\r\n\t}\r\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\r\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\r\n\telse {\r\n\t\tif(date > 60) --date;\r\n\t\t/* 1 = Jan 1 1900 in Gregorian */\r\n\t\tvar d = new Date(1900, 0, 1);\r\n\t\td.setDate(d.getDate() + date - 1);\r\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\r\n\t\tdow = d.getDay();\r\n\t\tif(date < 60) dow = (dow + 6) % 7;\r\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\r\n\t}\r\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\r\n\tout.S = time % 60; time = Math.floor(time / 60);\r\n\tout.M = time % 60; time = Math.floor(time / 60);\r\n\tout.H = time;\r\n\tout.q = dow;\r\n\treturn out;\r\n}\r\nvar SSFbasedate = new Date(1899, 11, 31, 0, 0, 0);\r\nvar SSFdnthresh = SSFbasedate.getTime();\r\nvar SSFbase1904 = new Date(1900, 2, 1, 0, 0, 0);\r\nfunction datenum_local(v, date1904) {\r\n\tvar epoch = v.getTime();\r\n\tif(date1904) epoch -= 1461*24*60*60*1000;\r\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\r\n\treturn (epoch - (SSFdnthresh + (v.getTimezoneOffset() - SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\r\n}\r\n/* ECMA-376 18.8.30 numFmt*/\r\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\r\n/* exponent >= -9 and <= 9 */\r\nfunction SSF_strip_decimal(o) {\r\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\r\n}\r\n\r\n/* General Exponential always shows 2 digits exp and trims the mantissa */\r\nfunction SSF_normalize_exp(o) {\r\n\tif(o.indexOf(\"E\") == -1) return o;\r\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\r\n}\r\n\r\n/* exponent >= -9 and <= 9 */\r\nfunction SSF_small_exp(v) {\r\n\tvar w = (v<0?12:11);\r\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\r\n\to = v.toPrecision(10); if(o.length <= w) return o;\r\n\treturn v.toExponential(5);\r\n}\r\n\r\n/* exponent >= 11 or <= -10 likely exponential */\r\nfunction SSF_large_exp(v) {\r\n\tvar o = SSF_strip_decimal(v.toFixed(11));\r\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\r\n}\r\n\r\nfunction SSF_general_num(v) {\r\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\r\n\r\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\r\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\r\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\r\n\telse o = SSF_large_exp(v);\r\n\r\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\r\n}\r\n\r\n\r\n/*\r\n\t\"General\" rules:\r\n\t- text is passed through (\"@\")\r\n\t- booleans are rendered as TRUE/FALSE\r\n\t- \"up to 11 characters\" displayed for numbers\r\n\t- Default date format (code 14) used for Dates\r\n\r\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\r\n\tTODO: technically the display depends on the width of the cell\r\n*/\r\nfunction SSF_general(v, opts) {\r\n\tswitch(typeof v) {\r\n\t\tcase 'string': return v;\r\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\r\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\r\n\t\tcase 'undefined': return \"\";\r\n\t\tcase 'object':\r\n\t\t\tif(v == null) return \"\";\r\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\r\n\t}\r\n\tthrow new Error(\"unsupported value in General format: \" + v);\r\n}\r\n\r\nfunction SSF_fix_hijri(date, o) {\r\n /* TODO: properly adjust y/m/d and */\r\n o[0] -= 581;\r\n var dow = date.getDay();\r\n if(date < 60) dow = (dow + 6) % 7;\r\n return dow;\r\n}\r\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\r\nfunction SSF_write_date(type, fmt, val, ss0) {\r\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\r\n\tswitch(type) {\r\n\t\tcase 98: /* 'b' buddhist year */\r\n\t\t\ty = val.y + 543;\r\n\t\t\t/* falls through */\r\n\t\tcase 121: /* 'y' year */\r\n\t\tswitch(fmt.length) {\r\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\r\n\t\t\tdefault: out = y % 10000; outl = 4; break;\r\n\t\t} break;\r\n\t\tcase 109: /* 'm' month */\r\n\t\tswitch(fmt.length) {\r\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\r\n\t\t\tcase 3: return months[val.m-1][1];\r\n\t\t\tcase 5: return months[val.m-1][0];\r\n\t\t\tdefault: return months[val.m-1][2];\r\n\t\t} break;\r\n\t\tcase 100: /* 'd' day */\r\n\t\tswitch(fmt.length) {\r\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\r\n\t\t\tcase 3: return days[val.q][0];\r\n\t\t\tdefault: return days[val.q][1];\r\n\t\t} break;\r\n\t\tcase 104: /* 'h' 12-hour */\r\n\t\tswitch(fmt.length) {\r\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\r\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\r\n\t\t} break;\r\n\t\tcase 72: /* 'H' 24-hour */\r\n\t\tswitch(fmt.length) {\r\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\r\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\r\n\t\t} break;\r\n\t\tcase 77: /* 'M' minutes */\r\n\t\tswitch(fmt.length) {\r\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\r\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\r\n\t\t} break;\r\n\t\tcase 115: /* 's' seconds */\r\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\r\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\r\nif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\r\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\r\n\t\t\tss = Math.round((tt)*(val.S + val.u));\r\n\t\t\tif(ss >= 60*tt) ss = 0;\r\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\r\n\t\t\to = pad0(ss,2 + ss0);\r\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\r\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\r\n\t\tcase 90: /* 'Z' absolute time */\r\n\t\tswitch(fmt) {\r\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\r\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\r\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\r\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\r\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\r\n\t\tcase 101: /* 'e' era */\r\n\t\t\tout = y; outl = 1; break;\r\n\t}\r\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\r\n\treturn outstr;\r\n}\r\n\r\n\r\n/*jshint -W086 */\r\n/*jshint +W086 */\r\nfunction commaify(s) {\r\n\tvar w = 3;\r\n\tif(s.length <= w) return s;\r\n\tvar j = (s.length % w), o = s.substr(0,j);\r\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\r\n\treturn o;\r\n}\r\nvar pct1 = /%/g;\r\nfunction write_num_pct(type, fmt, val){\r\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\r\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\r\n}\r\n\r\nfunction write_num_cm(type, fmt, val){\r\n\tvar idx = fmt.length - 1;\r\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\r\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\r\n}\r\n\r\nfunction write_num_exp(fmt, val){\r\n\tvar o;\r\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\r\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\r\n\t\tif(val == 0) return \"0.0E+0\";\r\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\r\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\r\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\r\n\t\tif(ee < 0) ee += period;\r\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\r\n\t\tif(o.indexOf(\"e\") === -1) {\r\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\r\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\r\n\t\t\telse o += \"E+\" + (fakee - ee);\r\n\t\t\twhile(o.substr(0,2) === \"0.\") {\r\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\r\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\r\n\t\t\t}\r\n\t\t\to = o.replace(/\\+-/,\"-\");\r\n\t\t}\r\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\r\n\t} else o = val.toExponential(idx);\r\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\r\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\r\n\treturn o.replace(\"e\",\"E\");\r\n}\r\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\r\nfunction write_num_f1(r, aval, sign) {\r\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\r\n\tvar myn = (rr - base*den), myd = den;\r\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\r\n}\r\nfunction write_num_f2(r, aval, sign) {\r\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\r\n}\r\nvar dec1 = /^#*0*\\.([0#]+)/;\r\nvar closeparen = /\\).*[0#]/;\r\nvar phone = /\\(###\\) ###\\\\?-####/;\r\nfunction hashq(str) {\r\n\tvar o = \"\", cc;\r\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\r\n\t\tcase 35: break;\r\n\t\tcase 63: o+= \" \"; break;\r\n\t\tcase 48: o+= \"0\"; break;\r\n\t\tdefault: o+= String.fromCharCode(cc);\r\n\t}\r\n\treturn o;\r\n}\r\nfunction rnd(val, d) { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\r\nfunction dec(val, d) {\r\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\r\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\r\n\treturn Math.round(_frac * dd);\r\n}\r\nfunction carry(val, d) {\r\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn 0;\r\n}\r\nfunction flr(val) {\r\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\r\n\treturn \"\"+Math.floor(val);\r\n}\r\nfunction write_num_flt(type, fmt, val) {\r\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\r\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\r\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\r\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\r\n\t}\r\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\r\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\r\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\r\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\r\n\tvar o;\r\n\tvar r, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\r\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\r\n\tif(fmt.match(/^[#?]+$/)) {\r\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\r\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\r\n\t}\r\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\r\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\r\n\tif((r = fmt.match(dec1))) {\r\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\r\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\r\n\t}\r\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\r\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\r\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\r\n\t}\r\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\r\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\r\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\r\n\t}\r\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\r\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\r\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\r\n\t\tri = 0;\r\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val);\r\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\r\n\t}\r\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\r\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\r\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\r\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\r\n\tvar o;\r\n\tvar r, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\r\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\r\n\tif(fmt.match(/^[#?]+$/)) {\r\n\t\to = (\"\"+val); if(val === 0) o = \"\";\r\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\r\n\t}\r\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\r\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\r\n\tif((r = fmt.match(dec1))) {\r\no = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\r\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\r\nreturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\r\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\r\n\t}\r\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\r\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\r\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\r\n\t}\r\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\r\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\r\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\r\n\t}\r\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\r\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\r\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\r\n\t\tri = 0;\r\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\r\n\t\t\t\tbreak;\r\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\r\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\r\n\t\t\tcase '(': case ')': ++i; break;\r\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\r\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\r\n\t\t\tcase ' ': ++i; break;\r\n\t\t\tdefault: ++i; break;\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\nfunction eval_fmt(fmt, v, opts, flen) {\r\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\r\n\tvar hr='H';\r\n\t/* Tokenize */\r\n\twhile(i < fmt.length) {\r\n\t\tswitch((c = fmt.charAt(i))) {\r\n\t\t\tcase 'G': /* General */\r\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\r\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\r\n\t\t\tcase '\"': /* Literal text */\r\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\r\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\r\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\r\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\r\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\r\n\t\t\tcase '@': /* Text Placeholder */\r\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\r\n\t\t\tcase 'B': case 'b':\r\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\r\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\r\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\r\n\t\t\t\t}\r\n\t\t\t\t/* falls through */\r\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\r\n\t\t\t\tc = c.toLowerCase();\r\n\t\t\t\t/* falls through */\r\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\r\n\t\t\t\tif(v < 0) return \"\";\r\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\r\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\r\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\r\n\t\t\t\tif(c === 'h') c = hr;\r\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\r\n\t\t\tcase 'A': case 'a': case '上':\r\n\t\t\t\tvar q={t:c, v:c};\r\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\r\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? fmt.charAt(i+2) : c; q.t = 'T'; hr='h';i+=3;}\r\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\r\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\r\n\t\t\t\telse { q.t = \"t\"; ++i; }\r\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\r\n\t\t\t\tout[out.length] = q; lst = c; break;\r\n\t\t\tcase '[':\r\n\t\t\t\to = c;\r\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\r\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\r\n\t\t\t\tif(o.match(SSF_abstime)) {\r\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\r\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\r\n\t\t\t\t\tlst = o.charAt(1);\r\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\r\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\r\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t/* Numbers */\r\n\t\t\tcase '.':\r\n\t\t\t\tif(dt != null) {\r\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\r\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\r\n\t\t\t\t}\r\n\t\t\t\t/* falls through */\r\n\t\t\tcase '0': case '#':\r\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\r\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\r\n\t\t\tcase '?':\r\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\r\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\r\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\r\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\r\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\r\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\r\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\r\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\r\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\r\n\t\t\tdefault:\r\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\r\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\r\n\t\t}\r\n\t}\r\n\r\n\t/* Scan for date/time parts */\r\n\tvar bt = 0, ss0 = 0, ssm;\r\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\r\n\t\tswitch(out[i].t) {\r\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\r\n\t\t\tcase 's':\r\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\r\n\t\t\t\tif(bt < 3) bt = 3;\r\n\t\t\t/* falls through */\r\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\r\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\r\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Z':\r\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\r\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\r\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\r\n\t\t}\r\n\t}\r\n\t/* time rounding depends on presence of minute / second / usec fields */\r\n\tswitch(bt) {\r\n\t\tcase 0: break;\r\n\t\tcase 1:\r\nif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\r\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\r\n\t\t\tif(dt.M >= 60) { dt.M = 0; ++dt.H; }\r\n\t\t\tbreak;\r\n\t\tcase 2:\r\nif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\r\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\t/* replace fields */\r\n\tvar nstr = \"\", jj;\r\n\tfor(i=0; i < out.length; ++i) {\r\n\t\tswitch(out[i].t) {\r\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\r\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\r\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\r\nout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\r\n\t\t\t\tout[i].t = 't'; break;\r\n\t\t\tcase 'n': case '?':\r\n\t\t\t\tjj = i+1;\r\n\t\t\t\twhile(out[jj] != null && (\r\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\r\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\r\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\r\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\r\n\t\t\t\t)) {\r\n\t\t\t\t\tout[i].v += out[jj].v;\r\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\r\n\t\t\t\t}\r\n\t\t\t\tnstr += out[i].v;\r\n\t\t\t\ti = jj-1; break;\r\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\r\n\t\t}\r\n\t}\r\n\tvar vv = \"\", myv, ostr;\r\n\tif(nstr.length > 0) {\r\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\r\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\r\n\t\t\tostr = write_num('n', nstr, myv);\r\n\t\t} else {\r\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\r\n\t\t\tostr = write_num('n', nstr, myv);\r\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\r\n\t\t\t\tostr = ostr.substr(1);\r\n\t\t\t\tout[0].v = \"-\" + out[0].v;\r\n\t\t\t}\r\n\t\t}\r\n\t\tjj=ostr.length-1;\r\n\t\tvar decpt = out.length;\r\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\r\n\t\tvar lasti=out.length;\r\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\r\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\r\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\r\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\r\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\r\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\r\n\t\t\t\tout[i].t = 't';\r\n\t\t\t\tlasti = i;\r\n\t\t\t}\r\n\t\t\tif(jj>=0 && lasti= 0; --i) {\r\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\r\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\r\n\t\t\t\tvv = out[i].v.substr(j+1);\r\n\t\t\t\tfor(; j>=0; --j) {\r\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\r\n\t\t\t\t}\r\n\t\t\t\tout[i].v = vv;\r\n\t\t\t\tout[i].t = 't';\r\n\t\t\t\tlasti = i;\r\n\t\t\t}\r\n\t\t\tif(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\r\n\t\t\t\tvv = out[i].v.substr(0,j);\r\n\t\t\t\tfor(; j-1) {\r\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\r\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\r\n\t\tout[i].t = 't';\r\n\t}\r\n\tvar retval = \"\";\r\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\r\n\treturn retval;\r\n}\r\n\r\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\r\nfunction chkcond(v, rr) {\r\n\tif(rr == null) return false;\r\n\tvar thresh = parseFloat(rr[2]);\r\n\tswitch(rr[1]) {\r\n\t\tcase \"=\": if(v == thresh) return true; break;\r\n\t\tcase \">\": if(v > thresh) return true; break;\r\n\t\tcase \"<\": if(v < thresh) return true; break;\r\n\t\tcase \"<>\": if(v != thresh) return true; break;\r\n\t\tcase \">=\": if(v >= thresh) return true; break;\r\n\t\tcase \"<=\": if(v <= thresh) return true; break;\r\n\t}\r\n\treturn false;\r\n}\r\nfunction choose_fmt(f, v) {\r\n\tvar fmt = SSF_split_fmt(f);\r\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\r\n\tif(l<4 && lat>-1) --l;\r\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\r\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\r\n\tswitch(fmt.length) {\r\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\r\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\r\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\r\n\t\tcase 4: break;\r\n\t}\r\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\r\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\r\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\r\n\t\tvar m1 = fmt[0].match(cfregex2);\r\n\t\tvar m2 = fmt[1].match(cfregex2);\r\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\r\n\t}\r\n\treturn [l, ff];\r\n}\r\nfunction SSF_format(fmt,v,o) {\r\n\tif(o == null) o = {};\r\n\tvar sfmt = \"\";\r\n\tswitch(typeof fmt) {\r\n\t\tcase \"string\":\r\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\r\n\t\t\telse sfmt = fmt;\r\n\t\t\tbreak;\r\n\t\tcase \"number\":\r\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\r\n\t\t\telse sfmt = (o.table != null ? (o.table) : table_fmt)[fmt];\r\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\r\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\r\n\t\t\tbreak;\r\n\t}\r\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\r\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\r\n\tvar f = choose_fmt(sfmt, v);\r\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\r\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\r\n\telse if(v === \"\" || v == null) return \"\";\r\n\treturn eval_fmt(f[1], v, o, f[0]);\r\n}\r\nfunction SSF_load(fmt, idx) {\r\n\tif(typeof idx != 'number') {\r\n\t\tidx = +idx || -1;\r\nfor(var i = 0; i < 0x0188; ++i) {\r\nif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\r\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\r\n\t\t}\r\nif(idx < 0) idx = 0x187;\r\n\t}\r\ntable_fmt[idx] = fmt;\r\n\treturn idx;\r\n}\r\nfunction SSF_load_table(tbl) {\r\n\tfor(var i=0; i!=0x0188; ++i)\r\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\r\n}\r\n\r\nfunction make_ssf() {\r\n\ttable_fmt = SSF_init_table();\r\n}\r\n\r\nvar SSF = {\r\n\tformat: SSF_format,\r\n\tload: SSF_load,\r\n\t_table: table_fmt,\r\n\tload_table: SSF_load_table,\r\n\tparse_date_code: SSF_parse_date_code,\r\n\tis_date: fmt_is_date,\r\n\tget_table: function get_table() { return SSF._table = table_fmt; }\r\n};\r\n\r\nvar SSFImplicit/*{[number]:string}*/ = ({\r\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\r\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\r\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\r\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\r\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\r\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\r\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\r\n\t\"36\": 'm/d/yy',\r\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\r\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\r\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\r\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\r\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\r\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\r\n\t\"59\": '0',\r\n\t\"60\": '0.00',\r\n\t\"61\": '#,##0',\r\n\t\"62\": '#,##0.00',\r\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\r\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\r\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\r\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\r\n\t\"67\": '0%',\r\n\t\"68\": '0.00%',\r\n\t\"69\": '# ?/?',\r\n\t\"70\": '# ??/??',\r\n\t\"71\": 'm/d/yy',\r\n\t\"72\": 'm/d/yy',\r\n\t\"73\": 'd-mmm-yy',\r\n\t\"74\": 'd-mmm',\r\n\t\"75\": 'mmm-yy',\r\n\t\"76\": 'h:mm',\r\n\t\"77\": 'h:mm:ss',\r\n\t\"78\": 'm/d/yy h:mm',\r\n\t\"79\": 'mm:ss',\r\n\t\"80\": '[h]:mm:ss',\r\n\t\"81\": 'mmss.0'\r\n});\r\n\r\n/* dateNF parse TODO: move to SSF */\r\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\r\nfunction dateNF_regex(dateNF) {\r\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\r\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\r\n\treturn new RegExp(\"^\" + fmt + \"$\");\r\n}\r\nfunction dateNF_fix(str, dateNF, match) {\r\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\r\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\r\n\t\tvar v = parseInt(match[i+1], 10);\r\n\t\tswitch(n.toLowerCase().charAt(0)) {\r\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\r\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\r\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\r\n\t\t}\r\n\t});\r\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\r\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\r\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\r\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\r\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\r\n\tif(H == -1 && M == -1 && S == -1) return datestr;\r\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\r\n\treturn datestr + \"T\" + timestr;\r\n}\r\n\r\n/* table of bad formats written by third-party tools */\r\nvar bad_formats = {\r\n\t\"d.m\": \"d\\\\.m\" // Issue #2571 Google Sheets writes invalid format 'd.m', correct format is 'd\".\"m' or 'd\\\\.m'\r\n};\r\n\r\nfunction SSF__load(fmt, idx) {\r\n\treturn SSF_load(bad_formats[fmt] || fmt, idx);\r\n}\r\n\r\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\r\n/* vim: set ts=2: */\r\n/*jshint eqnull:true */\r\n/*exported CFB */\r\n/*global Uint8Array:false, Uint16Array:false */\r\n\r\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\r\n/* vim: set ts=2: */\r\n/*exported CRC32 */\r\nvar CRC32 = (function() {\r\nvar CRC32 = {};\r\nCRC32.version = '1.2.0';\r\n/* see perf/crc32table.js */\r\n/*global Int32Array */\r\nfunction signed_crc_table() {\r\n\tvar c = 0, table = new Array(256);\r\n\r\n\tfor(var n =0; n != 256; ++n){\r\n\t\tc = n;\r\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\r\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\r\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\r\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\r\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\r\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\r\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\r\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\r\n\t\ttable[n] = c;\r\n\t}\r\n\r\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\r\n}\r\n\r\nvar T0 = signed_crc_table();\r\nfunction slice_by_16_tables(T) {\r\n\tvar c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\r\n\r\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\r\n\tfor(n = 0; n != 256; ++n) {\r\n\t\tv = T[n];\r\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\r\n\t}\r\n\tvar out = [];\r\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\r\n\treturn out;\r\n}\r\nvar TT = slice_by_16_tables(T0);\r\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\r\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\r\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\r\nfunction crc32_bstr(bstr, seed) {\r\n\tvar C = seed ^ -1;\r\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\r\n\treturn ~C;\r\n}\r\n\r\nfunction crc32_buf(B, seed) {\r\n\tvar C = seed ^ -1, L = B.length - 15, i = 0;\r\n\tfor(; i < L;) C =\r\n\t\tTf[B[i++] ^ (C & 255)] ^\r\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\r\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\r\n\t\tTc[B[i++] ^ (C >>> 24)] ^\r\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\r\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\r\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\r\n\tL += 15;\r\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\r\n\treturn ~C;\r\n}\r\n\r\nfunction crc32_str(str, seed) {\r\n\tvar C = seed ^ -1;\r\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\r\n\t\tc = str.charCodeAt(i++);\r\n\t\tif(c < 0x80) {\r\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\r\n\t\t} else if(c < 0x800) {\r\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\r\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\r\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\r\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\r\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\r\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\r\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\r\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\r\n\t\t} else {\r\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\r\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\r\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\r\n\t\t}\r\n\t}\r\n\treturn ~C;\r\n}\r\nCRC32.table = T0;\r\nCRC32.bstr = crc32_bstr;\r\nCRC32.buf = crc32_buf;\r\nCRC32.str = crc32_str;\r\nreturn CRC32;\r\n})();\r\n/* [MS-CFB] v20171201 */\r\nvar CFB = (function _CFB(){\r\nvar exports = {};\r\nexports.version = '1.2.2';\r\n/* [MS-CFB] 2.6.4 */\r\nfunction namecmp(l, r) {\r\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\r\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\r\n\t\tif((c = L[i].length - R[i].length)) return c;\r\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\r\n\t}\r\n\treturn L.length - R.length;\r\n}\r\nfunction dirname(p) {\r\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\r\n\tvar c = p.lastIndexOf(\"/\");\r\n\treturn (c === -1) ? p : p.slice(0, c+1);\r\n}\r\n\r\nfunction filename(p) {\r\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\r\n\tvar c = p.lastIndexOf(\"/\");\r\n\treturn (c === -1) ? p : p.slice(c+1);\r\n}\r\n/* -------------------------------------------------------------------------- */\r\n/* DOS Date format:\r\n high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\r\n add 1980 to stored year\r\n stored second should be doubled\r\n*/\r\n\r\n/* write JS date to buf as a DOS date */\r\nfunction write_dos_date(buf, date) {\r\n\tif(typeof date === \"string\") date = new Date(date);\r\n\tvar hms = date.getHours();\r\n\thms = hms << 6 | date.getMinutes();\r\n\thms = hms << 5 | (date.getSeconds()>>>1);\r\n\tbuf.write_shift(2, hms);\r\n\tvar ymd = (date.getFullYear() - 1980);\r\n\tymd = ymd << 4 | (date.getMonth()+1);\r\n\tymd = ymd << 5 | date.getDate();\r\n\tbuf.write_shift(2, ymd);\r\n}\r\n\r\n/* read four bytes from buf and interpret as a DOS date */\r\nfunction parse_dos_date(buf) {\r\n\tvar hms = buf.read_shift(2) & 0xFFFF;\r\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\r\n\tvar val = new Date();\r\n\tvar d = ymd & 0x1F; ymd >>>= 5;\r\n\tvar m = ymd & 0x0F; ymd >>>= 4;\r\n\tval.setMilliseconds(0);\r\n\tval.setFullYear(ymd + 1980);\r\n\tval.setMonth(m-1);\r\n\tval.setDate(d);\r\n\tvar S = hms & 0x1F; hms >>>= 5;\r\n\tvar M = hms & 0x3F; hms >>>= 6;\r\n\tval.setHours(hms);\r\n\tval.setMinutes(M);\r\n\tval.setSeconds(S<<1);\r\n\treturn val;\r\n}\r\nfunction parse_extra_field(blob) {\r\n\tprep_blob(blob, 0);\r\n\tvar o = {};\r\n\tvar flags = 0;\r\n\twhile(blob.l <= blob.length - 4) {\r\n\t\tvar type = blob.read_shift(2);\r\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\r\n\t\tvar p = {};\r\n\t\tswitch(type) {\r\n\t\t\t/* UNIX-style Timestamps */\r\n\t\t\tcase 0x5455: {\r\n\t\t\t\tflags = blob.read_shift(1);\r\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\r\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\r\n\t\t\t\tif(sz > 5) {\r\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\r\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\r\n\t\t\t\t}\r\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tblob.l = tgt;\r\n\t\to[type] = p;\r\n\t}\r\n\treturn o;\r\n}\r\nvar fs;\r\nfunction get_fs() { return fs || (fs = _fs); }\r\nfunction parse(file, options) {\r\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\r\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\r\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\r\nvar mver = 3;\r\nvar ssz = 512;\r\nvar nmfs = 0; // number of mini FAT sectors\r\nvar difat_sec_cnt = 0;\r\nvar dir_start = 0;\r\nvar minifat_start = 0;\r\nvar difat_start = 0;\r\n\r\nvar fat_addrs = []; // locations of FAT sectors\r\n\r\n/* [MS-CFB] 2.2 Compound File Header */\r\nvar blob = file.slice(0,512);\r\nprep_blob(blob, 0);\r\n\r\n/* major version */\r\nvar mv = check_get_mver(blob);\r\nmver = mv[0];\r\nswitch(mver) {\r\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\r\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\r\n\t/* falls through */\r\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\r\n}\r\n\r\n/* reprocess header */\r\nif(ssz !== 512) { blob = file.slice(0,ssz); prep_blob(blob, 28 /* blob.l */); }\r\n/* Save header for final object */\r\nvar header = file.slice(0,ssz);\r\n\r\ncheck_shifts(blob, mver);\r\n\r\n// Number of Directory Sectors\r\nvar dir_cnt = blob.read_shift(4, 'i');\r\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\r\n\r\n// Number of FAT Sectors\r\nblob.l += 4;\r\n\r\n// First Directory Sector Location\r\ndir_start = blob.read_shift(4, 'i');\r\n\r\n// Transaction Signature\r\nblob.l += 4;\r\n\r\n// Mini Stream Cutoff Size\r\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\r\n\r\n// First Mini FAT Sector Location\r\nminifat_start = blob.read_shift(4, 'i');\r\n\r\n// Number of Mini FAT Sectors\r\nnmfs = blob.read_shift(4, 'i');\r\n\r\n// First DIFAT sector location\r\ndifat_start = blob.read_shift(4, 'i');\r\n\r\n// Number of DIFAT Sectors\r\ndifat_sec_cnt = blob.read_shift(4, 'i');\r\n\r\n// Grab FAT Sector Locations\r\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\r\n\tq = blob.read_shift(4, 'i');\r\n\tif(q<0) break;\r\n\tfat_addrs[j] = q;\r\n}\r\n\r\n/** Break the file up into sectors */\r\nvar sectors = sectorify(file, ssz);\r\n\r\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\r\n\r\n/** Chains */\r\nvar sector_list = make_sector_list(sectors, dir_start, fat_addrs, ssz);\r\n\r\nsector_list[dir_start].name = \"!Directory\";\r\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\r\nsector_list[fat_addrs[0]].name = \"!FAT\";\r\nsector_list.fat_addrs = fat_addrs;\r\nsector_list.ssz = ssz;\r\n\r\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\r\nvar files = {}, Paths = [], FileIndex = [], FullPaths = [];\r\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\r\n\r\nbuild_full_paths(FileIndex, FullPaths, Paths);\r\nPaths.shift();\r\n\r\nvar o = {\r\n\tFileIndex: FileIndex,\r\n\tFullPaths: FullPaths\r\n};\r\n\r\n// $FlowIgnore\r\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\r\nreturn o;\r\n} // parse\r\n\r\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\r\nfunction check_get_mver(blob) {\r\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\r\n\t// header signature 8\r\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\r\n\r\n\t// clsid 16\r\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\r\n\tblob.l += 16;\r\n\r\n\t// minor version 2\r\n\tvar mver = blob.read_shift(2, 'u');\r\n\r\n\treturn [blob.read_shift(2,'u'), mver];\r\n}\r\nfunction check_shifts(blob, mver) {\r\n\tvar shift = 0x09;\r\n\r\n\t// Byte Order\r\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\r\n\tblob.l += 2;\r\n\r\n\t// Sector Shift\r\n\tswitch((shift = blob.read_shift(2))) {\r\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\r\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\r\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\r\n\t}\r\n\r\n\t// Mini Sector Shift\r\n\tblob.chk('0600', 'Mini Sector Shift: ');\r\n\r\n\t// Reserved\r\n\tblob.chk('000000000000', 'Reserved: ');\r\n}\r\n\r\n/** Break the file up into sectors */\r\nfunction sectorify(file, ssz) {\r\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\r\n\tvar sectors = [];\r\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\r\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\r\n\treturn sectors;\r\n}\r\n\r\n/* [MS-CFB] 2.6.4 Red-Black Tree */\r\nfunction build_full_paths(FI, FP, Paths) {\r\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\r\n\tvar dad = [], q = [];\r\n\r\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\r\n\r\n\tfor(; j < q.length; ++j) {\r\n\t\ti = q[j];\r\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\r\n\t\tif(dad[i] === i) {\r\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\r\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\r\n\t\t}\r\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\r\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\r\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\r\n\t}\r\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\r\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\r\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\r\n\t}\r\n\r\n\tfor(i=1; i < pl; ++i) {\r\n\t\tif(FI[i].type === 0 /* unknown */) continue;\r\n\t\tj = i;\r\n\t\tif(j != dad[j]) do {\r\n\t\t\tj = dad[j];\r\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\r\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\r\n\t\tdad[i] = -1;\r\n\t}\r\n\r\n\tFP[0] += \"/\";\r\n\tfor(i=1; i < pl; ++i) {\r\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\r\n\t}\r\n}\r\n\r\nfunction get_mfat_entry(entry, payload, mini) {\r\n\tvar start = entry.start, size = entry.size;\r\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size));\r\n\tvar o = [];\r\n\tvar idx = start;\r\n\twhile(mini && size > 0 && idx >= 0) {\r\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\r\n\t\tsize -= MSSZ;\r\n\t\tidx = __readInt32LE(mini, idx * 4);\r\n\t}\r\n\tif(o.length === 0) return (new_buf(0));\r\n\treturn (bconcat(o).slice(0, entry.size));\r\n}\r\n\r\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\r\n DIFAT chains by storing the next sector number as the last 32 bits */\r\nfunction sleuth_fat(idx, cnt, sectors, ssz, fat_addrs) {\r\n\tvar q = ENDOFCHAIN;\r\n\tif(idx === ENDOFCHAIN) {\r\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\r\n\t} else if(idx !== -1 /*FREESECT*/) {\r\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\r\n\t\tif(!sector) return;\r\n\t\tfor(var i = 0; i < m; ++i) {\r\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\r\n\t\t\tfat_addrs.push(q);\r\n\t\t}\r\n\t\tif(cnt >= 1) sleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\r\n\t}\r\n}\r\n\r\n/** Follow the linked list of sectors for a given starting point */\r\nfunction get_sector_list(sectors, start, fat_addrs, ssz, chkd) {\r\n\tvar buf = [], buf_chain = [];\r\n\tif(!chkd) chkd = [];\r\n\tvar modulus = ssz - 1, j = 0, jj = 0;\r\n\tfor(j=start; j>=0;) {\r\n\t\tchkd[j] = true;\r\n\t\tbuf[buf.length] = j;\r\n\t\tbuf_chain.push(sectors[j]);\r\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\r\n\t\tjj = ((j*4) & modulus);\r\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\r\n\t\tif(!sectors[addr]) break;\r\n\t\tj = __readInt32LE(sectors[addr], jj);\r\n\t}\r\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\r\n}\r\n\r\n/** Chase down the sector linked lists */\r\nfunction make_sector_list(sectors, dir_start, fat_addrs, ssz) {\r\n\tvar sl = sectors.length, sector_list = ([]);\r\n\tvar chkd = [], buf = [], buf_chain = [];\r\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\r\n\tfor(i=0; i < sl; ++i) {\r\n\t\tbuf = ([]);\r\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\r\n\t\tif(chkd[k]) continue;\r\n\t\tbuf_chain = [];\r\n\t\tvar seen = [];\r\n\t\tfor(j=k; j>=0;) {\r\n\t\t\tseen[j] = true;\r\n\t\t\tchkd[j] = true;\r\n\t\t\tbuf[buf.length] = j;\r\n\t\t\tbuf_chain.push(sectors[j]);\r\n\t\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\r\n\t\t\tjj = ((j*4) & modulus);\r\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\r\n\t\t\tif(!sectors[addr]) break;\r\n\t\t\tj = __readInt32LE(sectors[addr], jj);\r\n\t\t\tif(seen[j]) break;\r\n\t\t}\r\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])});\r\n\t}\r\n\treturn sector_list;\r\n}\r\n\r\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\r\nfunction read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, mini) {\r\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\r\n\tvar sector = sector_list[dir_start].data;\r\n\tvar i = 0, namelen = 0, name;\r\n\tfor(; i < sector.length; i+= 128) {\r\n\t\tvar blob = sector.slice(i, i+128);\r\n\t\tprep_blob(blob, 64);\r\n\t\tnamelen = blob.read_shift(2);\r\n\t\tname = __utf16le(blob,0,namelen-pl);\r\n\t\tPaths.push(name);\r\n\t\tvar o = ({\r\n\t\t\tname: name,\r\n\t\t\ttype: blob.read_shift(1),\r\n\t\t\tcolor: blob.read_shift(1),\r\n\t\t\tL: blob.read_shift(4, 'i'),\r\n\t\t\tR: blob.read_shift(4, 'i'),\r\n\t\t\tC: blob.read_shift(4, 'i'),\r\n\t\t\tclsid: blob.read_shift(16),\r\n\t\t\tstate: blob.read_shift(4, 'i'),\r\n\t\t\tstart: 0,\r\n\t\t\tsize: 0\r\n\t\t});\r\n\t\tvar ctime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\r\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\r\n\t\tvar mtime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\r\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\r\n\t\to.start = blob.read_shift(4, 'i');\r\n\t\to.size = blob.read_shift(4, 'i');\r\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\r\n\t\tif(o.type === 5) { /* root */\r\n\t\t\tminifat_store = o.start;\r\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\r\n\t\t\t/*minifat_size = o.size;*/\r\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\r\n\t\t\to.storage = 'fat';\r\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\r\n\t\t\tsector_list[o.start].name = o.name;\r\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size));\r\n\t\t} else {\r\n\t\t\to.storage = 'minifat';\r\n\t\t\tif(o.size < 0) o.size = 0;\r\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\r\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(o.content) prep_blob(o.content, 0);\r\n\t\tfiles[name] = o;\r\n\t\tFileIndex.push(o);\r\n\t}\r\n}\r\n\r\nfunction read_date(blob, offset) {\r\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\r\n}\r\n\r\nfunction read_file(filename, options) {\r\n\tget_fs();\r\n\treturn parse(fs.readFileSync(filename), options);\r\n}\r\n\r\nfunction read(blob, options) {\r\n\tvar type = options && options.type;\r\n\tif(!type) {\r\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\r\n\t}\r\n\tswitch(type || \"base64\") {\r\n\t\tcase \"file\": return read_file(blob, options);\r\n\t\tcase \"base64\": return parse(s2a(Base64_decode(blob)), options);\r\n\t\tcase \"binary\": return parse(s2a(blob), options);\r\n\t}\r\n\treturn parse(blob, options);\r\n}\r\n\r\nfunction init_cfb(cfb, opts) {\r\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\r\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\r\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\r\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\r\n\tif(cfb.FullPaths.length === 0) {\r\n\t\tcfb.FullPaths[0] = root + \"/\";\r\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 });\r\n\t}\r\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\r\n\tseed_cfb(cfb);\r\n}\r\nfunction seed_cfb(cfb) {\r\n\tvar nm = \"\\u0001Sh33tJ5\";\r\n\tif(CFB.find(cfb, \"/\" + nm)) return;\r\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\r\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }));\r\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\r\n\trebuild_cfb(cfb);\r\n}\r\nfunction rebuild_cfb(cfb, f) {\r\n\tinit_cfb(cfb);\r\n\tvar gc = false, s = false;\r\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\r\n\t\tvar _file = cfb.FileIndex[i];\r\n\t\tswitch(_file.type) {\r\n\t\t\tcase 0:\r\n\t\t\t\tif(s) gc = true;\r\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\r\n\t\t\t\tbreak;\r\n\t\t\tcase 1: case 2: case 5:\r\n\t\t\t\ts = true;\r\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\r\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault: gc = true; break;\r\n\t\t}\r\n\t}\r\n\tif(!gc && !f) return;\r\n\r\n\tvar now = new Date(1987, 1, 19), j = 0;\r\n\t// Track which names exist\r\n\tvar fullPaths = Object.create ? Object.create(null) : {};\r\n\tvar data = [];\r\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\r\n\t\tfullPaths[cfb.FullPaths[i]] = true;\r\n\t\tif(cfb.FileIndex[i].type === 0) continue;\r\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\r\n\t}\r\n\tfor(i = 0; i < data.length; ++i) {\r\n\t\tvar dad = dirname(data[i][0]);\r\n\t\ts = fullPaths[dad];\r\n\t\twhile(!s) {\r\n\t\t\twhile(dirname(dad) && !fullPaths[dirname(dad)]) dad = dirname(dad);\r\n\r\n\t\t\tdata.push([dad, ({\r\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\r\n\t\t\t\ttype: 1,\r\n\t\t\t\tclsid: HEADER_CLSID,\r\n\t\t\t\tct: now, mt: now,\r\n\t\t\t\tcontent: null\r\n\t\t\t})]);\r\n\r\n\t\t\t// Add name to set\r\n\t\t\tfullPaths[dad] = true;\r\n\r\n\t\t\tdad = dirname(data[i][0]);\r\n\t\t\ts = fullPaths[dad];\r\n\t\t}\r\n\t}\r\n\r\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\r\n\tcfb.FullPaths = []; cfb.FileIndex = [];\r\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\r\n\tfor(i = 0; i < data.length; ++i) {\r\n\t\tvar elt = cfb.FileIndex[i];\r\n\t\tvar nm = cfb.FullPaths[i];\r\n\r\n\t\telt.name = filename(nm).replace(\"/\",\"\");\r\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\r\n\t\telt.size = elt.content ? elt.content.length : 0;\r\n\t\telt.start = 0;\r\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\r\n\t\tif(i === 0) {\r\n\t\t\telt.C = data.length > 1 ? 1 : -1;\r\n\t\t\telt.size = 0;\r\n\t\t\telt.type = 5;\r\n\t\t} else if(nm.slice(-1) == \"/\") {\r\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\r\n\t\t\telt.C = j >= data.length ? -1 : j;\r\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\r\n\t\t\telt.R = j >= data.length ? -1 : j;\r\n\t\t\telt.type = 1;\r\n\t\t} else {\r\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\r\n\t\t\telt.type = 2;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nfunction _write(cfb, options) {\r\n\tvar _opts = options || {};\r\n\t/* MAD is order-sensitive, skip rebuild and sort */\r\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\r\n\trebuild_cfb(cfb);\r\n\tswitch(_opts.fileType) {\r\n\t\tcase 'zip': return write_zip(cfb, _opts);\r\n\t\t//case 'mad': return write_mad(cfb, _opts);\r\n\t}\r\n\tvar L = (function(cfb){\r\n\t\tvar mini_size = 0, fat_size = 0;\r\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\r\n\t\t\tvar file = cfb.FileIndex[i];\r\n\t\t\tif(!file.content) continue;\r\n\t\t\tvar flen = file.content.length;\r\n\t\t\tif(flen > 0){\r\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\r\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\r\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\r\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\r\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\r\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\r\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\r\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\r\n\t\tvar L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\r\n\t\tcfb.FileIndex[0].size = mini_size << 6;\r\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\r\n\t\treturn L;\r\n\t})(cfb);\r\n\tvar o = new_buf(L[7] << 9);\r\n\tvar i = 0, T = 0;\r\n\t{\r\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\r\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\r\n\t\to.write_shift(2, 0x003E);\r\n\t\to.write_shift(2, 0x0003);\r\n\t\to.write_shift(2, 0xFFFE);\r\n\t\to.write_shift(2, 0x0009);\r\n\t\to.write_shift(2, 0x0006);\r\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\r\n\t\to.write_shift(4, 0);\r\n\t\to.write_shift(4, L[2]);\r\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\r\n\t\to.write_shift(4, 0);\r\n\t\to.write_shift(4, 1<<12);\r\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\r\n\t\to.write_shift(4, L[3]);\r\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\r\n\t\to.write_shift(4, L[1]);\r\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\r\n\t}\r\n\tif(L[1]) {\r\n\t\tfor(T = 0; T < L[1]; ++T) {\r\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\r\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\r\n\t\t}\r\n\t}\r\n\tvar chainit = function(w) {\r\n\t\tfor(T += w; i> 9);\r\n\t}\r\n\tchainit((L[6] + 7) >> 3);\r\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\r\n\tT = i = 0;\r\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\r\n\t\tfile = cfb.FileIndex[j];\r\n\t\tif(!file.content) continue;\r\nflen = file.content.length;\r\n\t\tif(!flen || flen >= 0x1000) continue;\r\n\t\tfile.start = T;\r\n\t\tchainit((flen + 0x3F) >> 6);\r\n\t}\r\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\r\n\tfor(i = 0; i < L[4]<<2; ++i) {\r\n\t\tvar nm = cfb.FullPaths[i];\r\n\t\tif(!nm || nm.length === 0) {\r\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\r\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\r\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tfile = cfb.FileIndex[i];\r\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\r\n\t\tvar _nm = (i === 0 && _opts.root) || file.name;\r\n\t\tif(_nm.length > 32) {\r\n\t\t\tconsole.error(\"Name \" + _nm + \" will be truncated to \" + _nm.slice(0,32));\r\n\t\t\t_nm = _nm.slice(0, 32);\r\n\t\t}\r\n\t\tflen = 2*(_nm.length+1);\r\n\t\to.write_shift(64, _nm, \"utf16le\");\r\n\t\to.write_shift(2, flen);\r\n\t\to.write_shift(1, file.type);\r\n\t\to.write_shift(1, file.color);\r\n\t\to.write_shift(-4, file.L);\r\n\t\to.write_shift(-4, file.R);\r\n\t\to.write_shift(-4, file.C);\r\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\r\n\t\telse o.write_shift(16, file.clsid, \"hex\");\r\n\t\to.write_shift(4, file.state || 0);\r\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\r\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\r\n\t\to.write_shift(4, file.start);\r\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\r\n\t}\r\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\r\n\t\tfile = cfb.FileIndex[i];\r\nif(file.size >= 0x1000) {\r\n\t\t\to.l = (file.start+1) << 9;\r\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\r\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\r\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\r\n\t\t\t\to.l += (file.size + 511) & -512;\r\n\t\t\t} else {\r\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\r\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\r\n\t\tfile = cfb.FileIndex[i];\r\nif(file.size > 0 && file.size < 0x1000) {\r\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\r\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\r\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\r\n\t\t\t\to.l += (file.size + 63) & -64;\r\n\t\t\t} else {\r\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\r\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (has_buf) {\r\n\t\to.l = o.length;\r\n\t} else {\r\n\t\t// When using Buffer, already 0-filled\r\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\r\n\t}\r\n\treturn o;\r\n}\r\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\r\nfunction find(cfb, path) {\r\n\tvar UCFullPaths = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\r\n\tvar UCPaths = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\r\n\tvar k = false;\r\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\r\n\telse k = path.indexOf(\"/\") !== -1;\r\n\tvar UCPath = path.toUpperCase();\r\n\tvar w = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\r\n\tif(w !== -1) return cfb.FileIndex[w];\r\n\r\n\tvar m = !UCPath.match(chr1);\r\n\tUCPath = UCPath.replace(chr0,'');\r\n\tif(m) UCPath = UCPath.replace(chr1,'!');\r\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\r\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\r\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\r\n\t}\r\n\treturn null;\r\n}\r\n/** CFB Constants */\r\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\r\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\r\n/* 2.1 Compound File Sector Numbers and Types */\r\nvar ENDOFCHAIN = -2;\r\n/* 2.2 Compound File Header */\r\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\r\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\r\nvar HEADER_CLSID = '00000000000000000000000000000000';\r\nvar consts = {\r\n\t/* 2.1 Compund File Sector Numbers and Types */\r\n\tMAXREGSECT: -6,\r\n\tDIFSECT: -4,\r\n\tFATSECT: -3,\r\n\tENDOFCHAIN: ENDOFCHAIN,\r\n\tFREESECT: -1,\r\n\t/* 2.2 Compound File Header */\r\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\r\n\tHEADER_MINOR_VERSION: '3e00',\r\n\tMAXREGSID: -6,\r\n\tNOSTREAM: -1,\r\n\tHEADER_CLSID: HEADER_CLSID,\r\n\t/* 2.6.1 Compound File Directory Entry */\r\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\r\n};\r\n\r\nfunction write_file(cfb, filename, options) {\r\n\tget_fs();\r\n\tvar o = _write(cfb, options);\r\nfs.writeFileSync(filename, o);\r\n}\r\n\r\nfunction a2s(o) {\r\n\tvar out = new Array(o.length);\r\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\r\n\treturn out.join(\"\");\r\n}\r\n\r\nfunction write(cfb, options) {\r\n\tvar o = _write(cfb, options);\r\n\tswitch(options && options.type || \"buffer\") {\r\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o)); return o;\r\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\r\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\r\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\r\n\t\t\t/* falls through */\r\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\r\n\t}\r\n\treturn o;\r\n}\r\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\r\nvar _zlib;\r\nfunction use_zlib(zlib) { try {\r\n\tvar InflateRaw = zlib.InflateRaw;\r\n\tvar InflRaw = new InflateRaw();\r\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\r\n\tif(InflRaw.bytesRead) _zlib = zlib;\r\n\telse throw new Error(\"zlib does not expose bytesRead\");\r\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\r\n\r\nfunction _inflateRawSync(payload, usz) {\r\n\tif(!_zlib) return _inflate(payload, usz);\r\n\tvar InflateRaw = _zlib.InflateRaw;\r\n\tvar InflRaw = new InflateRaw();\r\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\r\n\tpayload.l += InflRaw.bytesRead;\r\n\treturn out;\r\n}\r\n\r\nfunction _deflateRawSync(payload) {\r\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\r\n}\r\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\r\n\r\n/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\r\nvar LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ];\r\n\r\n/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */\r\nvar DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\r\n\r\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\r\n\r\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\r\n\r\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\r\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\r\n\r\nfunction bit_swap_n(n, b) {\r\n\tvar rev = bitswap8[n & 0xFF];\r\n\tif(b <= 8) return rev >>> (8-b);\r\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\r\n\tif(b <= 16) return rev >>> (16-b);\r\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\r\n\treturn rev >>> (24-b);\r\n}\r\n\r\n/* helpers for unaligned bit reads */\r\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\r\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\r\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\r\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\r\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\r\n\r\n/* works up to n = 3 * 8 + 1 = 25 */\r\nfunction read_bits_n(buf, bl, n) {\r\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<>> w;\r\n\tif(n < 8 - w) return v & f;\r\n\tv |= buf[h+1]<<(8-w);\r\n\tif(n < 16 - w) return v & f;\r\n\tv |= buf[h+2]<<(16-w);\r\n\tif(n < 24 - w) return v & f;\r\n\tv |= buf[h+3]<<(24-w);\r\n\treturn v & f;\r\n}\r\n\r\n/* helpers for unaligned bit writes */\r\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\r\n\tif(w <= 5) buf[h] |= (v & 7) << w;\r\n\telse {\r\n\t\tbuf[h] |= (v << w) & 0xFF;\r\n\t\tbuf[h+1] = (v&7) >> (8-w);\r\n\t}\r\n\treturn bl + 3;\r\n}\r\n\r\nfunction write_bits_1(buf, bl, v) {\r\n\tvar w = bl & 7, h = bl >>> 3;\r\n\tv = (v&1) << w;\r\n\tbuf[h] |= v;\r\n\treturn bl + 1;\r\n}\r\nfunction write_bits_8(buf, bl, v) {\r\n\tvar w = bl & 7, h = bl >>> 3;\r\n\tv <<= w;\r\n\tbuf[h] |= v & 0xFF; v >>>= 8;\r\n\tbuf[h+1] = v;\r\n\treturn bl + 8;\r\n}\r\nfunction write_bits_16(buf, bl, v) {\r\n\tvar w = bl & 7, h = bl >>> 3;\r\n\tv <<= w;\r\n\tbuf[h] |= v & 0xFF; v >>>= 8;\r\n\tbuf[h+1] = v & 0xFF;\r\n\tbuf[h+2] = v >>> 8;\r\n\treturn bl + 16;\r\n}\r\n\r\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\r\nfunction realloc(b, sz) {\r\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\r\n\tif(L >= sz) return b;\r\n\tif(has_buf) {\r\n\t\tvar o = new_unsafe_buf(M);\r\n\t\t// $FlowIgnore\r\n\t\tif(b.copy) b.copy(o);\r\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\r\n\t\treturn o;\r\n\t} else if(use_typed_arrays) {\r\n\t\tvar a = new Uint8Array(M);\r\n\t\tif(a.set) a.set(b);\r\n\t\telse for(; i < L; ++i) a[i] = b[i];\r\n\t\treturn a;\r\n\t}\r\n\tb.length = M;\r\n\treturn b;\r\n}\r\n\r\n/* zero-filled arrays for older browsers */\r\nfunction zero_fill_array(n) {\r\n\tvar o = new Array(n);\r\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\r\n\treturn o;\r\n}\r\n\r\n/* build tree (used for literals and lengths) */\r\nfunction build_tree(clens, cmap, MAX) {\r\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\r\n\r\n\tvar bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\r\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\r\n\r\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\r\n\tL = clens.length;\r\n\r\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\r\n\r\n\t/* build code tree */\r\n\tfor(i = 0; i < L; ++i) {\r\n\t\tbl_count[(w = clens[i])]++;\r\n\t\tif(maxlen < w) maxlen = w;\r\n\t\tctree[i] = 0;\r\n\t}\r\n\tbl_count[0] = 0;\r\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\r\n\tfor(i = 0; i < L; ++i) {\r\n\t\tccode = clens[i];\r\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\r\n\t}\r\n\r\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\r\n\tvar cleni = 0;\r\n\tfor(i = 0; i < L; ++i) {\r\n\t\tcleni = clens[i];\r\n\t\tif(cleni != 0) {\r\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\r\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\r\n\t\t\t\tcmap[ccode|(j< 0) out[out.l++] = data[boff++];\r\n\t\t}\r\n\t\treturn out.l;\r\n\t}\r\n\r\n\t/* Fixed Huffman */\r\n\tfunction write_huff_fixed(data, out) {\r\n\t\tvar bl = 0;\r\n\t\tvar boff = 0;\r\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\r\n\t\twhile(boff < data.length) {\r\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\r\n\r\n\t\t\t/* write a stored block for short data */\r\n\t\t\tif(L < 10) {\r\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\r\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\r\n\t\t\t\tout.l = (bl / 8) | 0;\r\n\t\t\t\tout.write_shift(2, L);\r\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\r\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\r\n\t\t\t\tbl = out.l * 8;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\r\n\t\t\tvar hash = 0;\r\n\t\t\twhile(L-- > 0) {\r\n\t\t\t\tvar d = data[boff];\r\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\r\n\r\n\t\t\t\tvar match = -1, mlen = 0;\r\n\r\n\t\t\t\tif((match = addrs[hash])) {\r\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\r\n\t\t\t\t\tif(match > boff) match -= 0x8000;\r\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(mlen > 2) {\r\n\t\t\t\t\t/* Copy Token */\r\n\t\t\t\t\td = LEN_LN_RE[mlen];\r\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\r\n\t\t\t\t\t\tbl += 5;\r\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\r\n\t\t\t\t\t\tbl += 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\r\n\t\t\t\t\tif(len_eb > 0) {\r\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\r\n\t\t\t\t\t\tbl += len_eb;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\td = DST_LN_RE[boff - match];\r\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\r\n\t\t\t\t\tbl -= 3;\r\n\r\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\r\n\t\t\t\t\tif(dst_eb > 0) {\r\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\r\n\t\t\t\t\t\tbl += dst_eb;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\r\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\r\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\r\n\t\t\t\t\t\t++boff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tL-= mlen - 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t/* Literal Token */\r\n\t\t\t\t\tif(d <= 143) d = d + 48;\r\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\r\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\r\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\r\n\t\t\t\t\t++boff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\r\n\t\t}\r\n\t\tout.l = ((bl + 7)/8)|0;\r\n\t\treturn out.l;\r\n\t}\r\n\treturn function _deflateRaw(data, out) {\r\n\t\tif(data.length < 8) return write_stored(data, out);\r\n\t\treturn write_huff_fixed(data, out);\r\n\t};\r\n})();\r\n\r\nfunction _deflate(data) {\r\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\r\n\tvar off = _deflateRaw(data, buf);\r\n\treturn buf.slice(0, off);\r\n}\r\n/* modified inflate function also moves original read head */\r\n\r\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\r\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\r\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128);\r\nvar dyn_len_1 = 1, dyn_len_2 = 1;\r\n\r\n/* 5.5.3 Expanding Huffman Codes */\r\nfunction dyn(data, boff) {\r\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\r\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\r\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\r\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\r\n\tvar w = 0;\r\n\r\n\t/* grab and store code lengths */\r\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\r\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\r\n\tvar maxlen = 1;\r\n\tvar bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\r\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\r\n\tvar L = clens.length; /* 19 */\r\n\tfor(var i = 0; i < _HCLEN; ++i) {\r\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\r\n\t\tif(maxlen < w) maxlen = w;\r\n\t\tbl_count[w]++;\r\n\t\tboff += 3;\r\n\t}\r\n\r\n\t/* build code tree */\r\n\tvar ccode = 0;\r\n\tbl_count[0] = 0;\r\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\r\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\r\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\r\n\tvar cleni = 0;\r\n\tfor(i = 0; i < L; ++i) {\r\n\t\tcleni = clens[i];\r\n\t\tif(cleni != 0) {\r\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\r\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<>>= 3)) {\r\n\t\t\tcase 16:\r\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\r\n\t\t\t\tccode = hcodes[hcodes.length - 1];\r\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 17:\r\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\r\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 18:\r\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\r\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\thcodes.push(ccode);\r\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/* build literal / length trees */\r\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\r\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\r\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\r\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\r\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\r\n\treturn boff;\r\n}\r\n\r\n/* return [ data, bytesRead ] */\r\nfunction inflate(data, usz) {\r\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\r\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\r\n\r\n\t/* bit offset */\r\n\tvar boff = 0;\r\n\r\n\t/* header includes final bit and type bits */\r\n\tvar header = 0;\r\n\r\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\r\n\tvar woff = 0;\r\n\tvar OL = outbuf.length>>>0;\r\n\tvar max_len_1 = 0, max_len_2 = 0;\r\n\r\n\twhile((header&1) == 0) {\r\n\t\theader = read_bits_3(data, boff); boff += 3;\r\n\t\tif((header >>> 1) == 0) {\r\n\t\t\t/* Stored block */\r\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\r\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\r\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\r\n\t\t\tboff += 32;\r\n\t\t\t/* push sz bytes */\r\n\t\t\tif(sz > 0) {\r\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\r\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\r\n\t\t\t}\r\n\t\t\tcontinue;\r\n\t\t} else if((header >> 1) == 1) {\r\n\t\t\t/* Fixed Huffman */\r\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\r\n\t\t} else {\r\n\t\t\t/* Dynamic Huffman */\r\n\t\t\tboff = dyn(data, boff);\r\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\r\n\t\t}\r\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\r\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\r\n\t\t\t/* ingest code and move read head */\r\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\r\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\r\n\t\t\tboff += code & 15; code >>>= 4;\r\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\r\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\r\n\t\t\telse if(code == 256) break;\r\n\t\t\telse {\r\n\t\t\t\tcode -= 257;\r\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\r\n\t\t\t\tvar tgt = woff + LEN_LN[code];\r\n\t\t\t\t/* length extra bits */\r\n\t\t\t\tif(len_eb > 0) {\r\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\r\n\t\t\t\t\tboff += len_eb;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* dist code */\r\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\r\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\r\n\t\t\t\tboff += code & 15; code >>>= 4;\r\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\r\n\t\t\t\tvar dst = DST_LN[code];\r\n\t\t\t\t/* dist extra bits */\r\n\t\t\t\tif(dst_eb > 0) {\r\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\r\n\t\t\t\t\tboff += dst_eb;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\r\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\r\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif(usz) return [outbuf, (boff+7)>>>3];\r\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\r\n}\r\n\r\nfunction _inflate(payload, usz) {\r\n\tvar data = payload.slice(payload.l||0);\r\n\tvar out = inflate(data, usz);\r\n\tpayload.l += out[1];\r\n\treturn out[0];\r\n}\r\n\r\nfunction warn_or_throw(wrn, msg) {\r\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\r\n\telse throw new Error(msg);\r\n}\r\n\r\nfunction parse_zip(file, options) {\r\n\tvar blob = file;\r\n\tprep_blob(blob, 0);\r\n\r\n\tvar FileIndex = [], FullPaths = [];\r\n\tvar o = {\r\n\t\tFileIndex: FileIndex,\r\n\t\tFullPaths: FullPaths\r\n\t};\r\n\tinit_cfb(o, { root: options.root });\r\n\r\n\t/* find end of central directory, start just after signature */\r\n\tvar i = blob.length - 4;\r\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\r\n\tblob.l = i + 4;\r\n\r\n\t/* parse end of central directory */\r\n\tblob.l += 4;\r\n\tvar fcnt = blob.read_shift(2);\r\n\tblob.l += 6;\r\n\tvar start_cd = blob.read_shift(4);\r\n\r\n\t/* parse central directory */\r\n\tblob.l = start_cd;\r\n\r\n\tfor(i = 0; i < fcnt; ++i) {\r\n\t\t/* trust local file header instead of CD entry */\r\n\t\tblob.l += 20;\r\n\t\tvar csz = blob.read_shift(4);\r\n\t\tvar usz = blob.read_shift(4);\r\n\t\tvar namelen = blob.read_shift(2);\r\n\t\tvar efsz = blob.read_shift(2);\r\n\t\tvar fcsz = blob.read_shift(2);\r\n\t\tblob.l += 8;\r\n\t\tvar offset = blob.read_shift(4);\r\n\t\tvar EF = parse_extra_field(blob.slice(blob.l+namelen, blob.l+namelen+efsz));\r\n\t\tblob.l += namelen + efsz + fcsz;\r\n\r\n\t\tvar L = blob.l;\r\n\t\tblob.l = offset + 4;\r\n\t\tparse_local_file(blob, csz, usz, o, EF);\r\n\t\tblob.l = L;\r\n\t}\r\n\r\n\treturn o;\r\n}\r\n\r\n\r\n/* head starts just after local file header signature */\r\nfunction parse_local_file(blob, csz, usz, o, EF) {\r\n\t/* [local file header] */\r\n\tblob.l += 2;\r\n\tvar flags = blob.read_shift(2);\r\n\tvar meth = blob.read_shift(2);\r\n\tvar date = parse_dos_date(blob);\r\n\r\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\r\n\tvar crc32 = blob.read_shift(4);\r\n\tvar _csz = blob.read_shift(4);\r\n\tvar _usz = blob.read_shift(4);\r\n\r\n\tvar namelen = blob.read_shift(2);\r\n\tvar efsz = blob.read_shift(2);\r\n\r\n\t// TODO: flags & (1<<11) // UTF8\r\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\r\n\tif(efsz) {\r\n\t\tvar ef = parse_extra_field(blob.slice(blob.l, blob.l + efsz));\r\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\r\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\r\n\t}\r\n\tblob.l += efsz;\r\n\r\n\t/* [encryption header] */\r\n\r\n\t/* [file data] */\r\n\tvar data = blob.slice(blob.l, blob.l + _csz);\r\n\tswitch(meth) {\r\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\r\n\t\tcase 0: break; // TODO: scan for magic number\r\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\r\n\t}\r\n\r\n\t/* [data descriptor] */\r\n\tvar wrn = false;\r\n\tif(flags & 8) {\r\n\t\tcrc32 = blob.read_shift(4);\r\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\r\n\t\t_csz = blob.read_shift(4);\r\n\t\t_usz = blob.read_shift(4);\r\n\t}\r\n\r\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\r\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\r\n\t//var _crc32 = CRC32.buf(data, 0);\r\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\r\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\r\n}\r\nfunction write_zip(cfb, options) {\r\n\tvar _opts = options || {};\r\n\tvar out = [], cdirs = [];\r\n\tvar o = new_buf(1);\r\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\r\n\tvar desc = false;\r\n\tif(desc) flags |= 8;\r\n\tvar i = 0, j = 0;\r\n\r\n\tvar start_cd = 0, fcnt = 0;\r\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\r\n\tvar crcs = [];\r\n\tvar sz_cd = 0;\r\n\r\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\r\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\r\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\r\n\t\tvar start = start_cd;\r\n\r\n\t\t/* TODO: CP437 filename */\r\n\t\tvar namebuf = new_buf(fp.length);\r\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\r\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\r\n\t\tcrcs[fcnt] = CRC32.buf(fi.content, 0);\r\n\r\n\t\tvar outbuf = fi.content;\r\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\r\n\r\n\t\t/* local file header */\r\n\t\to = new_buf(30);\r\n\t\to.write_shift(4, 0x04034b50);\r\n\t\to.write_shift(2, 20);\r\n\t\to.write_shift(2, flags);\r\n\t\to.write_shift(2, method);\r\n\t\t/* TODO: last mod file time/date */\r\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\r\n\t\telse o.write_shift(4, 0);\r\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\r\n\t\to.write_shift(4, (flags & 8) ? 0 : outbuf.length);\r\n\t\to.write_shift(4, (flags & 8) ? 0 : fi.content.length);\r\n\t\to.write_shift(2, namebuf.length);\r\n\t\to.write_shift(2, 0);\r\n\r\n\t\tstart_cd += o.length;\r\n\t\tout.push(o);\r\n\t\tstart_cd += namebuf.length;\r\n\t\tout.push(namebuf);\r\n\r\n\t\t/* TODO: extra fields? */\r\n\r\n\t\t/* TODO: encryption header ? */\r\n\r\n\t\tstart_cd += outbuf.length;\r\n\t\tout.push(outbuf);\r\n\r\n\t\t/* data descriptor */\r\n\t\tif(flags & 8) {\r\n\t\t\to = new_buf(12);\r\n\t\t\to.write_shift(-4, crcs[fcnt]);\r\n\t\t\to.write_shift(4, outbuf.length);\r\n\t\t\to.write_shift(4, fi.content.length);\r\n\t\t\tstart_cd += o.l;\r\n\t\t\tout.push(o);\r\n\t\t}\r\n\r\n\t\t/* central directory */\r\n\t\to = new_buf(46);\r\n\t\to.write_shift(4, 0x02014b50);\r\n\t\to.write_shift(2, 0);\r\n\t\to.write_shift(2, 20);\r\n\t\to.write_shift(2, flags);\r\n\t\to.write_shift(2, method);\r\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\r\n\t\to.write_shift(-4, crcs[fcnt]);\r\n\r\n\t\to.write_shift(4, outbuf.length);\r\n\t\to.write_shift(4, fi.content.length);\r\n\t\to.write_shift(2, namebuf.length);\r\n\t\to.write_shift(2, 0);\r\n\t\to.write_shift(2, 0);\r\n\t\to.write_shift(2, 0);\r\n\t\to.write_shift(2, 0);\r\n\t\to.write_shift(4, 0);\r\n\t\to.write_shift(4, start);\r\n\r\n\t\tsz_cd += o.l;\r\n\t\tcdirs.push(o);\r\n\t\tsz_cd += namebuf.length;\r\n\t\tcdirs.push(namebuf);\r\n\t\t++fcnt;\r\n\t}\r\n\r\n\t/* end of central directory */\r\n\to = new_buf(22);\r\n\to.write_shift(4, 0x06054b50);\r\n\to.write_shift(2, 0);\r\n\to.write_shift(2, 0);\r\n\to.write_shift(2, fcnt);\r\n\to.write_shift(2, fcnt);\r\n\to.write_shift(4, sz_cd);\r\n\to.write_shift(4, start_cd);\r\n\to.write_shift(2, 0);\r\n\r\n\treturn bconcat(([bconcat((out)), bconcat(cdirs), o]));\r\n}\r\nvar ContentTypeMap = ({\r\n\t\"htm\": \"text/html\",\r\n\t\"xml\": \"text/xml\",\r\n\r\n\t\"gif\": \"image/gif\",\r\n\t\"jpg\": \"image/jpeg\",\r\n\t\"png\": \"image/png\",\r\n\r\n\t\"mso\": \"application/x-mso\",\r\n\t\"thmx\": \"application/vnd.ms-officetheme\",\r\n\t\"sh33tj5\": \"application/octet-stream\"\r\n});\r\n\r\nfunction get_content_type(fi, fp) {\r\n\tif(fi.ctype) return fi.ctype;\r\n\r\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\r\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\r\n\r\n\tif(fp) {\r\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\r\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\r\n\t}\r\n\r\n\treturn \"application/octet-stream\";\r\n}\r\n\r\n/* 76 character chunks TODO: intertwine encoding */\r\nfunction write_base64_76(bstr) {\r\n\tvar data = Base64_encode(bstr);\r\n\tvar o = [];\r\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\r\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\r\n}\r\n\r\n/*\r\nRules for QP:\r\n\t- escape =## applies for all non-display characters and literal \"=\"\r\n\t- space or tab at end of line must be encoded\r\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\r\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\r\n\r\nTODO: Some files from word appear to write line extensions with bare equals:\r\n\r\n```\r\n 0) {\r\n\t\t\troot = root.slice(0, root.length - 1);\r\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\r\n\t\t\tif(row.slice(0,root.length) == root) break;\r\n\t\t}\r\n\t}\r\n\r\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\r\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\r\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\r\n\r\n\tvar FileIndex = [], FullPaths = [];\r\n\tvar o = {\r\n\t\tFileIndex: FileIndex,\r\n\t\tFullPaths: FullPaths\r\n\t};\r\n\tinit_cfb(o);\r\n\tvar start_di, fcnt = 0;\r\n\tfor(di = 0; di < data.length; ++di) {\r\n\t\tvar line = data[di];\r\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\r\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\r\n\t\tstart_di = di;\r\n\t}\r\n\treturn o;\r\n}\r\n\r\nfunction write_mad(cfb, options) {\r\n\tvar opts = options || {};\r\n\tvar boundary = opts.boundary || \"SheetJS\";\r\n\tboundary = '------=' + boundary;\r\n\r\n\tvar out = [\r\n\t\t'MIME-Version: 1.0',\r\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\r\n\t\t'',\r\n\t\t'',\r\n\t\t''\r\n\t];\r\n\r\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\r\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\r\n\t\tfp = cfb.FullPaths[i].slice(root.length);\r\n\t\tfi = cfb.FileIndex[i];\r\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\r\n\r\n\t\t/* Normalize filename */\r\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\r\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\r\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\r\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\r\n\t\t});\r\n\r\n\t\t/* Extract content as binary string */\r\n\t\tvar ca = fi.content;\r\n\t\t// $FlowIgnore\r\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\r\n\r\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\r\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\r\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\r\n\t\tvar qp = dispcnt >= L * 4 / 5;\r\n\r\n\t\tout.push(boundary);\r\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\r\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\r\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\r\n\t\tout.push('');\r\n\r\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\r\n\t}\r\n\tout.push(boundary + '--\\r\\n');\r\n\treturn out.join(\"\\r\\n\");\r\n}\r\nfunction cfb_new(opts) {\r\n\tvar o = ({});\r\n\tinit_cfb(o, opts);\r\n\treturn o;\r\n}\r\n\r\nfunction cfb_add(cfb, name, content, opts) {\r\n\tvar unsafe = opts && opts.unsafe;\r\n\tif(!unsafe) init_cfb(cfb);\r\n\tvar file = !unsafe && CFB.find(cfb, name);\r\n\tif(!file) {\r\n\t\tvar fpath = cfb.FullPaths[0];\r\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\r\n\t\telse {\r\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\r\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\r\n\t\t}\r\n\t\tfile = ({name: filename(name), type: 2});\r\n\t\tcfb.FileIndex.push(file);\r\n\t\tcfb.FullPaths.push(fpath);\r\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\r\n\t}\r\nfile.content = (content);\r\n\tfile.size = content ? content.length : 0;\r\n\tif(opts) {\r\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\r\n\t\tif(opts.mt) file.mt = opts.mt;\r\n\t\tif(opts.ct) file.ct = opts.ct;\r\n\t}\r\n\treturn file;\r\n}\r\n\r\nfunction cfb_del(cfb, name) {\r\n\tinit_cfb(cfb);\r\n\tvar file = CFB.find(cfb, name);\r\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\r\n\t\tcfb.FileIndex.splice(j, 1);\r\n\t\tcfb.FullPaths.splice(j, 1);\r\n\t\treturn true;\r\n\t}\r\n\treturn false;\r\n}\r\n\r\nfunction cfb_mov(cfb, old_name, new_name) {\r\n\tinit_cfb(cfb);\r\n\tvar file = CFB.find(cfb, old_name);\r\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\r\n\t\tcfb.FileIndex[j].name = filename(new_name);\r\n\t\tcfb.FullPaths[j] = new_name;\r\n\t\treturn true;\r\n\t}\r\n\treturn false;\r\n}\r\n\r\nfunction cfb_gc(cfb) { rebuild_cfb(cfb, true); }\r\n\r\nexports.find = find;\r\nexports.read = read;\r\nexports.parse = parse;\r\nexports.write = write;\r\nexports.writeFile = write_file;\r\nexports.utils = {\r\n\tcfb_new: cfb_new,\r\n\tcfb_add: cfb_add,\r\n\tcfb_del: cfb_del,\r\n\tcfb_mov: cfb_mov,\r\n\tcfb_gc: cfb_gc,\r\n\tReadShift: ReadShift,\r\n\tCheckField: CheckField,\r\n\tprep_blob: prep_blob,\r\n\tbconcat: bconcat,\r\n\tuse_zlib: use_zlib,\r\n\t_deflateRaw: _deflate,\r\n\t_inflateRaw: _inflate,\r\n\tconsts: consts\r\n};\r\n\r\nreturn exports;\r\n})();\r\n\r\nvar _fs;\r\nfunction set_fs(fs) { _fs = fs; }\r\n\r\n/* normalize data for blob ctor */\r\nfunction blobify(data) {\r\n\tif(typeof data === \"string\") return s2ab(data);\r\n\tif(Array.isArray(data)) return a2u(data);\r\n\treturn data;\r\n}\r\n/* write or download file */\r\nfunction write_dl(fname, payload, enc) {\r\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\r\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\r\n\tif(typeof Deno !== 'undefined') {\r\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\r\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\r\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\r\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\r\n\t\t\t/* TODO: binary equivalent */\r\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\r\n\t\t}\r\n\t\treturn Deno.writeFileSync(fname, payload);\r\n\t}\r\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\r\nif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\r\n\tif(typeof Blob !== 'undefined') {\r\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\r\nif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\r\nif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\r\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\r\n\t\t\tvar url = URL.createObjectURL(blob);\r\nif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\r\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\r\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\r\n\t\t\t}\r\n\t\t\tvar a = document.createElement(\"a\");\r\n\t\t\tif(a.download != null) {\r\na.download = fname; a.href = url; document.body.appendChild(a); a.click();\r\ndocument.body.removeChild(a);\r\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\r\n\t\t\t\treturn url;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// $FlowIgnore\r\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\r\n\t\t// $FlowIgnore\r\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\r\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\r\n\t\tout.write(payload); out.close(); return payload;\r\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\r\n\tthrow new Error(\"cannot save file \" + fname);\r\n}\r\n\r\n/* read binary data from file */\r\nfunction read_binary(path) {\r\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\r\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\r\n\t// $FlowIgnore\r\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\r\n\t\t// $FlowIgnore\r\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\r\n\t\tvar data = infile.read(); infile.close();\r\n\t\treturn data;\r\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\r\n\tthrow new Error(\"Cannot access file \" + path);\r\n}\r\nfunction keys(o) {\r\n\tvar ks = Object.keys(o), o2 = [];\r\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\r\n\treturn o2;\r\n}\r\n\r\nfunction evert_key(obj, key) {\r\n\tvar o = ([]), K = keys(obj);\r\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\r\n\treturn o;\r\n}\r\n\r\nfunction evert(obj) {\r\n\tvar o = ([]), K = keys(obj);\r\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\r\n\treturn o;\r\n}\r\n\r\nfunction evert_num(obj) {\r\n\tvar o = ([]), K = keys(obj);\r\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\r\n\treturn o;\r\n}\r\n\r\nfunction evert_arr(obj) {\r\n\tvar o = ([]), K = keys(obj);\r\n\tfor(var i = 0; i !== K.length; ++i) {\r\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\r\n\t\to[obj[K[i]]].push(K[i]);\r\n\t}\r\n\treturn o;\r\n}\r\n\r\nvar basedate = new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\r\nfunction datenum(v, date1904) {\r\n\tvar epoch = v.getTime();\r\n\tif(date1904) epoch -= 1462*24*60*60*1000;\r\n\tvar dnthresh = basedate.getTime() + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000;\r\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\r\n}\r\nvar refdate = new Date();\r\nvar dnthresh = basedate.getTime() + (refdate.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000;\r\nvar refoffset = refdate.getTimezoneOffset();\r\nfunction numdate(v) {\r\n\tvar out = new Date();\r\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\r\n\tif (out.getTimezoneOffset() !== refoffset) {\r\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\r\n\t}\r\n\treturn out;\r\n}\r\n\r\n/* ISO 8601 Duration */\r\nfunction parse_isodur(s) {\r\n\tvar sec = 0, mt = 0, time = false;\r\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\r\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\r\n\tfor(var i = 1; i != m.length; ++i) {\r\n\t\tif(!m[i]) continue;\r\n\t\tmt = 1;\r\n\t\tif(i > 3) time = true;\r\n\t\tswitch(m[i].slice(m[i].length-1)) {\r\n\t\t\tcase 'Y':\r\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\r\n\t\t\tcase 'D': mt *= 24;\r\n\t\t\t\t/* falls through */\r\n\t\t\tcase 'H': mt *= 60;\r\n\t\t\t\t/* falls through */\r\n\t\t\tcase 'M':\r\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\r\n\t\t\t\telse mt *= 60;\r\n\t\t\t\t/* falls through */\r\n\t\t\tcase 'S': break;\r\n\t\t}\r\n\t\tsec += mt * parseInt(m[i], 10);\r\n\t}\r\n\treturn sec;\r\n}\r\n\r\nvar good_pd_date_1 = new Date('2017-02-19T19:06:09.000Z');\r\nvar good_pd_date = isNaN(good_pd_date_1.getFullYear()) ? new Date('2/19/17') : good_pd_date_1;\r\nvar good_pd = good_pd_date.getFullYear() == 2017;\r\n/* parses a date as a local date */\r\nfunction parseDate(str, fixdate) {\r\n\tvar d = new Date(str);\r\n\tif(good_pd) {\r\nif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\r\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\r\n\t\treturn d;\r\n\t}\r\n\tif(str instanceof Date) return str;\r\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\r\n\t\tvar s = d.getFullYear();\r\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\r\n\t\td.setFullYear(d.getFullYear() + 100); return d;\r\n\t}\r\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\r\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\r\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\r\n\treturn out;\r\n}\r\n\r\nfunction cc2str(arr, debomit) {\r\n\tif(has_buf && Buffer.isBuffer(arr)) {\r\n\t\tif(debomit && buf_utf16le) {\r\n\t\t\t// TODO: temporary patch\r\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\r\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\r\n\t\t}\r\n\t\treturn arr.toString(\"binary\");\r\n\t}\r\n\r\n\tif(typeof TextDecoder !== \"undefined\") try {\r\n\t\tif(debomit) {\r\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\r\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\r\n\t\t}\r\n\t\tvar rev = {\r\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\r\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\r\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\r\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\r\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\r\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\r\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\r\n\t\t};\r\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\r\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\r\n\t} catch(e) {}\r\n\r\n\tvar o = [];\r\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\r\n\treturn o.join(\"\");\r\n}\r\n\r\nfunction dup(o) {\r\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\r\n\tif(typeof o != 'object' || o == null) return o;\r\n\tif(o instanceof Date) return new Date(o.getTime());\r\n\tvar out = {};\r\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\r\n\treturn out;\r\n}\r\n\r\nfunction fill(c,l) { var o = \"\"; while(o.length < l) o+=c; return o; }\r\n\r\n/* TODO: stress test */\r\nfunction fuzzynum(s) {\r\n\tvar v = Number(s);\r\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\r\n\tif(!/\\d/.test(s)) return v;\r\n\tvar wt = 1;\r\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\r\n\tif(!isNaN(v = Number(ss))) return v / wt;\r\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\r\n\tif(!isNaN(v = Number(ss))) return v / wt;\r\n\treturn v;\r\n}\r\n\r\n/* NOTE: Chrome rejects bare times like 1:23 PM */\r\nvar FDRE1 = /^(0?\\d|1[0-2])(?:|:([0-5]?\\d)(?:|(\\.\\d+)(?:|:([0-5]?\\d))|:([0-5]?\\d)(|\\.\\d+)))\\s+([ap])m?$/;\r\n\r\nfunction fuzzytime1(M) {\r\n /* TODO: 1904 adjustment, keep in sync with base date */\r\n if(!M[2]) return new Date(1899,11,30,(+M[1]%12) + (M[7] == \"p\" ? 12 : 0), 0, 0, 0);\r\n if(M[3]) {\r\n if(M[4]) return new Date(1899,11,30,(+M[1]%12) + (M[7] == \"p\" ? 12 : 0), +M[2], +M[4], parseFloat(M[3])*1000);\r\n else return new Date(1899,11,30,(M[7] == \"p\" ? 12 : 0), +M[1], +M[2], parseFloat(M[3])*1000);\r\n }\r\n else if(M[5]) return new Date(1899,11,30, (+M[1]%12) + (M[7] == \"p\" ? 12 : 0), +M[2], +M[5], M[6] ? parseFloat(M[6]) * 1000 : 0);\r\n else return new Date(1899,11,30,(+M[1]%12) + (M[7] == \"p\" ? 12 : 0), +M[2], 0, 0);\r\n}\r\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\r\nfunction fuzzydate(s) {\r\n\tvar lower = s.toLowerCase();\r\n\tvar lnos = lower.replace(/\\s+/g, \" \").trim();\r\n\tvar M = lnos.match(FDRE1);\r\n\tif(M) return fuzzytime1(M);\r\n\r\n\tvar o = new Date(s), n = new Date(NaN);\r\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\r\n\tif(isNaN(d)) return n;\r\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\r\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\r\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\r\n\t} else if(lower.replace(/[ap]m?/, \"\").match(/[a-z]/)) return n;\r\n\tif(y < 0 || y > 8099 || s.match(/[^-0-9:,\\/\\\\]/)) return n;\r\n\treturn o;\r\n}\r\n\r\nvar split_regex = (function() {\r\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\r\n\treturn function split_regex(str, re, def) {\r\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\r\n\t\tvar p = str.split(re), o = [p[0]];\r\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\r\n\t\treturn o;\r\n\t};\r\n})();\r\nfunction getdatastr(data) {\r\n\tif(!data) return null;\r\n\tif(data.content && data.type) return cc2str(data.content, true);\r\n\tif(data.data) return debom(data.data);\r\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\r\n\tif(data.asBinary) return debom(data.asBinary());\r\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\r\n\treturn null;\r\n}\r\n\r\nfunction getdatabin(data) {\r\n\tif(!data) return null;\r\n\tif(data.data) return char_codes(data.data);\r\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\r\n\tif(data._data && data._data.getContent) {\r\n\t\tvar o = data._data.getContent();\r\n\t\tif(typeof o == \"string\") return char_codes(o);\r\n\t\treturn Array.prototype.slice.call(o);\r\n\t}\r\n\tif(data.content && data.type) return data.content;\r\n\treturn null;\r\n}\r\n\r\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\r\n\r\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\r\n/* OASIS does not comment on filename case sensitivity */\r\nfunction safegetzipfile(zip, file) {\r\n\tvar k = zip.FullPaths || keys(zip.files);\r\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\r\n\tfor(var i=0; i\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\r\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\r\nvar tagregex = XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\r\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\r\nfunction parsexmltag(tag, skip_root, skip_LC) {\r\n\tvar z = ({});\r\n\tvar eq = 0, c = 0;\r\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\r\n\tif(!skip_root) z[0] = tag.slice(0, eq);\r\n\tif(eq === tag.length) return z;\r\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\r\n\tif(m) for(i = 0; i != m.length; ++i) {\r\n\t\tcc = m[i];\r\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\r\n\t\tq = cc.slice(0,c).trim();\r\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\r\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\r\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\r\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\r\n\t\tif(j===q.length) {\r\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\r\n\t\t\tz[q] = v;\r\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\r\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\r\n\t\t\tz[k] = v;\r\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\r\n\t\t}\r\n\t}\r\n\treturn z;\r\n}\r\nfunction strip_ns(x) { return x.replace(nsregex2, \"<$1\"); }\r\n\r\nvar encodings = {\r\n\t'"': '\"',\r\n\t''': \"'\",\r\n\t'>': '>',\r\n\t'<': '<',\r\n\t'&': '&'\r\n};\r\nvar rencoding = evert(encodings);\r\n//var rencstr = \"&<>'\\\"\".split(\"\");\r\n\r\n// TODO: CP remap (need to read file version to determine OS)\r\nvar unescapexml = (function() {\r\n\t/* 22.4.2.4 bstr (Basic String) */\r\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\r\n\tfunction raw_unescapexml(text) {\r\n\t\tvar s = text + '', i = s.indexOf(\"-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\r\n\t\tvar j = s.indexOf(\"]]>\");\r\n\t\treturn raw_unescapexml(s.slice(0, i)) + s.slice(i+9,j) + raw_unescapexml(s.slice(j+3));\r\n\t}\r\n\treturn function unescapexml(text, xlsx) {\r\n\t\tvar out = raw_unescapexml(text);\r\n\t\treturn xlsx ? out.replace(/\\r\\n/g, \"\\n\") : out;\r\n\t};\r\n})();\r\n\r\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f\\uFFFE-\\uFFFF]/g;\r\nfunction escapexml(text){\r\n\tvar s = text + '';\r\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\r\n}\r\nfunction escapexmltag(text){ return escapexml(text).replace(/ /g,\"_x0020_\"); }\r\n\r\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\r\nfunction escapehtml(text){\r\n\tvar s = text + '';\r\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"
\").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\r\n}\r\n\r\nfunction escapexlml(text){\r\n\tvar s = text + '';\r\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\r\n}\r\n\r\n/* TODO: handle codepages */\r\nvar xlml_fixstr = (function() {\r\n\tvar entregex = /&#(\\d+);/g;\r\n\tfunction entrepl($$,$1) { return String.fromCharCode(parseInt($1,10)); }\r\n\treturn function xlml_fixstr(str) { return str.replace(entregex,entrepl); };\r\n})();\r\nfunction xlml_unfixstr(str) { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\ \"); }\r\n\r\n/* note: xsd:boolean valid values: true / 1 / false / 0 */\r\nfunction parsexmlbool(value) {\r\n\tswitch(value) {\r\n\t\tcase 1: case true: case '1': case 'true': return true;\r\n\t\tcase 0: case false: case '0': case 'false': return false;\r\n\t\t//default: throw new Error(\"Invalid xsd:boolean \" + value);\r\n\t}\r\n\treturn false;\r\n}\r\n\r\nfunction utf8reada(orig) {\r\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\r\n\twhile (i < orig.length) {\r\n\t\tc = orig.charCodeAt(i++);\r\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\r\n\t\td = orig.charCodeAt(i++);\r\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\r\n\t\te = orig.charCodeAt(i++);\r\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\r\n\t\tf = orig.charCodeAt(i++);\r\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\r\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\r\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\r\n\t}\r\n\treturn out;\r\n}\r\n\r\nfunction utf8readb(data) {\r\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\r\n\tfor(i = 0; i < data.length; i+=j) {\r\n\t\tj = 1;\r\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\r\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\r\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\r\n\t\telse { j = 4;\r\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\r\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\r\n\t\t}\r\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\r\n\t\tout[k++] = w%256; out[k++] = w>>>8;\r\n\t}\r\n\treturn out.slice(0,k).toString('ucs2');\r\n}\r\n\r\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\r\n\r\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\r\nvar utf8read = has_buf && (utf8readc(utf8corpus) == utf8reada(utf8corpus) && utf8readc || utf8readb(utf8corpus) == utf8reada(utf8corpus) && utf8readb) || utf8reada;\r\n\r\nvar utf8write = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig) {\r\n\tvar out = [], i = 0, c = 0, d = 0;\r\n\twhile(i < orig.length) {\r\n\t\tc = orig.charCodeAt(i++);\r\n\t\tswitch(true) {\r\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\r\n\t\t\tcase c < 2048:\r\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\r\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\r\n\t\t\t\tbreak;\r\n\t\t\tcase c >= 55296 && c < 57344:\r\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\r\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\r\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\r\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\r\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\r\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\r\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\r\n\t\t}\r\n\t}\r\n\treturn out.join(\"\");\r\n};\r\n\r\n// matches ... extracts content\r\nvar matchtag = (function() {\r\n\tvar mtcache = ({});\r\n\treturn function matchtag(f,g) {\r\n\t\tvar t = f+\"|\"+(g||\"\");\r\n\t\tif(mtcache[t]) return mtcache[t];\r\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)',((g||\"\"))));\r\n\t};\r\n})();\r\n\r\nvar htmldecode = (function() {\r\n\tvar entities = [\r\n\t\t['nbsp', ' '], ['middot', '·'],\r\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt', '>'], ['lt', '<'], ['amp', '&']\r\n\t].map(function(x) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\r\n\treturn function htmldecode(str) {\r\n\t\tvar o = str\r\n\t\t\t\t// Remove new lines and spaces from start of content\r\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\r\n\t\t\t\t// Remove new lines and spaces from end of content\r\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\r\n\t\t\t\t// Added line which removes any white space characters after and before html tags\r\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+ tags with new lines\r\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\r\n\t\t\t\t// Strip HTML elements\r\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\r\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\r\n\t\treturn o;\r\n\t};\r\n})();\r\n\r\nvar vtregex = (function(){ var vt_cache = {};\r\n\treturn function vt_regex(bt) {\r\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\r\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)\", 'g') );\r\n};})();\r\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)' + g + ''; }\r\n\r\nfunction wxt_helper(h) { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\r\nfunction writextag(f,g,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '';}\r\n\r\nfunction write_w3cdtf(d, t) { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\r\n\r\nfunction write_vt(s, xlsx) {\r\n\tswitch(typeof s) {\r\n\t\tcase 'string':\r\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\r\n\t\t\tif(xlsx) o = o.replace(/"/g, \"_x0022_\");\r\n\t\t\treturn o;\r\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\r\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\r\n\t}\r\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\r\n\tthrow new Error(\"Unable to serialize \" + s);\r\n}\r\n\r\nfunction xlml_normalize(d) {\r\n\tif(has_buf && Buffer.isBuffer(d)) return d.toString('utf8');\r\n\tif(typeof d === 'string') return d;\r\n\t/* duktape */\r\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\r\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\r\n}\r\n/* UOS uses CJK in tags */\r\nvar xlmlregex = /<(\\/?)([^\\s?>:\\/]+)(?:[\\s?:\\/](?:[^>=]|=\"[^\"]*?\")*)?>/mg;\r\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\r\n\r\nvar XMLNS = ({\r\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\r\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\r\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\r\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\r\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\r\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\r\n\t'dc': 'http://purl.org/dc/elements/1.1/',\r\n\t'dcterms': 'http://purl.org/dc/terms/',\r\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\r\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\r\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\r\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\r\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\r\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\r\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\r\n});\r\n\r\nvar XMLNS_main = [\r\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\r\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\r\n\t'http://schemas.microsoft.com/office/excel/2006/main',\r\n\t'http://schemas.microsoft.com/office/excel/2006/2'\r\n];\r\n\r\nvar XLMLNS = ({\r\n\t'o': 'urn:schemas-microsoft-com:office:office',\r\n\t'x': 'urn:schemas-microsoft-com:office:excel',\r\n\t'ss': 'urn:schemas-microsoft-com:office:spreadsheet',\r\n\t'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\r\n\t'mv': 'http://macVmlSchemaUri',\r\n\t'v': 'urn:schemas-microsoft-com:vml',\r\n\t'html': 'http://www.w3.org/TR/REC-html40'\r\n});\r\nfunction read_double_le(b, idx) {\r\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\r\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\r\n\tvar m = (b[idx+6]&0x0f);\r\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\r\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\r\n\tif(e == 0) e = -1022;\r\n\telse { e -= 1023; m += Math.pow(2,52); }\r\n\treturn s * Math.pow(2, e - 52) * m;\r\n}\r\n\r\nfunction write_double_le(b, v, idx) {\r\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\r\n\tvar av = bs ? (-v) : v;\r\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\r\n\telse if(av == 0) e = m = 0;\r\n\telse {\r\n\t\te = Math.floor(Math.log(av) / Math.LN2);\r\n\t\tm = av * Math.pow(2, 52 - e);\r\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\r\n\t\telse { m -= Math.pow(2,52); e+=1023; }\r\n\t}\r\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\r\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\r\n\tb[idx + 7] = (e >> 4) | bs;\r\n}\r\n\r\nvar ___toBuffer = function(bufs) { var x=[],w=10240; for(var i=0;i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\r\n\r\nvar ___utf16le = function(b,s,e) { var ss=[]; for(var i=s; i 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\r\nvar __lpstr = ___lpstr;\r\n\r\nvar ___cpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\r\nvar __cpstr = ___cpstr;\r\n\r\nvar ___lpwstr = function(b,i) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\r\nvar __lpwstr = ___lpwstr;\r\n\r\nvar ___lpp4 = function lpp4_(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\r\nvar __lpp4 = ___lpp4;\r\n\r\nvar ___8lpp4 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\r\nvar __8lpp4 = ___8lpp4;\r\n\r\nvar ___double = function(b, idx) { return read_double_le(b, idx);};\r\nvar __double = ___double;\r\n\r\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\r\n\r\nif(has_buf) {\r\n\t__lpstr = function lpstr_b(b, i) { if(!Buffer.isBuffer(b)) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\r\n\t__cpstr = function cpstr_b(b, i) { if(!Buffer.isBuffer(b)) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\r\n\t__lpwstr = function lpwstr_b(b, i) { if(!Buffer.isBuffer(b) || !buf_utf16le) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\r\n\t__lpp4 = function lpp4_b(b, i) { if(!Buffer.isBuffer(b) || !buf_utf16le) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\r\n\t__8lpp4 = function lpp4_8b(b, i) { if(!Buffer.isBuffer(b)) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\r\n\t__double = function double_(b, i) { if(Buffer.isBuffer(b)) return b.readDoubleLE(i); return ___double(b,i); };\r\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\r\n}\r\n\r\n/* from js-xls */\r\nfunction cpdoit() {\r\n\t__utf16le = function(b,s,e) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\r\n\t__utf8 = function(b,s,e) { return $cptable.utils.decode(65001, b.slice(s,e)); };\r\n\t__lpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\r\n\t__cpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\r\n\t__lpwstr = function(b,i) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\r\n\t__lpp4 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\r\n\t__8lpp4 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\r\n}\r\nif(typeof $cptable !== 'undefined') cpdoit();\r\n\r\nvar __readUInt8 = function(b, idx) { return b[idx]; };\r\nvar __readUInt16LE = function(b, idx) { return (b[idx+1]*(1<<8))+b[idx]; };\r\nvar __readInt16LE = function(b, idx) { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\r\nvar __readUInt32LE = function(b, idx) { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\r\nvar __readInt32LE = function(b, idx) { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\r\nvar __readInt32BE = function(b, idx) { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\r\n\r\nfunction ReadShift(size, t) {\r\n\tvar o=\"\", oI, oR, oo=[], w, vv, i, loc;\r\n\tswitch(t) {\r\n\t\tcase 'dbcs':\r\n\t\t\tloc = this.l;\r\n\t\t\tif(has_buf && Buffer.isBuffer(this) && buf_utf16le) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\r\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\r\n\t\t\tsize *= 2;\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\r\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\r\n\r\n\t\tcase 'wstr':\r\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\r\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\r\n\t\t\tsize = 2 * size; break;\r\n\r\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\r\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\r\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\r\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\r\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\r\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\r\n\t\tcase 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\r\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\r\n\t\tcase '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\r\n\r\n\t\tcase 'cstr': size = 0; o = \"\";\r\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\r\n\t\t\to = oo.join(\"\"); break;\r\n\t\tcase '_wstr': size = 0; o = \"\";\r\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\r\n\t\t\tsize+=2; o = oo.join(\"\"); break;\r\n\r\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\r\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\r\n\t\t\tfor(i = 0; i < size; ++i) {\r\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\r\n\t\t\t\t\tw = __readUInt8(this, loc);\r\n\t\t\t\t\tthis.l = loc + 1;\r\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\r\n\t\t\t\t\treturn oo.join(\"\") + vv;\r\n\t\t\t\t}\r\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\r\n\t\t\t\tloc+=2;\r\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\r\n\r\n\t\tcase 'cpstr':\r\n\t\t\tif(typeof $cptable !== 'undefined') {\r\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t/* falls through */\r\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\r\n\t\t\tfor(i = 0; i != size; ++i) {\r\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\r\n\t\t\t\t\tw = __readUInt8(this, loc);\r\n\t\t\t\t\tthis.l = loc + 1;\r\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\r\n\t\t\t\t\treturn oo.join(\"\") + vv;\r\n\t\t\t\t}\r\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\r\n\t\t\t\tloc+=1;\r\n\t\t\t} o = oo.join(\"\"); break;\r\n\r\n\t\tdefault:\r\n\tswitch(size) {\r\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\r\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\r\n\t\tcase 4: case -4:\r\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\r\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\r\n\t\tcase 8: case -8:\r\n\t\t\tif(t === 'f') {\r\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\r\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\r\n\t\t\t\tthis.l += 8; return oR;\r\n\t\t\t} else size = 8;\r\n\t\t/* falls through */\r\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\r\n\t}}\r\n\tthis.l+=size; return o;\r\n}\r\n\r\nvar __writeUInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\r\nvar __writeInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\r\nvar __writeUInt16LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\r\n\r\nfunction WriteShift(t, val, f) {\r\n\tvar size = 0, i = 0;\r\n\tif(f === 'dbcs') {\r\nfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\r\n\t\tsize = 2 * val.length;\r\n\t} else if(f === 'sbcs') {\r\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\r\n\t\t\t/* TODO: use tables directly, don't encode */\r\nfor(i = 0; i != val.length; ++i) {\r\n\t\t\t\tvar cppayload = $cptable.utils.encode(current_ansi, val.charAt(i));\r\n\t\t\t\tthis[this.l + i] = cppayload[0];\r\n\t\t\t}\r\n\t\t} else {\r\nval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\r\nfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\r\n\t\t}\r\n\t\tsize = val.length;\r\n\t} else if(f === 'hex') {\r\n\t\tfor(; i < t; ++i) {\r\nthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\r\n\t\t} return this;\r\n\t} else if(f === 'utf16le') {\r\nvar end = Math.min(this.l + t, this.length);\r\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\r\n\t\t\t\tvar cc = val.charCodeAt(i);\r\n\t\t\t\tthis[this.l++] = (cc & 0xff);\r\n\t\t\t\tthis[this.l++] = (cc >> 8);\r\n\t\t\t}\r\n\t\t\twhile(this.l < end) this[this.l++] = 0;\r\n\t\t\treturn this;\r\n\t} else switch(t) {\r\n\t\tcase 1: size = 1; this[this.l] = val&0xFF; break;\r\n\t\tcase 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\r\n\t\tcase 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\r\n\t\tcase 4: size = 4; __writeUInt32LE(this, val, this.l); break;\r\n\t\tcase 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\r\n\t\t/* falls through */\r\n\t\tcase 16: break;\r\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\r\n\t}\r\n\tthis.l += size; return this;\r\n}\r\n\r\nfunction CheckField(hexstr, fld) {\r\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\r\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\r\n\tthis.l += hexstr.length>>1;\r\n}\r\n\r\nfunction prep_blob(blob, pos) {\r\n\tblob.l = pos;\r\n\tblob.read_shift = ReadShift;\r\n\tblob.chk = CheckField;\r\n\tblob.write_shift = WriteShift;\r\n}\r\n\r\nfunction parsenoop(blob, length) { blob.l += length; }\r\n\r\nfunction new_buf(sz) {\r\n\tvar o = new_raw_buf(sz);\r\n\tprep_blob(o, 0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.1.4 Record */\r\nfunction recordhopper(data, cb, opts) {\r\n\tif(!data) return;\r\n\tvar tmpbyte, cntbyte, length;\r\n\tprep_blob(data, data.l || 0);\r\n\tvar L = data.length, RT = 0, tgt = 0;\r\n\twhile(data.l < L) {\r\n\t\tRT = data.read_shift(1);\r\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\r\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\r\n\t\ttmpbyte = data.read_shift(1);\r\n\t\tlength = tmpbyte & 0x7F;\r\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\r\n\t\ttgt = data.l + length;\r\n\t\tvar d = R.f && R.f(data, length, opts);\r\n\t\tdata.l = tgt;\r\n\t\tif(cb(d, R, RT)) return;\r\n\t}\r\n}\r\n\r\n/* control buffer usage for fixed-length buffers */\r\nfunction buf_array() {\r\n\tvar bufs = [], blksz = has_buf ? 256 : 2048;\r\n\tvar newblk = function ba_newblk(sz) {\r\n\t\tvar o = (new_buf(sz));\r\n\t\tprep_blob(o, 0);\r\n\t\treturn o;\r\n\t};\r\n\r\n\tvar curbuf = newblk(blksz);\r\n\r\n\tvar endbuf = function ba_endbuf() {\r\n\t\tif(!curbuf) return;\r\n\t\t// workaround for new Buffer(3).slice(0,0) bug in bun 0.1.3\r\n\t\tif(curbuf.l) {\r\n\t\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\r\n\t\t\tif(curbuf.length > 0) bufs.push(curbuf);\r\n\t\t}\r\n\t\tcurbuf = null;\r\n\t};\r\n\r\n\tvar next = function ba_next(sz) {\r\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\r\n\t\tendbuf();\r\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\r\n\t};\r\n\r\n\tvar end = function ba_end() {\r\n\t\tendbuf();\r\n\t\treturn bconcat(bufs);\r\n\t};\r\n\r\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\r\n\r\n\treturn ({ next:next, push:push, end:end, _bufs:bufs });\r\n}\r\n\r\nfunction write_record(ba, type, payload, length) {\r\n\tvar t = +type, l;\r\n\tif(isNaN(t)) return; // TODO: throw something here?\r\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\r\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\r\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\r\n\tvar o = ba.next(l);\r\n\tif(t <= 0x7F) o.write_shift(1, t);\r\n\telse {\r\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\r\n\t\to.write_shift(1, (t >> 7));\r\n\t}\r\n\tfor(var i = 0; i != 4; ++i) {\r\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\r\n\t\telse { o.write_shift(1, length); break; }\r\n\t}\r\n\tif(length > 0 && is_buf(payload)) ba.push(payload);\r\n}\r\n/* XLS ranges enforced */\r\nfunction shift_cell_xls(cell, tgt, opts) {\r\n\tvar out = dup(cell);\r\n\tif(tgt.s) {\r\n\t\tif(out.cRel) out.c += tgt.s.c;\r\n\t\tif(out.rRel) out.r += tgt.s.r;\r\n\t} else {\r\n\t\tif(out.cRel) out.c += tgt.c;\r\n\t\tif(out.rRel) out.r += tgt.r;\r\n\t}\r\n\tif(!opts || opts.biff < 12) {\r\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\r\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\r\n\t}\r\n\treturn out;\r\n}\r\n\r\nfunction shift_range_xls(cell, range, opts) {\r\n\tvar out = dup(cell);\r\n\tout.s = shift_cell_xls(out.s, range.s, opts);\r\n\tout.e = shift_cell_xls(out.e, range.s, opts);\r\n\treturn out;\r\n}\r\n\r\nfunction encode_cell_xls(c, biff) {\r\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\r\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\r\n\tvar s = encode_cell(c);\r\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\r\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\r\n\treturn s;\r\n}\r\n\r\nfunction encode_range_xls(r, opts) {\r\n\tif(r.s.r == 0 && !r.s.rRel) {\r\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\r\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\r\n\t\t}\r\n\t}\r\n\tif(r.s.c == 0 && !r.s.cRel) {\r\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\r\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\r\n\t\t}\r\n\t}\r\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\r\n}\r\nif(typeof cptable !== 'undefined') set_cptable(cptable);\r\nelse if(typeof module !== \"undefined\" && typeof require !== 'undefined') {\r\n\tset_cptable(require('./cpexcel.js'));\r\n}\r\nfunction decode_row(rowstr) { return parseInt(unfix_row(rowstr),10) - 1; }\r\nfunction encode_row(row) { return \"\" + (row + 1); }\r\nfunction fix_row(cstr) { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\r\nfunction unfix_row(cstr) { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\r\n\r\nfunction decode_col(colstr) { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\r\nfunction encode_col(col) { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\r\nfunction fix_col(cstr) { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\r\nfunction unfix_col(cstr) { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\r\n\r\nfunction split_cell(cstr) { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\r\n//function decode_cell(cstr) { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\r\nfunction decode_cell(cstr) {\r\n\tvar R = 0, C = 0;\r\n\tfor(var i = 0; i < cstr.length; ++i) {\r\n\t\tvar cc = cstr.charCodeAt(i);\r\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\r\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\r\n\t}\r\n\treturn { c: C - 1, r:R - 1 };\r\n}\r\n//function encode_cell(cell) { return encode_col(cell.c) + encode_row(cell.r); }\r\nfunction encode_cell(cell) {\r\n\tvar col = cell.c + 1;\r\n\tvar s=\"\";\r\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\r\n\treturn s + (cell.r + 1);\r\n}\r\nfunction decode_range(range) {\r\n\tvar idx = range.indexOf(\":\");\r\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\r\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\r\n}\r\nfunction encode_range(cs,ce) {\r\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\r\nreturn encode_range(cs.s, cs.e);\r\n\t}\r\nif(typeof cs !== 'string') cs = encode_cell((cs));\r\n\tif(typeof ce !== 'string') ce = encode_cell((ce));\r\nreturn cs == ce ? cs : cs + \":\" + ce;\r\n}\r\nfunction fix_range(a1) {\r\n\tvar s = decode_range(a1);\r\n\treturn \"$\" + encode_col(s.s.c) + \"$\" + encode_row(s.s.r) + \":$\" + encode_col(s.e.c) + \"$\" + encode_row(s.e.r);\r\n}\r\n\r\n// List of invalid characters needs to be tested further\r\nfunction formula_quote_sheet_name(sname, opts) {\r\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\r\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname.replace(/'/g, \"''\") + \"'\";\r\n\treturn sname;\r\n}\r\n\r\nfunction safe_decode_range(range) {\r\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\r\n\tvar idx = 0, i = 0, cc = 0;\r\n\tvar len = range.length;\r\n\tfor(idx = 0; i < len; ++i) {\r\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\r\n\t\tidx = 26*idx + cc;\r\n\t}\r\n\to.s.c = --idx;\r\n\r\n\tfor(idx = 0; i < len; ++i) {\r\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\r\n\t\tidx = 10*idx + cc;\r\n\t}\r\n\to.s.r = --idx;\r\n\r\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\r\n\t++i;\r\n\r\n\tfor(idx = 0; i != len; ++i) {\r\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\r\n\t\tidx = 26*idx + cc;\r\n\t}\r\n\to.e.c = --idx;\r\n\r\n\tfor(idx = 0; i != len; ++i) {\r\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\r\n\t\tidx = 10*idx + cc;\r\n\t}\r\n\to.e.r = --idx;\r\n\treturn o;\r\n}\r\n\r\nfunction safe_format_cell(cell, v) {\r\n\tvar q = (cell.t == 'd' && v instanceof Date);\r\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\r\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; }\r\n}\r\n\r\nfunction format_cell(cell, v, o) {\r\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\r\n\tif(cell.w !== undefined) return cell.w;\r\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\r\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\r\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\r\n\treturn safe_format_cell(cell, v);\r\n}\r\n\r\nfunction sheet_to_workbook(sheet, opts) {\r\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\r\n\tvar sheets = {}; sheets[n] = sheet;\r\n\treturn { SheetNames: [n], Sheets: sheets };\r\n}\r\n\r\nfunction sheet_add_aoa(_ws, data, opts) {\r\n\tvar o = opts || {};\r\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\r\n\tif(DENSE != null && dense == null) dense = DENSE;\r\n\tvar ws = _ws || (dense ? ([]) : ({}));\r\n\tvar _R = 0, _C = 0;\r\n\tif(ws && o.origin != null) {\r\n\t\tif(typeof o.origin == 'number') _R = o.origin;\r\n\t\telse {\r\n\t\t\tvar _origin = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\r\n\t\t\t_R = _origin.r; _C = _origin.c;\r\n\t\t}\r\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\r\n\t}\r\n\tvar range = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}});\r\n\tif(ws['!ref']) {\r\n\t\tvar _range = safe_decode_range(ws['!ref']);\r\n\t\trange.s.c = _range.s.c;\r\n\t\trange.s.r = _range.s.r;\r\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\r\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\r\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\r\n\t}\r\n\tfor(var R = 0; R != data.length; ++R) {\r\n\t\tif(!data[R]) continue;\r\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\r\n\t\tfor(var C = 0; C != data[R].length; ++C) {\r\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\r\n\t\t\tvar cell = ({v: data[R][C] });\r\n\t\t\tvar __R = _R + R, __C = _C + C;\r\n\t\t\tif(range.s.r > __R) range.s.r = __R;\r\n\t\t\tif(range.s.c > __C) range.s.c = __C;\r\n\t\t\tif(range.e.r < __R) range.e.r = __R;\r\n\t\t\tif(range.e.c < __C) range.e.c = __C;\r\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\r\n\t\t\telse {\r\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\r\n\t\t\t\tif(cell.v === null) {\r\n\t\t\t\t\tif(cell.f) cell.t = 'n';\r\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\r\n\t\t\t\t\telse if(!o.sheetStubs) continue;\r\n\t\t\t\t\telse cell.t = 'z';\r\n\t\t\t\t}\r\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\r\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\r\n\t\t\t\telse if(cell.v instanceof Date) {\r\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\r\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v, o.date1904)); }\r\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v, o.date1904); cell.w = SSF_format(cell.z, cell.v); }\r\n\t\t\t\t}\r\n\t\t\t\telse cell.t = 's';\r\n\t\t\t}\r\n\t\t\tif(dense) {\r\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\r\n\t\t\t\tif(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z;\r\n\t\t\t\tws[__R][__C] = cell;\r\n\t\t\t} else {\r\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}));\r\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\r\n\t\t\t\tws[cell_ref] = cell;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\r\n\treturn ws;\r\n}\r\nfunction aoa_to_sheet(data, opts) { return sheet_add_aoa(null, data, opts); }\r\n\r\nfunction parse_Int32LE(data) {\r\n\treturn data.read_shift(4, 'i');\r\n}\r\nfunction write_UInt32LE(x, o) {\r\n\tif (!o) o = new_buf(4);\r\n\to.write_shift(4, x);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.5.168 */\r\nfunction parse_XLWideString(data) {\r\n\tvar cchCharacters = data.read_shift(4);\r\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\r\n}\r\nfunction write_XLWideString(data, o) {\r\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\r\n\to.write_shift(4, data.length);\r\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\r\n\treturn _null ? o.slice(0, o.l) : o;\r\n}\r\n\r\n/* [MS-XLSB] 2.5.91 */\r\n//function parse_LPWideString(data) {\r\n//\tvar cchCharacters = data.read_shift(2);\r\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\r\n//}\r\n\r\n/* [MS-XLSB] 2.5.143 */\r\nfunction parse_StrRun(data) {\r\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\r\n}\r\nfunction write_StrRun(run, o) {\r\n\tif (!o) o = new_buf(4);\r\n\to.write_shift(2, run.ich || 0);\r\n\to.write_shift(2, run.ifnt || 0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.5.121 */\r\nfunction parse_RichStr(data, length) {\r\n\tvar start = data.l;\r\n\tvar flags = data.read_shift(1);\r\n\tvar str = parse_XLWideString(data);\r\n\tvar rgsStrRun = [];\r\n\tvar z = ({ t: str, h: str });\r\n\tif ((flags & 1) !== 0) { /* fRichStr */\r\n\t\t/* TODO: formatted string */\r\n\t\tvar dwSizeStrRun = data.read_shift(4);\r\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\r\n\t\tz.r = rgsStrRun;\r\n\t}\r\n\telse z.r = [{ ich: 0, ifnt: 0 }];\r\n\t//if((flags & 2) !== 0) { /* fExtStr */\r\n\t//\t/* TODO: phonetic string */\r\n\t//}\r\n\tdata.l = start + length;\r\n\treturn z;\r\n}\r\nfunction write_RichStr(str, o) {\r\n\t/* TODO: formatted string */\r\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\r\n\to.write_shift(1, 0);\r\n\twrite_XLWideString(str.t, o);\r\n\treturn _null ? o.slice(0, o.l) : o;\r\n}\r\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\r\nvar parse_BrtCommentText = parse_RichStr;\r\nfunction write_BrtCommentText(str, o) {\r\n\t/* TODO: formatted string */\r\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\r\n\to.write_shift(1, 1);\r\n\twrite_XLWideString(str.t, o);\r\n\to.write_shift(4, 1);\r\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\r\n\treturn _null ? o.slice(0, o.l) : o;\r\n}\r\n\r\n/* [MS-XLSB] 2.5.9 */\r\nfunction parse_XLSBCell(data) {\r\n\tvar col = data.read_shift(4);\r\n\tvar iStyleRef = data.read_shift(2);\r\n\tiStyleRef += data.read_shift(1) << 16;\r\n\tdata.l++; //var fPhShow = data.read_shift(1);\r\n\treturn { c: col, iStyleRef: iStyleRef };\r\n}\r\nfunction write_XLSBCell(cell, o) {\r\n\tif (o == null) o = new_buf(8);\r\n\to.write_shift(-4, cell.c);\r\n\to.write_shift(3, cell.iStyleRef || cell.s);\r\n\to.write_shift(1, 0); /* fPhShow */\r\n\treturn o;\r\n}\r\n\r\n/* Short XLSB Cell does not include column */\r\nfunction parse_XLSBShortCell(data) {\r\n\tvar iStyleRef = data.read_shift(2);\r\n\tiStyleRef += data.read_shift(1) <<16;\r\n\tdata.l++; //var fPhShow = data.read_shift(1);\r\n\treturn { c:-1, iStyleRef: iStyleRef };\r\n}\r\nfunction write_XLSBShortCell(cell, o) {\r\n\tif(o == null) o = new_buf(4);\r\n\to.write_shift(3, cell.iStyleRef || cell.s);\r\n\to.write_shift(1, 0); /* fPhShow */\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.5.21 */\r\nvar parse_XLSBCodeName = parse_XLWideString;\r\nvar write_XLSBCodeName = write_XLWideString;\r\n\r\n/* [MS-XLSB] 2.5.166 */\r\nfunction parse_XLNullableWideString(data) {\r\n\tvar cchCharacters = data.read_shift(4);\r\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\r\n}\r\nfunction write_XLNullableWideString(data, o) {\r\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\r\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\r\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\r\n\treturn _null ? o.slice(0, o.l) : o;\r\n}\r\n\r\n/* [MS-XLSB] 2.5.165 */\r\nvar parse_XLNameWideString = parse_XLWideString;\r\n//var write_XLNameWideString = write_XLWideString;\r\n\r\n/* [MS-XLSB] 2.5.114 */\r\nvar parse_RelID = parse_XLNullableWideString;\r\nvar write_RelID = write_XLNullableWideString;\r\n\r\n\r\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\r\nfunction parse_RkNumber(data) {\r\n\tvar b = data.slice(data.l, data.l + 4);\r\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\r\n\tdata.l += 4;\r\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\r\n\treturn fX100 ? (RK / 100) : RK;\r\n}\r\nfunction write_RkNumber(data, o) {\r\n\tif (o == null) o = new_buf(4);\r\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\r\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\r\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\r\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\r\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\r\n}\r\n\r\n\r\n/* [MS-XLSB] 2.5.117 RfX */\r\nfunction parse_RfX(data ) {\r\n\tvar cell = ({ s: {}, e: {} });\r\n\tcell.s.r = data.read_shift(4);\r\n\tcell.e.r = data.read_shift(4);\r\n\tcell.s.c = data.read_shift(4);\r\n\tcell.e.c = data.read_shift(4);\r\n\treturn cell;\r\n}\r\nfunction write_RfX(r, o) {\r\n\tif (!o) o = new_buf(16);\r\n\to.write_shift(4, r.s.r);\r\n\to.write_shift(4, r.e.r);\r\n\to.write_shift(4, r.s.c);\r\n\to.write_shift(4, r.e.c);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\r\nvar parse_UncheckedRfX = parse_RfX;\r\nvar write_UncheckedRfX = write_RfX;\r\n\r\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\r\n//function parse_UncheckedSqRfX(data) {\r\n//\tvar cnt = data.read_shift(4);\r\n//\tvar out = [];\r\n//\tfor(var i = 0; i < cnt; ++i) {\r\n//\t\tvar rng = parse_UncheckedRfX(data);\r\n//\t\tout.push(encode_range(rng));\r\n//\t}\r\n//\treturn out.join(\",\");\r\n//}\r\n//function write_UncheckedSqRfX(sqrfx) {\r\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\r\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\r\n//\tvar out = [o];\r\n//\tparts.forEach(function(rng) {\r\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\r\n//\t});\r\n//\treturn bconcat(out);\r\n//}\r\n\r\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\r\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\r\nfunction parse_Xnum(data) {\r\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\r\n\treturn data.read_shift(8, 'f');\r\n}\r\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\r\n\r\n/* [MS-XLSB] 2.4.324 BrtColor */\r\nfunction parse_BrtColor(data) {\r\n\tvar out = {};\r\n\tvar d = data.read_shift(1);\r\n\r\n\t//var fValidRGB = d & 1;\r\n\tvar xColorType = d >>> 1;\r\n\r\n\tvar index = data.read_shift(1);\r\n\tvar nTS = data.read_shift(2, 'i');\r\n\tvar bR = data.read_shift(1);\r\n\tvar bG = data.read_shift(1);\r\n\tvar bB = data.read_shift(1);\r\n\tdata.l++; //var bAlpha = data.read_shift(1);\r\n\r\n\tswitch (xColorType) {\r\n\t\tcase 0: out.auto = 1; break;\r\n\t\tcase 1:\r\n\t\t\tout.index = index;\r\n\t\t\tvar icv = XLSIcv[index];\r\n\t\t\t/* automatic pseudo index 81 */\r\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\r\n\t\t\tbreak;\r\n\t\tcase 2:\r\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\r\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\r\n\t\t\tbreak;\r\n\t\tcase 3: out.theme = index; break;\r\n\t}\r\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\r\n\r\n\treturn out;\r\n}\r\nfunction write_BrtColor(color, o) {\r\n\tif (!o) o = new_buf(8);\r\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\r\n\tif (color.index != null) {\r\n\t\to.write_shift(1, 0x02);\r\n\t\to.write_shift(1, color.index);\r\n\t} else if (color.theme != null) {\r\n\t\to.write_shift(1, 0x06);\r\n\t\to.write_shift(1, color.theme);\r\n\t} else {\r\n\t\to.write_shift(1, 0x05);\r\n\t\to.write_shift(1, 0);\r\n\t}\r\n\tvar nTS = color.tint || 0;\r\n\tif (nTS > 0) nTS *= 32767;\r\n\telse if (nTS < 0) nTS *= 32768;\r\n\to.write_shift(2, nTS);\r\n\tif (!color.rgb || color.theme != null) {\r\n\t\to.write_shift(2, 0);\r\n\t\to.write_shift(1, 0);\r\n\t\to.write_shift(1, 0);\r\n\t} else {\r\n\t\tvar rgb = (color.rgb || 'FFFFFF');\r\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\r\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\r\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\r\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\r\n\t\to.write_shift(1, 0xFF);\r\n\t}\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.5.52 */\r\nfunction parse_FontFlags(data) {\r\n\tvar d = data.read_shift(1);\r\n\tdata.l++;\r\n\tvar out = {\r\n\t\tfBold: d & 0x01,\r\n\t\tfItalic: d & 0x02,\r\n\t\tfUnderline: d & 0x04,\r\n\t\tfStrikeout: d & 0x08,\r\n\t\tfOutline: d & 0x10,\r\n\t\tfShadow: d & 0x20,\r\n\t\tfCondense: d & 0x40,\r\n\t\tfExtend: d & 0x80\r\n\t};\r\n\treturn out;\r\n}\r\nfunction write_FontFlags(font, o) {\r\n\tif (!o) o = new_buf(2);\r\n\tvar grbit =\r\n\t\t(font.italic ? 0x02 : 0) |\r\n\t\t(font.strike ? 0x08 : 0) |\r\n\t\t(font.outline ? 0x10 : 0) |\r\n\t\t(font.shadow ? 0x20 : 0) |\r\n\t\t(font.condense ? 0x40 : 0) |\r\n\t\t(font.extend ? 0x80 : 0);\r\n\to.write_shift(1, grbit);\r\n\to.write_shift(1, 0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\r\nfunction parse_ClipboardFormatOrString(o, w) {\r\n\t// $FlowIgnore\r\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\r\n\tvar m = o.read_shift(4);\r\n\tswitch (m) {\r\n\t\tcase 0x00000000: return \"\";\r\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\r\n\t}\r\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\r\n\to.l -= 4;\r\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\r\n}\r\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\r\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\r\n\r\n/* [MS-OLEPS] 2.2 PropertyType */\r\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\r\n//var VT_EMPTY = 0x0000;\r\n//var VT_NULL = 0x0001;\r\nvar VT_I2 = 0x0002;\r\nvar VT_I4 = 0x0003;\r\n//var VT_R4 = 0x0004;\r\n//var VT_R8 = 0x0005;\r\n//var VT_CY = 0x0006;\r\n//var VT_DATE = 0x0007;\r\n//var VT_BSTR = 0x0008;\r\n//var VT_ERROR = 0x000A;\r\nvar VT_BOOL = 0x000B;\r\nvar VT_VARIANT = 0x000C;\r\n//var VT_DECIMAL = 0x000E;\r\n//var VT_I1 = 0x0010;\r\n//var VT_UI1 = 0x0011;\r\n//var VT_UI2 = 0x0012;\r\nvar VT_UI4 = 0x0013;\r\n//var VT_I8 = 0x0014;\r\n//var VT_UI8 = 0x0015;\r\n//var VT_INT = 0x0016;\r\n//var VT_UINT = 0x0017;\r\n//var VT_LPSTR = 0x001E;\r\n//var VT_LPWSTR = 0x001F;\r\nvar VT_FILETIME = 0x0040;\r\nvar VT_BLOB = 0x0041;\r\n//var VT_STREAM = 0x0042;\r\n//var VT_STORAGE = 0x0043;\r\n//var VT_STREAMED_Object = 0x0044;\r\n//var VT_STORED_Object = 0x0045;\r\n//var VT_BLOB_Object = 0x0046;\r\nvar VT_CF = 0x0047;\r\n//var VT_CLSID = 0x0048;\r\n//var VT_VERSIONED_STREAM = 0x0049;\r\n//var VT_VECTOR = 0x1000;\r\nvar VT_VECTOR_VARIANT = 0x100C;\r\nvar VT_VECTOR_LPSTR = 0x101E;\r\n//var VT_ARRAY = 0x2000;\r\n\r\nvar VT_STRING = 0x0050; // 2.3.3.1.11 VtString\r\nvar VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString\r\nvar VT_CUSTOM = [VT_STRING, VT_USTR];\r\n\r\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\r\nvar DocSummaryPIDDSI = {\r\n0x01: { n: 'CodePage', t: VT_I2 },\r\n0x02: { n: 'Category', t: VT_STRING },\r\n0x03: { n: 'PresentationFormat', t: VT_STRING },\r\n0x04: { n: 'ByteCount', t: VT_I4 },\r\n0x05: { n: 'LineCount', t: VT_I4 },\r\n0x06: { n: 'ParagraphCount', t: VT_I4 },\r\n0x07: { n: 'SlideCount', t: VT_I4 },\r\n0x08: { n: 'NoteCount', t: VT_I4 },\r\n0x09: { n: 'HiddenCount', t: VT_I4 },\r\n0x0a: { n: 'MultimediaClipCount', t: VT_I4 },\r\n0x0b: { n: 'ScaleCrop', t: VT_BOOL },\r\n0x0c: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\r\n0x0d: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\r\n0x0e: { n: 'Manager', t: VT_STRING },\r\n0x0f: { n: 'Company', t: VT_STRING },\r\n0x10: { n: 'LinksUpToDate', t: VT_BOOL },\r\n0x11: { n: 'CharacterCount', t: VT_I4 },\r\n0x13: { n: 'SharedDoc', t: VT_BOOL },\r\n0x16: { n: 'HyperlinksChanged', t: VT_BOOL },\r\n0x17: { n: 'AppVersion', t: VT_I4, p: 'version' },\r\n0x18: { n: 'DigSig', t: VT_BLOB },\r\n0x1A: { n: 'ContentType', t: VT_STRING },\r\n0x1B: { n: 'ContentStatus', t: VT_STRING },\r\n0x1C: { n: 'Language', t: VT_STRING },\r\n0x1D: { n: 'Version', t: VT_STRING },\r\n0xFF: {},\r\n\t/* [MS-OLEPS] 2.18 */\r\n0x80000000: { n: 'Locale', t: VT_UI4 },\r\n0x80000003: { n: 'Behavior', t: VT_UI4 },\r\n0x72627262: {}\r\n};\r\n\r\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\r\nvar SummaryPIDSI = {\r\n0x01: { n: 'CodePage', t: VT_I2 },\r\n0x02: { n: 'Title', t: VT_STRING },\r\n0x03: { n: 'Subject', t: VT_STRING },\r\n0x04: { n: 'Author', t: VT_STRING },\r\n0x05: { n: 'Keywords', t: VT_STRING },\r\n0x06: { n: 'Comments', t: VT_STRING },\r\n0x07: { n: 'Template', t: VT_STRING },\r\n0x08: { n: 'LastAuthor', t: VT_STRING },\r\n0x09: { n: 'RevNumber', t: VT_STRING },\r\n0x0A: { n: 'EditTime', t: VT_FILETIME },\r\n0x0B: { n: 'LastPrinted', t: VT_FILETIME },\r\n0x0C: { n: 'CreatedDate', t: VT_FILETIME },\r\n0x0D: { n: 'ModifiedDate', t: VT_FILETIME },\r\n0x0E: { n: 'PageCount', t: VT_I4 },\r\n0x0F: { n: 'WordCount', t: VT_I4 },\r\n0x10: { n: 'CharCount', t: VT_I4 },\r\n0x11: { n: 'Thumbnail', t: VT_CF },\r\n0x12: { n: 'Application', t: VT_STRING },\r\n0x13: { n: 'DocSecurity', t: VT_I4 },\r\n0xFF: {},\r\n\t/* [MS-OLEPS] 2.18 */\r\n0x80000000: { n: 'Locale', t: VT_UI4 },\r\n0x80000003: { n: 'Behavior', t: VT_UI4 },\r\n0x72627262: {}\r\n};\r\n\r\n/* [MS-XLS] 2.4.63 Country/Region codes */\r\nvar CountryEnum = {\r\n0x0001: \"US\", // United States\r\n0x0002: \"CA\", // Canada\r\n0x0003: \"\", // Latin America (except Brazil)\r\n0x0007: \"RU\", // Russia\r\n0x0014: \"EG\", // Egypt\r\n0x001E: \"GR\", // Greece\r\n0x001F: \"NL\", // Netherlands\r\n0x0020: \"BE\", // Belgium\r\n0x0021: \"FR\", // France\r\n0x0022: \"ES\", // Spain\r\n0x0024: \"HU\", // Hungary\r\n0x0027: \"IT\", // Italy\r\n0x0029: \"CH\", // Switzerland\r\n0x002B: \"AT\", // Austria\r\n0x002C: \"GB\", // United Kingdom\r\n0x002D: \"DK\", // Denmark\r\n0x002E: \"SE\", // Sweden\r\n0x002F: \"NO\", // Norway\r\n0x0030: \"PL\", // Poland\r\n0x0031: \"DE\", // Germany\r\n0x0034: \"MX\", // Mexico\r\n0x0037: \"BR\", // Brazil\r\n0x003d: \"AU\", // Australia\r\n0x0040: \"NZ\", // New Zealand\r\n0x0042: \"TH\", // Thailand\r\n0x0051: \"JP\", // Japan\r\n0x0052: \"KR\", // Korea\r\n0x0054: \"VN\", // Viet Nam\r\n0x0056: \"CN\", // China\r\n0x005A: \"TR\", // Turkey\r\n0x0069: \"JS\", // Ramastan\r\n0x00D5: \"DZ\", // Algeria\r\n0x00D8: \"MA\", // Morocco\r\n0x00DA: \"LY\", // Libya\r\n0x015F: \"PT\", // Portugal\r\n0x0162: \"IS\", // Iceland\r\n0x0166: \"FI\", // Finland\r\n0x01A4: \"CZ\", // Czech Republic\r\n0x0376: \"TW\", // Taiwan\r\n0x03C1: \"LB\", // Lebanon\r\n0x03C2: \"JO\", // Jordan\r\n0x03C3: \"SY\", // Syria\r\n0x03C4: \"IQ\", // Iraq\r\n0x03C5: \"KW\", // Kuwait\r\n0x03C6: \"SA\", // Saudi Arabia\r\n0x03CB: \"AE\", // United Arab Emirates\r\n0x03CC: \"IL\", // Israel\r\n0x03CE: \"QA\", // Qatar\r\n0x03D5: \"IR\", // Iran\r\n0xFFFF: \"US\" // United States\r\n};\r\n\r\n/* [MS-XLS] 2.5.127 */\r\nvar XLSFillPattern = [\r\n\tnull,\r\n\t'solid',\r\n\t'mediumGray',\r\n\t'darkGray',\r\n\t'lightGray',\r\n\t'darkHorizontal',\r\n\t'darkVertical',\r\n\t'darkDown',\r\n\t'darkUp',\r\n\t'darkGrid',\r\n\t'darkTrellis',\r\n\t'lightHorizontal',\r\n\t'lightVertical',\r\n\t'lightDown',\r\n\t'lightUp',\r\n\t'lightGrid',\r\n\t'lightTrellis',\r\n\t'gray125',\r\n\t'gray0625'\r\n];\r\n\r\nfunction rgbify(arr) { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\r\n\r\n/* [MS-XLS] 2.5.161 */\r\n/* [MS-XLSB] 2.5.75 Icv */\r\nvar _XLSIcv = rgbify([\r\n\t/* Color Constants */\r\n\t0x000000,\r\n\t0xFFFFFF,\r\n\t0xFF0000,\r\n\t0x00FF00,\r\n\t0x0000FF,\r\n\t0xFFFF00,\r\n\t0xFF00FF,\r\n\t0x00FFFF,\r\n\r\n\t/* Overridable Defaults */\r\n\t0x000000,\r\n\t0xFFFFFF,\r\n\t0xFF0000,\r\n\t0x00FF00,\r\n\t0x0000FF,\r\n\t0xFFFF00,\r\n\t0xFF00FF,\r\n\t0x00FFFF,\r\n\r\n\t0x800000,\r\n\t0x008000,\r\n\t0x000080,\r\n\t0x808000,\r\n\t0x800080,\r\n\t0x008080,\r\n\t0xC0C0C0,\r\n\t0x808080,\r\n\t0x9999FF,\r\n\t0x993366,\r\n\t0xFFFFCC,\r\n\t0xCCFFFF,\r\n\t0x660066,\r\n\t0xFF8080,\r\n\t0x0066CC,\r\n\t0xCCCCFF,\r\n\r\n\t0x000080,\r\n\t0xFF00FF,\r\n\t0xFFFF00,\r\n\t0x00FFFF,\r\n\t0x800080,\r\n\t0x800000,\r\n\t0x008080,\r\n\t0x0000FF,\r\n\t0x00CCFF,\r\n\t0xCCFFFF,\r\n\t0xCCFFCC,\r\n\t0xFFFF99,\r\n\t0x99CCFF,\r\n\t0xFF99CC,\r\n\t0xCC99FF,\r\n\t0xFFCC99,\r\n\r\n\t0x3366FF,\r\n\t0x33CCCC,\r\n\t0x99CC00,\r\n\t0xFFCC00,\r\n\t0xFF9900,\r\n\t0xFF6600,\r\n\t0x666699,\r\n\t0x969696,\r\n\t0x003366,\r\n\t0x339966,\r\n\t0x003300,\r\n\t0x333300,\r\n\t0x993300,\r\n\t0x993366,\r\n\t0x333399,\r\n\t0x333333,\r\n\r\n\t/* Other entries to appease BIFF8/12 */\r\n\t0x000000, /* 0x40 icvForeground ?? */\r\n\t0xFFFFFF, /* 0x41 icvBackground ?? */\r\n\t0x000000, /* 0x42 icvFrame ?? */\r\n\t0x000000, /* 0x43 icv3D ?? */\r\n\t0x000000, /* 0x44 icv3DText ?? */\r\n\t0x000000, /* 0x45 icv3DHilite ?? */\r\n\t0x000000, /* 0x46 icv3DShadow ?? */\r\n\t0x000000, /* 0x47 icvHilite ?? */\r\n\t0x000000, /* 0x48 icvCtlText ?? */\r\n\t0x000000, /* 0x49 icvCtlScrl ?? */\r\n\t0x000000, /* 0x4A icvCtlInv ?? */\r\n\t0x000000, /* 0x4B icvCtlBody ?? */\r\n\t0x000000, /* 0x4C icvCtlFrame ?? */\r\n\t0x000000, /* 0x4D icvCtlFore ?? */\r\n\t0x000000, /* 0x4E icvCtlBack ?? */\r\n\t0x000000, /* 0x4F icvCtlNeutral */\r\n\t0x000000, /* 0x50 icvInfoBk ?? */\r\n\t0x000000 /* 0x51 icvInfoText ?? */\r\n]);\r\nvar XLSIcv = dup(_XLSIcv);\r\n\r\n/* [MS-XLSB] 2.5.97.2 */\r\nvar BErr = {\r\n0x00: \"#NULL!\",\r\n0x07: \"#DIV/0!\",\r\n0x0F: \"#VALUE!\",\r\n0x17: \"#REF!\",\r\n0x1D: \"#NAME?\",\r\n0x24: \"#NUM!\",\r\n0x2A: \"#N/A\",\r\n0x2B: \"#GETTING_DATA\",\r\n0xFF: \"#WTF?\"\r\n};\r\n//var RBErr = evert_num(BErr);\r\nvar RBErr = {\r\n\t\"#NULL!\": 0x00,\r\n\t\"#DIV/0!\": 0x07,\r\n\t\"#VALUE!\": 0x0F,\r\n\t\"#REF!\": 0x17,\r\n\t\"#NAME?\": 0x1D,\r\n\t\"#NUM!\": 0x24,\r\n\t\"#N/A\": 0x2A,\r\n\t\"#GETTING_DATA\": 0x2B,\r\n\t\"#WTF?\": 0xFF\r\n};\r\n\r\nvar XLSLblBuiltIn = [\r\n\t\"_xlnm.Consolidate_Area\",\r\n\t\"_xlnm.Auto_Open\",\r\n\t\"_xlnm.Auto_Close\",\r\n\t\"_xlnm.Extract\",\r\n\t\"_xlnm.Database\",\r\n\t\"_xlnm.Criteria\",\r\n\t\"_xlnm.Print_Area\",\r\n\t\"_xlnm.Print_Titles\",\r\n\t\"_xlnm.Recorder\",\r\n\t\"_xlnm.Data_Form\",\r\n\t\"_xlnm.Auto_Activate\",\r\n\t\"_xlnm.Auto_Deactivate\",\r\n\t\"_xlnm.Sheet_Title\",\r\n\t\"_xlnm._FilterDatabase\"\r\n];\r\n\r\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\r\n/* 12.3 Part Summary */\r\n/* 14.2 Part Summary */\r\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\r\nvar ct2type/*{[string]:string}*/ = ({\r\n\t/* Workbook */\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\r\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\r\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\r\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\r\n\r\n\t/* Worksheet */\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\r\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\r\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\r\n\r\n\t/* Chartsheet */\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\r\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\r\n\r\n\t/* Macrosheet */\r\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\r\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\r\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\r\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\r\n\r\n\t/* Dialogsheet */\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\r\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\r\n\r\n\t/* Shared Strings */\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\r\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\r\n\r\n\t/* Styles */\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\r\n\t\"application/vnd.ms-excel.styles\": \"styles\",\r\n\r\n\t/* File Properties */\r\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\r\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\r\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\r\n\r\n\t/* Custom Data Properties */\r\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\r\n\r\n\t/* Comments */\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\r\n\t\"application/vnd.ms-excel.comments\": \"comments\",\r\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\r\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\r\n\r\n\t/* Metadata (Stock/Geography and Dynamic Array) */\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\r\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\r\n\r\n\t/* PivotTable */\r\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\r\n\r\n\t/* Chart Objects */\r\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\r\n\r\n\t/* Chart Colors */\r\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\r\n\r\n\t/* Chart Style */\r\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\r\n\r\n\t/* Chart Advanced */\r\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\r\n\r\n\t/* Calculation Chain */\r\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\r\n\r\n\t/* Printer Settings */\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\r\n\r\n\t/* ActiveX */\r\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\r\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\r\n\r\n\t/* Custom Toolbars */\r\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\r\n\r\n\t/* External Data Connections */\r\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\r\n\r\n\t/* External Links */\r\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\r\n\r\n\t/* PivotCache */\r\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\r\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\r\n\r\n\t/* Query Table */\r\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\r\n\r\n\t/* Shared Workbook */\r\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\r\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\r\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\r\n\r\n\t/* Single Cell Table */\r\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\r\n\r\n\t/* Slicer */\r\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\r\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\r\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\r\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\r\n\r\n\t/* Sort Map */\r\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\r\n\r\n\t/* Table */\r\n\t\"application/vnd.ms-excel.table\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\r\n\r\n\t/* Themes */\r\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\r\n\r\n\t/* Theme Override */\r\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\r\n\r\n\t/* Timeline */\r\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\r\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\r\n\r\n\t/* VBA */\r\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\r\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\r\n\r\n\t/* Volatile Dependencies */\r\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\r\n\r\n\t/* Control Properties */\r\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\r\n\r\n\t/* Data Model */\r\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\r\n\r\n\t/* Survey */\r\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\r\n\r\n\t/* Drawing */\r\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\r\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\r\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\r\n\r\n\t/* VML */\r\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\r\n\r\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\r\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\r\n\r\n\t/* Image */\r\n\t\"image/png\": \"TODO\",\r\n\r\n\t\"sheet\": \"js\"\r\n});\r\n\r\nvar CT_LIST = {\r\n\tworkbooks: {\r\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\r\n\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\r\n\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\r\n\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\r\n\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\r\n\t},\r\n\tstrs: { /* Shared Strings */\r\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\r\n\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\r\n\t},\r\n\tcomments: { /* Comments */\r\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\r\n\t\txlsb: \"application/vnd.ms-excel.comments\"\r\n\t},\r\n\tsheets: { /* Worksheet */\r\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\r\n\t\txlsb: \"application/vnd.ms-excel.worksheet\"\r\n\t},\r\n\tcharts: { /* Chartsheet */\r\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\r\n\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\r\n\t},\r\n\tdialogs: { /* Dialogsheet */\r\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\r\n\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\r\n\t},\r\n\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\r\n\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\r\n\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\r\n\t},\r\n\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\r\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\r\n\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\r\n\t},\r\n\tstyles: { /* Styles */\r\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\r\n\t\txlsb: \"application/vnd.ms-excel.styles\"\r\n\t}\r\n};\r\n\r\nfunction new_ct() {\r\n\treturn ({\r\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\r\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\r\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\r\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\r\n\t\tTODO:[], xmlns: \"\" });\r\n}\r\n\r\nfunction parse_ct(data) {\r\n\tvar ct = new_ct();\r\n\tif(!data || !data.match) return ct;\r\n\tvar ctext = {};\r\n\t(data.match(tagregex)||[]).forEach(function(x) {\r\n\t\tvar y = parsexmltag(x);\r\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\r\n\t\t\tcase ' 0 ? ct.calcchains[0] : \"\";\r\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\r\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\r\n\tct.defaults = ctext;\r\n\tdelete ct.calcchains;\r\n\treturn ct;\r\n}\r\n\r\nfunction write_ct(ct, opts, raw) {\r\n\tvar type2ct/*{[string]:Array}*/ = evert_arr(ct2type);\r\n\r\n\tvar o = [], v;\r\n\r\n\tif(!raw) {\r\n\t\to[o.length] = (XML_HEADER);\r\n\t\to[o.length] = writextag('Types', null, {\r\n\t\t\t'xmlns': XMLNS.CT,\r\n\t\t\t'xmlns:xsd': XMLNS.xsd,\r\n\t\t\t'xmlns:xsi': XMLNS.xsi\r\n\t\t});\r\n\t\to = o.concat([\r\n\t\t\t['xml', 'application/xml'],\r\n\t\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\r\n\t\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\r\n\t\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\r\n\t\t\t/* from test files */\r\n\t\t\t['bmp', 'image/bmp'],\r\n\t\t\t['png', 'image/png'],\r\n\t\t\t['gif', 'image/gif'],\r\n\t\t\t['emf', 'image/x-emf'],\r\n\t\t\t['wmf', 'image/x-wmf'],\r\n\t\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\r\n\t\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\r\n\t\t\t['pdf', 'application/pdf'],\r\n\t\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\r\n\t\t].map(function(x) {\r\n\t\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\r\n\t\t}));\r\n\t}\r\n\r\n\t/* only write first instance */\r\n\tvar f1 = function(w) {\r\n\t\tif(ct[w] && ct[w].length > 0) {\r\n\t\t\tv = ct[w][0];\r\n\t\t\to[o.length] = (writextag('Override', null, {\r\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\r\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\r\n\t\t\t}));\r\n\t\t}\r\n\t};\r\n\r\n\t/* book type-specific */\r\n\tvar f2 = function(w) {\r\n\t\t(ct[w]||[]).forEach(function(v) {\r\n\t\t\to[o.length] = (writextag('Override', null, {\r\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\r\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\r\n\t\t\t}));\r\n\t\t});\r\n\t};\r\n\r\n\t/* standard type */\r\n\tvar f3 = function(t) {\r\n\t\t(ct[t]||[]).forEach(function(v) {\r\n\t\t\to[o.length] = (writextag('Override', null, {\r\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\r\n\t\t\t\t'ContentType': type2ct[t][0]\r\n\t\t\t}));\r\n\t\t});\r\n\t};\r\n\r\n\tf1('workbooks');\r\n\tf2('sheets');\r\n\tf2('charts');\r\n\tf3('themes');\r\n\t['strs', 'styles'].forEach(f1);\r\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\r\n\to[o.length] = '';\r\n\tf3('vba');\r\n\tf3('comments');\r\n\tf3('threadedcomments');\r\n\tf3('drawings');\r\n\tf2('metadata');\r\n\tf3('people');\r\n\tif(!raw && o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\r\n\treturn o.join(\"\");\r\n}\r\n/* 9.3 Relationships */\r\nvar RELS = ({\r\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\r\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\r\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\r\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\r\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\r\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\r\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\r\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\r\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\r\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\r\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\r\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\r\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\r\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\r\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\r\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\r\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\r\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\r\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\r\n\tWS: [\r\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\r\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\r\n\t],\r\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\r\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\r\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\r\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\r\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\r\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\r\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\r\n\tCONN: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/connections\",\r\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\r\n});\r\n\r\n/* 9.3.3 Representing Relationships */\r\nfunction get_rels_path(file) {\r\n\tvar n = file.lastIndexOf(\"/\");\r\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\r\n}\r\n\r\nfunction parse_rels(data, currentFilePath) {\r\n\tvar rels = {\"!id\":{}};\r\n\tif (!data) return rels;\r\n\tif (currentFilePath.charAt(0) !== '/') {\r\n\t\tcurrentFilePath = '/'+currentFilePath;\r\n\t}\r\n\tvar hash = {};\r\n\r\n\t(data.match(tagregex)||[]).forEach(function(x) {\r\n\t\tvar y = parsexmltag(x);\r\n\t\t/* 9.3.2.2 OPC_Relationships */\r\n\t\tif (y[0] === '0' + fromRow + '0';\r\n\t\t\ttwoCell += '' + toCol + '0' + toRow + '0';\r\n\t\t\ttwoCell += '';\r\n\t\t\ttwoCell += '';\r\n\t\t\ttwoCell += '';\r\n\t\t\ttwoCell += '';\r\n\t\t\to[o.length] = (writextag('xdr:twoCellAnchor', twoCell, images[i].attrs));\r\n\t\t}\r\n\t}\r\n\r\n\tif (o.length > 2) {\r\n\t\to[o.length] = ('');\r\n\t\to[1] = o[1].replace(\"/>\", \">\");\r\n\t}\r\n\treturn o.join(\"\");\r\n}\r\n/* TODO */\r\nfunction write_rels(rels) {\r\n\tvar o = [XML_HEADER, writextag('Relationships', null, {\r\n\t\t//'xmlns:ns0': XMLNS.RELS,\r\n\t\t'xmlns': XMLNS.RELS\r\n\t})];\r\n\tkeys(rels['!id']).forEach(function(rid) {\r\n\t\to[o.length] = (writextag('Relationship', null, rels['!id'][rid]));\r\n\t});\r\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\r\n\treturn o.join(\"\");\r\n}\r\n\r\nfunction add_rels(rels, rId, f, type, relobj, targetmode) {\r\n\tif(!relobj) relobj = {};\r\n\tif(!rels['!id']) rels['!id'] = {};\r\n\tif(!rels['!idx']) rels['!idx'] = 1;\r\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\r\n\trels['!idx'] = rId + 1;\r\n\trelobj.Id = 'rId' + rId;\r\n\trelobj.Type = type;\r\n\trelobj.Target = f;\r\n\tif(targetmode) relobj.TargetMode = targetmode;\r\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\r\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\r\n\trels['!id'][relobj.Id] = relobj;\r\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\r\n\treturn rId;\r\n}\r\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\r\n/* Part 3 Section 4 Manifest File */\r\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\r\nfunction parse_manifest(d, opts) {\r\n\tvar str = xlml_normalize(d);\r\n\tvar Rn;\r\n\tvar FEtag;\r\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\r\n\t\tcase 'manifest': break; // 4.2 \r\n\t\tcase 'file-entry': // 4.3 \r\n\t\t\tFEtag = parsexmltag(Rn[0], false);\r\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\r\n\t\t\tbreak;\r\n\t\tcase 'encryption-data': // 4.4 \r\n\t\tcase 'algorithm': // 4.5 \r\n\t\tcase 'start-key-generation': // 4.6 \r\n\t\tcase 'key-derivation': // 4.7 \r\n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\r\n\t\tdefault: if(opts && opts.WTF) throw Rn;\r\n\t}\r\n}\r\n\r\nfunction write_manifest(manifest) {\r\n\tvar o = [XML_HEADER];\r\n\to.push('\\n');\r\n\to.push(' \\n');\r\n\tfor(var i = 0; i < manifest.length; ++i) o.push(' \\n');\r\n\to.push('');\r\n\treturn o.join(\"\");\r\n}\r\n\r\n/* Part 3 Section 6 Metadata Manifest File */\r\nfunction write_rdf_type(file, res, tag) {\r\n\treturn [\r\n\t\t' \\n',\r\n\t\t' \\n',\r\n\t\t' \\n'\r\n\t].join(\"\");\r\n}\r\nfunction write_rdf_has(base, file) {\r\n\treturn [\r\n\t\t' \\n',\r\n\t\t' \\n',\r\n\t\t' \\n'\r\n\t].join(\"\");\r\n}\r\nfunction write_rdf(rdf) {\r\n\tvar o = [XML_HEADER];\r\n\to.push('\\n');\r\n\tfor(var i = 0; i != rdf.length; ++i) {\r\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\r\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\r\n\t}\r\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\r\n\to.push('');\r\n\treturn o.join(\"\");\r\n}\r\n/* TODO: pull properties */\r\nfunction write_meta_ods() {\r\n\treturn 'Sheet' + 'JS ' + XLSX.version + '';\r\n}\r\n\r\n/* ECMA-376 Part II 11.1 Core Properties Part */\r\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\r\nvar CORE_PROPS = [\r\n\t[\"cp:category\", \"Category\"],\r\n\t[\"cp:contentStatus\", \"ContentStatus\"],\r\n\t[\"cp:keywords\", \"Keywords\"],\r\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\r\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\r\n\t[\"cp:revision\", \"RevNumber\"],\r\n\t[\"cp:version\", \"Version\"],\r\n\t[\"dc:creator\", \"Author\"],\r\n\t[\"dc:description\", \"Comments\"],\r\n\t[\"dc:identifier\", \"Identifier\"],\r\n\t[\"dc:language\", \"Language\"],\r\n\t[\"dc:subject\", \"Subject\"],\r\n\t[\"dc:title\", \"Title\"],\r\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\r\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\r\n];\r\n\r\nvar CORE_PROPS_REGEX = (function() {\r\n\tvar r = new Array(CORE_PROPS.length);\r\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\r\n\t\tvar f = CORE_PROPS[i];\r\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\r\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\r\n\t}\r\n\treturn r;\r\n})();\r\n\r\nfunction parse_core_props(data) {\r\n\tvar p = {};\r\n\tdata = utf8read(data);\r\n\r\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\r\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\r\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\r\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\r\n\t}\r\n\r\n\treturn p;\r\n}\r\n\r\nfunction cp_doit(f, g, h, o, p) {\r\n\tif(p[f] != null || g == null || g === \"\") return;\r\n\tp[f] = g;\r\n\tg = escapexml(g);\r\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\r\n}\r\n\r\nfunction write_core_props(cp, _opts) {\r\n\tvar opts = _opts || {};\r\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\r\n\t\t//'xmlns': XMLNS.CORE_PROPS,\r\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\r\n\t\t'xmlns:dc': XMLNS.dc,\r\n\t\t'xmlns:dcterms': XMLNS.dcterms,\r\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\r\n\t\t'xmlns:xsi': XMLNS.xsi\r\n\t})], p = {};\r\n\tif(!cp && !opts.Props) return o.join(\"\");\r\n\r\n\tif(cp) {\r\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\r\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\r\n\t}\r\n\r\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\r\n\t\tvar f = CORE_PROPS[i];\r\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\r\n\t\tif(v === true) v = \"1\";\r\n\t\telse if(v === false) v = \"0\";\r\n\t\telse if(typeof v == \"number\") v = String(v);\r\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\r\n\t}\r\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\r\n\treturn o.join(\"\");\r\n}\r\n/* 15.2.12.3 Extended File Properties Part */\r\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\r\nvar EXT_PROPS = [\r\n\t[\"Application\", \"Application\", \"string\"],\r\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\r\n\t[\"Company\", \"Company\", \"string\"],\r\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\r\n\t[\"Manager\", \"Manager\", \"string\"],\r\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\r\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\r\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\r\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\r\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\r\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\r\n];\r\n\r\nvar PseudoPropsPairs = [\r\n\t\"Worksheets\", \"SheetNames\",\r\n\t\"NamedRanges\", \"DefinedNames\",\r\n\t\"Chartsheets\", \"ChartNames\"\r\n];\r\nfunction load_props_pairs(HP, TOP, props, opts) {\r\n\tvar v = [];\r\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\r\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\r\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\r\n\tvar idx = 0, len = 0;\r\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\r\n\t\tlen = +(v[i+1].v);\r\n\t\tswitch(v[i].v) {\r\n\t\t\tcase \"Worksheets\":\r\n\t\t\tcase \"工作表\":\r\n\t\t\tcase \"Листы\":\r\n\t\t\tcase \"أوراق العمل\":\r\n\t\t\tcase \"ワークシート\":\r\n\t\t\tcase \"גליונות עבודה\":\r\n\t\t\tcase \"Arbeitsblätter\":\r\n\t\t\tcase \"Çalışma Sayfaları\":\r\n\t\t\tcase \"Feuilles de calcul\":\r\n\t\t\tcase \"Fogli di lavoro\":\r\n\t\t\tcase \"Folhas de cálculo\":\r\n\t\t\tcase \"Planilhas\":\r\n\t\t\tcase \"Regneark\":\r\n\t\t\tcase \"Hojas de cálculo\":\r\n\t\t\tcase \"Werkbladen\":\r\n\t\t\t\tprops.Worksheets = len;\r\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"Named Ranges\":\r\n\t\t\tcase \"Rangos con nombre\":\r\n\t\t\tcase \"名前付き一覧\":\r\n\t\t\tcase \"Benannte Bereiche\":\r\n\t\t\tcase \"Navngivne områder\":\r\n\t\t\t\tprops.NamedRanges = len;\r\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"Charts\":\r\n\t\t\tcase \"Diagramme\":\r\n\t\t\t\tprops.Chartsheets = len;\r\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tidx += len;\r\n\t}\r\n}\r\n\r\nfunction parse_ext_props(data, p, opts) {\r\n\tvar q = {}; if(!p) p = {};\r\n\tdata = utf8read(data);\r\n\r\n\tEXT_PROPS.forEach(function(f) {\r\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\r\n\t\tswitch(f[2]) {\r\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\r\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\r\n\t\t\tcase \"raw\":\r\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\r\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\r\n\r\n\treturn p;\r\n}\r\n\r\nfunction write_ext_props(cp) {\r\n\tvar o = [], W = writextag;\r\n\tif(!cp) cp = {};\r\n\tcp.Application = \"SheetJS\";\r\n\to[o.length] = (XML_HEADER);\r\n\to[o.length] = (writextag('Properties', null, {\r\n\t\t'xmlns': XMLNS.EXT_PROPS,\r\n\t\t'xmlns:vt': XMLNS.vt\r\n\t}));\r\n\r\n\tEXT_PROPS.forEach(function(f) {\r\n\t\tif(cp[f[1]] === undefined) return;\r\n\t\tvar v;\r\n\t\tswitch(f[2]) {\r\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\r\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\r\n\t\t}\r\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\r\n\t});\r\n\r\n\t/* TODO: HeadingPairs, TitlesOfParts */\r\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\r\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"\" + escapexml(s) + \"\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\r\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\r\n\treturn o.join(\"\");\r\n}\r\n/* 15.2.12.2 Custom File Properties Part */\r\nvar custregex = /<[^>]+>[^<]*/g;\r\nfunction parse_cust_props(data, opts) {\r\n\tvar p = {}, name = \"\";\r\n\tvar m = data.match(custregex);\r\n\tif(m) for(var i = 0; i != m.length; ++i) {\r\n\t\tvar x = m[i], y = parsexmltag(x);\r\n\t\tswitch(y[0]) {\r\n\t\t\tcase '': name = null; break;\r\n\t\t\tdefault: if (x.indexOf('');\r\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\r\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\r\n\t\t\t\tswitch(type) {\r\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\r\n\t\t\t\t\t\tp[name] = unescapexml(text);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'bool':\r\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\r\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\r\n\t\t\t\t\t\tp[name] = parseFloat(text);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'filetime': case 'date':\r\n\t\t\t\t\t\tp[name] = parseDate(text);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'cy': case 'error':\r\n\t\t\t\t\t\tp[name] = unescapexml(text);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\r\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\r\n\t\t\t\t}\r\n\t\t\t} else if(x.slice(0,2) === \"2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\r\n\treturn o.join(\"\");\r\n}\r\n/* Common Name -> XLML Name */\r\nvar XLMLDocPropsMap = {\r\n\tTitle: 'Title',\r\n\tSubject: 'Subject',\r\n\tAuthor: 'Author',\r\n\tKeywords: 'Keywords',\r\n\tComments: 'Description',\r\n\tLastAuthor: 'LastAuthor',\r\n\tRevNumber: 'Revision',\r\n\tApplication: 'AppName',\r\n\t/* TotalTime: 'TotalTime', */\r\n\tLastPrinted: 'LastPrinted',\r\n\tCreatedDate: 'Created',\r\n\tModifiedDate: 'LastSaved',\r\n\t/* Pages */\r\n\t/* Words */\r\n\t/* Characters */\r\n\tCategory: 'Category',\r\n\t/* PresentationFormat */\r\n\tManager: 'Manager',\r\n\tCompany: 'Company',\r\n\t/* Guid */\r\n\t/* HyperlinkBase */\r\n\t/* Bytes */\r\n\t/* Lines */\r\n\t/* Paragraphs */\r\n\t/* CharactersWithSpaces */\r\n\tAppVersion: 'Version',\r\n\r\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\r\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\r\n\tLanguage: 'Language' /* NOTE: missing from schema */\r\n};\r\nvar evert_XLMLDPM;\r\n\r\nfunction xlml_set_prop(Props, tag, val) {\r\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\r\n\ttag = evert_XLMLDPM[tag] || tag;\r\n\tProps[tag] = val;\r\n}\r\n\r\nfunction xlml_write_docprops(Props, opts) {\r\n\tvar o = [];\r\n\tkeys(XLMLDocPropsMap).map(function(m) {\r\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\r\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\r\n\t\tthrow m;\r\n\t}).forEach(function(p) {\r\n\t\tif(Props[p[1]] == null) return;\r\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\r\n\t\tswitch(p[2]) {\r\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\r\n\t\t}\r\n\t\tif(typeof m == 'number') m = String(m);\r\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\r\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\r\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\r\n\t});\r\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\r\n}\r\nfunction xlml_write_custprops(Props, Custprops) {\r\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\r\n\tvar T = 'CustomDocumentProperties';\r\n\tvar o = [];\r\n\tif(Props) keys(Props).forEach(function(k) {\r\nif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\r\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\r\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\r\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\r\n\r\n\t\tvar m = Props[k];\r\n\t\tvar t = \"string\";\r\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\r\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\r\n\t\telse m = String(m);\r\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\r\n\t});\r\n\tif(Custprops) keys(Custprops).forEach(function(k) {\r\nif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\r\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\r\n\t\tvar m = Custprops[k];\r\n\t\tvar t = \"string\";\r\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\r\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\r\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\r\n\t\telse m = String(m);\r\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\r\n\t});\r\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '';\r\n}\r\n/* [MS-DTYP] 2.3.3 FILETIME */\r\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\r\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\r\nfunction parse_FILETIME(blob) {\r\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\r\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\r\n}\r\nfunction write_FILETIME(time) {\r\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\r\n\tvar t = date.getTime() / 1000 + 11644473600;\r\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\r\n\tl *= 1e7; h *= 1e7;\r\n\tvar w = (l / Math.pow(2,32)) | 0;\r\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\r\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\r\n}\r\n\r\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\r\nfunction parse_lpstr(blob, type, pad) {\r\n\tvar start = blob.l;\r\n\tvar str = blob.read_shift(0, 'lpstr-cp');\r\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\r\n\treturn str;\r\n}\r\n\r\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\r\nfunction parse_lpwstr(blob, type, pad) {\r\n\tvar str = blob.read_shift(0, 'lpwstr');\r\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\r\n\treturn str;\r\n}\r\n\r\n\r\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\r\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\r\nfunction parse_VtStringBase(blob, stringType, pad) {\r\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\r\n\treturn parse_lpstr(blob, stringType, pad);\r\n}\r\n\r\nfunction parse_VtString(blob, t, pad) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\r\nfunction parse_VtUnalignedString(blob, t) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\r\n\r\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\r\nfunction parse_VtVecLpwstrValue(blob) {\r\n\tvar length = blob.read_shift(4);\r\n\tvar ret = [];\r\n\tfor(var i = 0; i != length; ++i) {\r\n\t\tvar start = blob.l;\r\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\r\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\r\nfunction parse_VtVecUnalignedLpstrValue(blob) {\r\n\tvar length = blob.read_shift(4);\r\n\tvar ret = [];\r\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\r\n\treturn ret;\r\n}\r\n\r\n\r\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\r\nfunction parse_VtHeadingPair(blob) {\r\n\tvar start = blob.l;\r\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\r\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\r\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\r\n\treturn [headingString, headerParts];\r\n}\r\n\r\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\r\nfunction parse_VtVecHeadingPairValue(blob) {\r\n\tvar cElements = blob.read_shift(4);\r\n\tvar out = [];\r\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\r\n\treturn out;\r\n}\r\n\r\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\r\nfunction parse_dictionary(blob,CodePage) {\r\n\tvar cnt = blob.read_shift(4);\r\n\tvar dict = ({});\r\n\tfor(var j = 0; j != cnt; ++j) {\r\n\t\tvar pid = blob.read_shift(4);\r\n\t\tvar len = blob.read_shift(4);\r\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\r\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\r\n\t}\r\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\r\n\treturn dict;\r\n}\r\n\r\n/* [MS-OLEPS] 2.9 BLOB */\r\nfunction parse_BLOB(blob) {\r\n\tvar size = blob.read_shift(4);\r\n\tvar bytes = blob.slice(blob.l,blob.l+size);\r\n\tblob.l += size;\r\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\r\n\treturn bytes;\r\n}\r\n\r\n/* [MS-OLEPS] 2.11 ClipboardData */\r\nfunction parse_ClipboardData(blob) {\r\n\t// TODO\r\n\tvar o = {};\r\n\to.Size = blob.read_shift(4);\r\n\t//o.Format = blob.read_shift(4);\r\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\r\nfunction parse_TypedPropertyValue(blob, type, _opts) {\r\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\r\n\tblob.l += 2;\r\n\tif(type !== VT_VARIANT)\r\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\r\n\tswitch(type === VT_VARIANT ? t : type) {\r\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\r\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\r\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\r\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\r\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\r\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\r\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\r\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\r\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\r\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\r\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\r\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\r\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\r\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\r\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\r\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\r\n\t}\r\n}\r\nfunction write_TypedPropertyValue(type, value) {\r\n\tvar o = new_buf(4), p = new_buf(4);\r\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\r\n\tswitch(type) {\r\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\r\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\r\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\r\n\t\tcase 0x40 /*VT_FILETIME*/: p = write_FILETIME(value); break;\r\n\t\tcase 0x1F /*VT_LPWSTR*/:\r\n\t\tcase 0x50 /*VT_STRING*/:\r\np = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\r\n\t\t\tp.write_shift(4, value.length + 1);\r\n\t\t\tp.write_shift(0, value, \"dbcs\");\r\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\r\n\t\t\tbreak;\r\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\r\n\t}\r\n\treturn bconcat([o, p]);\r\n}\r\n\r\n/* [MS-OLEPS] 2.20 PropertySet */\r\nfunction parse_PropertySet(blob, PIDSI) {\r\n\tvar start_addr = blob.l;\r\n\tvar size = blob.read_shift(4);\r\n\tvar NumProps = blob.read_shift(4);\r\n\tvar Props = [], i = 0;\r\n\tvar CodePage = 0;\r\n\tvar Dictionary = -1, DictObj = ({});\r\n\tfor(i = 0; i != NumProps; ++i) {\r\n\t\tvar PropID = blob.read_shift(4);\r\n\t\tvar Offset = blob.read_shift(4);\r\n\t\tProps[i] = [PropID, Offset + start_addr];\r\n\t}\r\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\r\n\tvar PropH = {};\r\n\tfor(i = 0; i != NumProps; ++i) {\r\n\t\tif(blob.l !== Props[i][1]) {\r\n\t\t\tvar fail = true;\r\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\r\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\r\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\r\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\r\n\t\t\t}\r\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\r\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\r\n\t\t}\r\n\t\tif(PIDSI) {\r\n\t\t\tif(Props[i][0] == 0 && Props.length > i+1 && Props[i][1] == Props[i+1][1]) continue; // R9\r\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\r\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\r\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\r\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\r\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\r\n\t\t\t\t\t/* falls through */\r\n\t\t\t\tcase 874:\r\n\t\t\t\tcase 932:\r\n\t\t\t\tcase 936:\r\n\t\t\t\tcase 949:\r\n\t\t\t\tcase 950:\r\n\t\t\t\tcase 1250:\r\n\t\t\t\tcase 1251:\r\n\t\t\t\tcase 1253:\r\n\t\t\t\tcase 1254:\r\n\t\t\t\tcase 1255:\r\n\t\t\t\tcase 1256:\r\n\t\t\t\tcase 1257:\r\n\t\t\t\tcase 1258:\r\n\t\t\t\tcase 10000:\r\n\t\t\t\tcase 1200:\r\n\t\t\t\tcase 1201:\r\n\t\t\t\tcase 1252:\r\n\t\t\t\tcase 65000: case -536:\r\n\t\t\t\tcase 65001: case -535:\r\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\r\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif(Props[i][0] === 0x1) {\r\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2));\r\n\t\t\t\tset_cp(CodePage);\r\n\t\t\t\tif(Dictionary !== -1) {\r\n\t\t\t\t\tvar oldpos = blob.l;\r\n\t\t\t\t\tblob.l = Props[Dictionary][1];\r\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\r\n\t\t\t\t\tblob.l = oldpos;\r\n\t\t\t\t}\r\n\t\t\t} else if(Props[i][0] === 0) {\r\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\r\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\r\n\t\t\t} else {\r\n\t\t\t\tvar name = DictObj[Props[i][0]];\r\n\t\t\t\tvar val;\r\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\r\n\t\t\t\tswitch(blob[blob.l]) {\r\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\r\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\r\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\r\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\r\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\r\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\r\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\r\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\r\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\r\n\t\t\t\t}\r\n\t\t\t\tPropH[name] = val;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tblob.l = start_addr + size; /* step ahead to skip padding */\r\n\treturn PropH;\r\n}\r\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ];\r\nfunction guess_property_type(val) {\r\n\tswitch(typeof val) {\r\n\t\tcase \"boolean\": return 0x0B;\r\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\r\n\t\tcase \"string\": return 0x1F;\r\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\r\n\t}\r\n\treturn -1;\r\n}\r\nfunction write_PropertySet(entries, RE, PIDSI) {\r\n\tvar hdr = new_buf(8), piao = [], prop = [];\r\n\tvar sz = 8, i = 0;\r\n\r\n\tvar pr = new_buf(8), pio = new_buf(8);\r\n\tpr.write_shift(4, 0x0002);\r\n\tpr.write_shift(4, 0x04B0);\r\n\tpio.write_shift(4, 0x0001);\r\n\tprop.push(pr); piao.push(pio);\r\n\tsz += 8 + pr.length;\r\n\r\n\tif(!RE) {\r\n\t\tpio = new_buf(8);\r\n\t\tpio.write_shift(4, 0);\r\n\t\tpiao.unshift(pio);\r\n\r\n\t\tvar bufs = [new_buf(4)];\r\n\t\tbufs[0].write_shift(4, entries.length);\r\n\t\tfor(i = 0; i < entries.length; ++i) {\r\n\t\t\tvar value = entries[i][0];\r\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\r\n\t\t\tpr.write_shift(4, i+2);\r\n\t\t\tpr.write_shift(4, value.length + 1);\r\n\t\t\tpr.write_shift(0, value, \"dbcs\");\r\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\r\n\t\t\tbufs.push(pr);\r\n\t\t}\r\n\t\tpr = bconcat(bufs);\r\n\t\tprop.unshift(pr);\r\n\t\tsz += 8 + pr.length;\r\n\t}\r\n\r\n\tfor(i = 0; i < entries.length; ++i) {\r\n\t\tif(RE && !RE[entries[i][0]]) continue;\r\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\r\n\t\tif(entries[i][1] == null) continue;\r\n\r\n\t\tvar val = entries[i][1], idx = 0;\r\n\t\tif(RE) {\r\n\t\t\tidx = +RE[entries[i][0]];\r\n\t\t\tvar pinfo = (PIDSI)[idx];\r\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\r\nvar arr = val.split(\".\");\r\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\r\n\t\t\t}\r\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\r\n\t\t} else {\r\n\t\t\tvar T = guess_property_type(val);\r\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\r\n\t\t\tpr = write_TypedPropertyValue(T, val);\r\n\t\t}\r\n\t\tprop.push(pr);\r\n\r\n\t\tpio = new_buf(8);\r\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\r\n\t\tpiao.push(pio);\r\n\r\n\t\tsz += 8 + pr.length;\r\n\t}\r\n\r\n\tvar w = 8 * (prop.length + 1);\r\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\r\n\thdr.write_shift(4, sz);\r\n\thdr.write_shift(4, prop.length);\r\n\treturn bconcat([hdr].concat(piao).concat(prop));\r\n}\r\n\r\n/* [MS-OLEPS] 2.21 PropertySetStream */\r\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\r\n\tvar blob = file.content;\r\n\tif(!blob) return ({});\r\n\tprep_blob(blob, 0);\r\n\r\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\r\n\tblob.chk('feff', 'Byte Order: ');\r\n\r\n\t/*var vers = */blob.read_shift(2); // TODO: check version\r\n\tvar SystemIdentifier = blob.read_shift(4);\r\n\tvar CLSID = blob.read_shift(16);\r\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\r\n\tNumSets = blob.read_shift(4);\r\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\r\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\r\n\r\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\r\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\r\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\r\n\r\n\tvar rval = ({ SystemIdentifier: SystemIdentifier });\r\n\tfor(var y in PSet0) rval[y] = PSet0[y];\r\n\t//rval.blob = blob;\r\n\trval.FMTID = FMTID0;\r\n\t//rval.PSet0 = PSet0;\r\n\tif(NumSets === 1) return rval;\r\n\tif(Offset1 - blob.l == 2) blob.l += 2;\r\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\r\n\tvar PSet1;\r\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\r\n\tfor(y in PSet1) rval[y] = PSet1[y];\r\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\r\n\treturn rval;\r\n}\r\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI, entries2, clsid2) {\r\n\tvar hdr = new_buf(entries2 ? 68 : 48);\r\n\tvar bufs = [hdr];\r\n\thdr.write_shift(2, 0xFFFE);\r\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\r\n\thdr.write_shift(4, 0x32363237);\r\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\r\n\thdr.write_shift(4, (entries2 ? 2 : 1));\r\n\thdr.write_shift(16, clsid, \"hex\");\r\n\thdr.write_shift(4, (entries2 ? 68 : 48));\r\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\r\n\tbufs.push(ps0);\r\n\r\n\tif(entries2) {\r\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\r\n\t\thdr.write_shift(16, clsid2, \"hex\");\r\n\t\thdr.write_shift(4, 68 + ps0.length);\r\n\t\tbufs.push(ps1);\r\n\t}\r\n\treturn bconcat(bufs);\r\n}\r\n\r\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\r\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1);\r\n\tvar encoding = 'sbcs-cont';\r\n\tvar cp = current_codepage;\r\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\r\n\tif(!opts || opts.biff == 8 ) {\r\n\t\tvar fHighByte = blob.read_shift(1);\r\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\r\n\t} else if(opts.biff == 12) {\r\n\t\tencoding = 'wstr';\r\n\t}\r\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\r\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\r\n\tcurrent_codepage = cp;\r\n\treturn o;\r\n}\r\n\r\n/* 2.5.293 XLUnicodeRichExtendedString */\r\nfunction parse_XLUnicodeRichExtendedString(blob) {\r\n\tvar cp = current_codepage;\r\n\tcurrent_codepage = 1200;\r\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\r\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\r\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\r\n\tvar cRun = 0, cbExtRst;\r\n\tvar z = {};\r\n\tif(fRichSt) cRun = blob.read_shift(2);\r\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\r\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\r\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\r\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\r\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\r\n\tz.t = msg;\r\n\tif(!fRichSt) { z.raw = \"\" + z.t + \"\"; z.r = z.t; }\r\n\tcurrent_codepage = cp;\r\n\treturn z;\r\n}\r\nfunction write_XLUnicodeRichExtendedString(xlstr) {\r\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\r\n\r\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\r\n\thdr.write_shift(2, str.length);\r\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\r\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\r\n\r\n\tvar otext = new_buf(2 * str.length);\r\n\totext.write_shift(2 * str.length, str, 'utf16le');\r\n\r\n\tvar out = [hdr, otext];\r\n\r\n\treturn bconcat(out);\r\n}\r\n\r\n/* 2.5.296 XLUnicodeStringNoCch */\r\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\r\n\tvar retval;\r\n\tif(opts) {\r\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\r\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\r\n\t}\r\n\tvar fHighByte = blob.read_shift(1);\r\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\r\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\r\n\treturn retval;\r\n}\r\n\r\n/* 2.5.294 XLUnicodeString */\r\nfunction parse_XLUnicodeString(blob, length, opts) {\r\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\r\n\tif(cch === 0) { blob.l++; return \"\"; }\r\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\r\n}\r\n/* BIFF5 override */\r\nfunction parse_XLUnicodeString2(blob, length, opts) {\r\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\r\n\tvar cch = blob.read_shift(1);\r\n\tif(cch === 0) { blob.l++; return \"\"; }\r\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\r\n}\r\n/* TODO: BIFF5 and lower, codepage awareness */\r\nfunction write_XLUnicodeString(str, opts, o) {\r\n\tif(!o) o = new_buf(3 + 2 * str.length);\r\n\to.write_shift(2, str.length);\r\n\to.write_shift(1, 1);\r\n\to.write_shift(31, str, 'utf16le');\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.5.61 ControlInfo */\r\nfunction parse_ControlInfo(blob) {\r\n\tvar flags = blob.read_shift(1);\r\n\tblob.l++;\r\n\tvar accel = blob.read_shift(2);\r\n\tblob.l += 2;\r\n\treturn [flags, accel];\r\n}\r\n\r\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\r\nfunction parse_URLMoniker(blob) {\r\n\tvar len = blob.read_shift(4), start = blob.l;\r\n\tvar extra = false;\r\n\tif(len > 24) {\r\n\t\t/* look ahead */\r\n\t\tblob.l += len - 24;\r\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\r\n\t\tblob.l = start;\r\n\t}\r\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\r\n\tif(extra) blob.l += 24;\r\n\treturn url;\r\n}\r\n\r\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\r\nfunction parse_FileMoniker(blob) {\r\n\tvar cAnti = blob.read_shift(2);\r\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\r\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\r\n\tblob.l += 2; //var endServer = blob.read_shift(2);\r\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\r\n\tvar sz = blob.read_shift(4);\r\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\r\n\tvar bytes = blob.read_shift(4);\r\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\r\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\r\n\treturn preamble + unicodePath;\r\n}\r\n\r\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\r\nfunction parse_HyperlinkMoniker(blob, length) {\r\n\tvar clsid = blob.read_shift(16); length -= 16;\r\n\tswitch(clsid) {\r\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\r\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\r\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\r\n\t}\r\n}\r\n\r\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\r\nfunction parse_HyperlinkString(blob) {\r\n\tvar len = blob.read_shift(4);\r\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\r\n\treturn o;\r\n}\r\nfunction write_HyperlinkString(str, o) {\r\n\tif(!o) o = new_buf(6 + str.length * 2);\r\n\to.write_shift(4, 1 + str.length);\r\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\r\n\to.write_shift(2, 0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\r\nfunction parse_Hyperlink(blob, length) {\r\n\tvar end = blob.l + length;\r\n\tvar sVer = blob.read_shift(4);\r\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\r\n\tvar flags = blob.read_shift(2);\r\n\tblob.l += 2;\r\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\r\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\r\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\r\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\r\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\r\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\r\n\tif(flags & 0x0020) guid = blob.read_shift(16);\r\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\r\n\tblob.l = end;\r\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\r\n\tif(target && Loc) target+=\"#\"+Loc;\r\n\tif(!target) target = \"#\" + Loc;\r\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\r\n\tvar out = ({Target:target});\r\n\tif(guid) out.guid = guid;\r\n\tif(fileTime) out.time = fileTime;\r\n\tif(displayName) out.Tooltip = displayName;\r\n\treturn out;\r\n}\r\nfunction write_Hyperlink(hl) {\r\n\tvar out = new_buf(512), i = 0;\r\n\tvar Target = hl.Target;\r\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\r\n\tvar hashidx = Target.indexOf(\"#\");\r\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\r\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\r\n\tout.write_shift(4,2); out.write_shift(4, F);\r\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\r\n\tif(F == 0x1C) {\r\n\t\tTarget = Target.slice(1);\r\n\t\twrite_HyperlinkString(Target, out);\r\n\t} else if(F & 0x02) {\r\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\r\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\r\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\r\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\r\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\r\n\t\tout.write_shift(2, 0);\r\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\r\n\t} else {\r\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\r\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\r\n\t\tvar P = 0;\r\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\r\n\t\tout.write_shift(2, P);\r\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\r\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\r\n\t\tout.write_shift(1, 0);\r\n\t\tout.write_shift(2, 0xFFFF);\r\n\t\tout.write_shift(2, 0xDEAD);\r\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\r\n\t}\r\n\treturn out.slice(0, out.l);\r\n}\r\n\r\n/* 2.5.178 LongRGBA */\r\nfunction parse_LongRGBA(blob) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\r\n\r\n/* 2.5.177 LongRGB */\r\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\r\n\r\n\r\n/* [MS-XLS] 2.5.19 */\r\nfunction parse_XLSCell(blob) {\r\n\tvar rw = blob.read_shift(2); // 0-indexed\r\n\tvar col = blob.read_shift(2);\r\n\tvar ixfe = blob.read_shift(2);\r\n\treturn ({r:rw, c:col, ixfe:ixfe});\r\n}\r\nfunction write_XLSCell(R, C, ixfe, o) {\r\n\tif(!o) o = new_buf(6);\r\n\to.write_shift(2, R);\r\n\to.write_shift(2, C);\r\n\to.write_shift(2, ixfe||0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.5.134 */\r\nfunction parse_frtHeader(blob) {\r\n\tvar rt = blob.read_shift(2);\r\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\r\n\tblob.l += 8;\r\n\treturn {type: rt, flags: flags};\r\n}\r\n\r\n\r\n\r\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\r\n\r\n/* [MS-XLS] 2.5.344 */\r\nfunction parse_XTI(blob, length, opts) {\r\n\tvar w = opts.biff > 8 ? 4 : 2;\r\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\r\n\treturn [iSupBook, itabFirst, itabLast];\r\n}\r\n\r\n/* [MS-XLS] 2.5.218 */\r\nfunction parse_RkRec(blob) {\r\n\tvar ixfe = blob.read_shift(2);\r\n\tvar RK = parse_RkNumber(blob);\r\n\treturn [ixfe, RK];\r\n}\r\n\r\n/* [MS-XLS] 2.5.1 */\r\nfunction parse_AddinUdf(blob, length, opts) {\r\n\tblob.l += 4; length -= 4;\r\n\tvar l = blob.l + length;\r\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\r\n\tvar cb = blob.read_shift(2);\r\n\tl -= blob.l;\r\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\r\n\tblob.l += cb;\r\n\treturn udfName;\r\n}\r\n\r\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\r\nfunction parse_Ref8U(blob) {\r\n\tvar rwFirst = blob.read_shift(2);\r\n\tvar rwLast = blob.read_shift(2);\r\n\tvar colFirst = blob.read_shift(2);\r\n\tvar colLast = blob.read_shift(2);\r\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\r\n}\r\nfunction write_Ref8U(r, o) {\r\n\tif(!o) o = new_buf(8);\r\n\to.write_shift(2, r.s.r);\r\n\to.write_shift(2, r.e.r);\r\n\to.write_shift(2, r.s.c);\r\n\to.write_shift(2, r.e.c);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.5.211 */\r\nfunction parse_RefU(blob) {\r\n\tvar rwFirst = blob.read_shift(2);\r\n\tvar rwLast = blob.read_shift(2);\r\n\tvar colFirst = blob.read_shift(1);\r\n\tvar colLast = blob.read_shift(1);\r\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\r\n}\r\n\r\n/* [MS-XLS] 2.5.207 */\r\nvar parse_Ref = parse_RefU;\r\n\r\n/* [MS-XLS] 2.5.143 */\r\nfunction parse_FtCmo(blob) {\r\n\tblob.l += 4;\r\n\tvar ot = blob.read_shift(2);\r\n\tvar id = blob.read_shift(2);\r\n\tvar flags = blob.read_shift(2);\r\n\tblob.l+=12;\r\n\treturn [id, ot, flags];\r\n}\r\n\r\n/* [MS-XLS] 2.5.149 */\r\nfunction parse_FtNts(blob) {\r\n\tvar out = {};\r\n\tblob.l += 4;\r\n\tblob.l += 16; // GUID TODO\r\n\tout.fSharedNote = blob.read_shift(2);\r\n\tblob.l += 4;\r\n\treturn out;\r\n}\r\n\r\n/* [MS-XLS] 2.5.142 */\r\nfunction parse_FtCf(blob) {\r\n\tvar out = {};\r\n\tblob.l += 4;\r\n\tblob.cf = blob.read_shift(2);\r\n\treturn out;\r\n}\r\n\r\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\r\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\r\nvar FtTab = {\r\n0x00: parse_FtSkip, /* FtEnd */\r\n0x04: parse_FtSkip, /* FtMacro */\r\n0x05: parse_FtSkip, /* FtButton */\r\n0x06: parse_FtSkip, /* FtGmo */\r\n0x07: parse_FtCf, /* FtCf */\r\n0x08: parse_FtSkip, /* FtPioGrbit */\r\n0x09: parse_FtSkip, /* FtPictFmla */\r\n0x0A: parse_FtSkip, /* FtCbls */\r\n0x0B: parse_FtSkip, /* FtRbo */\r\n0x0C: parse_FtSkip, /* FtSbs */\r\n0x0D: parse_FtNts, /* FtNts */\r\n0x0E: parse_FtSkip, /* FtSbsFmla */\r\n0x0F: parse_FtSkip, /* FtGboData */\r\n0x10: parse_FtSkip, /* FtEdoData */\r\n0x11: parse_FtSkip, /* FtRboData */\r\n0x12: parse_FtSkip, /* FtCblsData */\r\n0x13: parse_FtSkip, /* FtLbsData */\r\n0x14: parse_FtSkip, /* FtCblsFmla */\r\n0x15: parse_FtCmo\r\n};\r\nfunction parse_FtArray(blob, length) {\r\n\tvar tgt = blob.l + length;\r\n\tvar fts = [];\r\n\twhile(blob.l < tgt) {\r\n\t\tvar ft = blob.read_shift(2);\r\n\t\tblob.l-=2;\r\n\t\ttry {\r\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\r\n\t\t} catch(e) { blob.l = tgt; return fts; }\r\n\t}\r\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\r\n\treturn fts;\r\n}\r\n\r\n/* --- 2.4 Records --- */\r\n\r\n/* [MS-XLS] 2.4.21 */\r\nfunction parse_BOF(blob, length) {\r\n\tvar o = {BIFFVer:0, dt:0};\r\n\to.BIFFVer = blob.read_shift(2); length -= 2;\r\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\r\n\tswitch(o.BIFFVer) {\r\n\t\tcase 0x0600: /* BIFF8 */\r\n\t\tcase 0x0500: /* BIFF5 */\r\n\t\tcase 0x0400: /* BIFF4 */\r\n\t\tcase 0x0300: /* BIFF3 */\r\n\t\tcase 0x0200: /* BIFF2 */\r\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\r\n\t\t\tbreak;\r\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\r\n\t}\r\n\r\n\tblob.read_shift(length);\r\n\treturn o;\r\n}\r\nfunction write_BOF(wb, t, o) {\r\n\tvar h = 0x0600, w = 16;\r\n\tswitch(o.bookType) {\r\n\t\tcase 'biff8': break;\r\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\r\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\r\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\r\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\r\n\t\tcase 'xla': break;\r\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\r\n\t}\r\n\tvar out = new_buf(w);\r\n\tout.write_shift(2, h);\r\n\tout.write_shift(2, t);\r\n\tif(w > 4) out.write_shift(2, 0x7262);\r\n\tif(w > 6) out.write_shift(2, 0x07CD);\r\n\tif(w > 8) {\r\n\t\tout.write_shift(2, 0xC009);\r\n\t\tout.write_shift(2, 0x0001);\r\n\t\tout.write_shift(2, 0x0706);\r\n\t\tout.write_shift(2, 0x0000);\r\n\t}\r\n\treturn out;\r\n}\r\n\r\n\r\n/* [MS-XLS] 2.4.146 */\r\nfunction parse_InterfaceHdr(blob, length) {\r\n\tif(length === 0) return 0x04b0;\r\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\r\n\treturn 0x04b0;\r\n}\r\n\r\n\r\n/* [MS-XLS] 2.4.349 */\r\nfunction parse_WriteAccess(blob, length, opts) {\r\n\tif(opts.enc) { blob.l += length; return \"\"; }\r\n\tvar l = blob.l;\r\n\t// TODO: make sure XLUnicodeString doesnt overrun\r\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\r\n\tblob.read_shift(length + l - blob.l);\r\n\treturn UserName;\r\n}\r\nfunction write_WriteAccess(s, opts) {\r\n\tvar b8 = !opts || opts.biff == 8;\r\n\tvar o = new_buf(b8 ? 112 : 54);\r\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\r\n\tif(b8) o.write_shift(1, 0);\r\n\to.write_shift(4, 0x33336853);\r\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\r\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.351 */\r\nfunction parse_WsBool(blob, length, opts) {\r\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\r\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\r\n}\r\n\r\n/* [MS-XLS] 2.4.28 */\r\nfunction parse_BoundSheet8(blob, length, opts) {\r\n\tvar pos = blob.read_shift(4);\r\n\tvar hidden = blob.read_shift(1) & 0x03;\r\n\tvar dt = blob.read_shift(1);\r\n\tswitch(dt) {\r\n\t\tcase 0: dt = 'Worksheet'; break;\r\n\t\tcase 1: dt = 'Macrosheet'; break;\r\n\t\tcase 2: dt = 'Chartsheet'; break;\r\n\t\tcase 6: dt = 'VBAModule'; break;\r\n\t}\r\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\r\n\tif(name.length === 0) name = \"Sheet1\";\r\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\r\n}\r\nfunction write_BoundSheet8(data, opts) {\r\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\r\n\tvar o = new_buf(8 + w * data.name.length);\r\n\to.write_shift(4, data.pos);\r\n\to.write_shift(1, data.hs || 0);\r\n\to.write_shift(1, data.dt);\r\n\to.write_shift(1, data.name.length);\r\n\tif(opts.biff >= 8) o.write_shift(1, 1);\r\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\r\n\tvar out = o.slice(0, o.l);\r\n\tout.l = o.l; return out;\r\n}\r\n\r\n/* [MS-XLS] 2.4.265 TODO */\r\nfunction parse_SST(blob, length) {\r\n\tvar end = blob.l + length;\r\n\tvar cnt = blob.read_shift(4);\r\n\tvar ucnt = blob.read_shift(4);\r\n\tvar strs = ([]);\r\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\r\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\r\n\t}\r\n\tstrs.Count = cnt; strs.Unique = ucnt;\r\n\treturn strs;\r\n}\r\nfunction write_SST(sst, opts) {\r\n\tvar header = new_buf(8);\r\n\theader.write_shift(4, sst.Count);\r\n\theader.write_shift(4, sst.Unique);\r\n\tvar strs = [];\r\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\r\n\tvar o = bconcat([header].concat(strs));\r\no.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.107 */\r\nfunction parse_ExtSST(blob, length) {\r\n\tvar extsst = {};\r\n\textsst.dsst = blob.read_shift(2);\r\n\tblob.l += length-2;\r\n\treturn extsst;\r\n}\r\n\r\n\r\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\r\nfunction parse_Row(blob) {\r\n\tvar z = ({});\r\n\tz.r = blob.read_shift(2);\r\n\tz.c = blob.read_shift(2);\r\n\tz.cnt = blob.read_shift(2) - z.c;\r\n\tvar miyRw = blob.read_shift(2);\r\n\tblob.l += 4; // reserved(2), unused(2)\r\n\tvar flags = blob.read_shift(1); // various flags\r\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\r\n\tif(flags & 0x07) z.level = flags & 0x07;\r\n\t// collapsed: flags & 0x10\r\n\tif(flags & 0x20) z.hidden = true;\r\n\tif(flags & 0x40) z.hpt = miyRw / 20;\r\n\treturn z;\r\n}\r\n\r\n\r\n/* [MS-XLS] 2.4.125 */\r\nfunction parse_ForceFullCalculation(blob) {\r\n\tvar header = parse_frtHeader(blob);\r\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\r\n\tvar fullcalc = blob.read_shift(4);\r\n\treturn fullcalc !== 0x0;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n/* [MS-XLS] 2.4.215 rt */\r\nfunction parse_RecalcId(blob) {\r\n\tblob.read_shift(2);\r\n\treturn blob.read_shift(4);\r\n}\r\n\r\n/* [MS-XLS] 2.4.87 */\r\nfunction parse_DefaultRowHeight(blob, length, opts) {\r\n\tvar f = 0;\r\n\tif(!(opts && opts.biff == 2)) {\r\n\t\tf = blob.read_shift(2);\r\n\t}\r\n\tvar miyRw = blob.read_shift(2);\r\n\tif((opts && opts.biff == 2)) {\r\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\r\n\t}\r\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\r\n\treturn [fl, miyRw];\r\n}\r\n\r\n/* [MS-XLS] 2.4.345 TODO */\r\nfunction parse_Window1(blob) {\r\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\r\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\r\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\r\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\r\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\r\n}\r\nfunction write_Window1() {\r\n\tvar o = new_buf(18);\r\n\to.write_shift(2, 0);\r\n\to.write_shift(2, 0);\r\n\to.write_shift(2, 0x7260);\r\n\to.write_shift(2, 0x44c0);\r\n\to.write_shift(2, 0x38);\r\n\to.write_shift(2, 0);\r\n\to.write_shift(2, 0);\r\n\to.write_shift(2, 1);\r\n\to.write_shift(2, 0x01f4);\r\n\treturn o;\r\n}\r\n/* [MS-XLS] 2.4.346 TODO */\r\nfunction parse_Window2(blob, length, opts) {\r\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\r\n\tvar f = blob.read_shift(2);\r\n\treturn { RTL: f & 0x40 };\r\n}\r\nfunction write_Window2(view) {\r\n\tvar o = new_buf(18), f = 0x6b6;\r\n\tif(view && view.RTL) f |= 0x40;\r\n\to.write_shift(2, f);\r\n\to.write_shift(4, 0);\r\n\to.write_shift(4, 64);\r\n\to.write_shift(4, 0);\r\n\to.write_shift(4, 0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.189 TODO */\r\nfunction parse_Pane(/*blob, length, opts*/) {\r\n}\r\n\r\n/* [MS-XLS] 2.4.122 TODO */\r\nfunction parse_Font(blob, length, opts) {\r\n\tvar o = {\r\n\t\tdyHeight: blob.read_shift(2),\r\n\t\tfl: blob.read_shift(2)\r\n\t};\r\n\tswitch((opts && opts.biff) || 8) {\r\n\t\tcase 2: break;\r\n\t\tcase 3: case 4: blob.l += 2; break;\r\n\t\tdefault: blob.l += 10; break;\r\n\t}\r\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\r\n\treturn o;\r\n}\r\nfunction write_Font(data, opts) {\r\n\tvar name = data.name || \"Arial\";\r\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\r\n\tvar o = new_buf(w);\r\n\to.write_shift(2, (data.sz || 12) * 20);\r\n\to.write_shift(4, 0);\r\n\to.write_shift(2, 400);\r\n\to.write_shift(4, 0);\r\n\to.write_shift(2, 0);\r\n\to.write_shift(1, name.length);\r\n\tif(!b5) o.write_shift(1, 1);\r\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.149 */\r\nfunction parse_LabelSst(blob) {\r\n\tvar cell = parse_XLSCell(blob);\r\n\tcell.isst = blob.read_shift(4);\r\n\treturn cell;\r\n}\r\nfunction write_LabelSst(R, C, v, os ) {\r\n\tvar o = new_buf(10);\r\n\twrite_XLSCell(R, C, os, o);\r\n\to.write_shift(4, v);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.148 */\r\nfunction parse_Label(blob, length, opts) {\r\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\r\n\tvar target = blob.l + length;\r\n\tvar cell = parse_XLSCell(blob, 6);\r\n\tif(opts.biff == 2) blob.l++;\r\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\r\n\tcell.val = str;\r\n\treturn cell;\r\n}\r\nfunction write_Label(R, C, v, os, opts) {\r\n\tvar b8 = !opts || opts.biff == 8;\r\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\r\n\twrite_XLSCell(R, C, os, o);\r\n\to.write_shift(2, v.length);\r\n\tif(b8) o.write_shift(1, 1);\r\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\r\n\treturn o;\r\n}\r\n\r\n\r\n/* [MS-XLS] 2.4.126 Number Formats */\r\nfunction parse_Format(blob, length, opts) {\r\n\tvar numFmtId = blob.read_shift(2);\r\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\r\n\treturn [numFmtId, fmtstr];\r\n}\r\nfunction write_Format(i, f, opts, o) {\r\n\tvar b5 = (opts && (opts.biff == 5));\r\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\r\n\to.write_shift(2, i);\r\n\to.write_shift((b5 ? 1 : 2), f.length);\r\n\tif(!b5) o.write_shift(1, 1);\r\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\r\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\r\n\tif(out.l == null) out.l = out.length;\r\n\treturn out;\r\n}\r\nvar parse_BIFF2Format = parse_XLUnicodeString2;\r\n\r\n/* [MS-XLS] 2.4.90 */\r\nfunction parse_Dimensions(blob, length, opts) {\r\n\tvar end = blob.l + length;\r\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\r\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\r\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\r\n\tblob.l = end;\r\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\r\n}\r\nfunction write_Dimensions(range, opts) {\r\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\r\n\tvar o = new_buf(2*w + 6);\r\n\to.write_shift(w, range.s.r);\r\n\to.write_shift(w, range.e.r + 1);\r\n\to.write_shift(2, range.s.c);\r\n\to.write_shift(2, range.e.c + 1);\r\n\to.write_shift(2, 0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.220 */\r\nfunction parse_RK(blob) {\r\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\r\n\tvar rkrec = parse_RkRec(blob);\r\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\r\n}\r\n\r\n/* [MS-XLS] 2.4.175 */\r\nfunction parse_MulRk(blob, length) {\r\n\tvar target = blob.l + length - 2;\r\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\r\n\tvar rkrecs = [];\r\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\r\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\r\n\tvar lastcol = blob.read_shift(2);\r\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\r\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\r\n}\r\n/* [MS-XLS] 2.4.174 */\r\nfunction parse_MulBlank(blob, length) {\r\n\tvar target = blob.l + length - 2;\r\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\r\n\tvar ixfes = [];\r\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\r\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\r\n\tvar lastcol = blob.read_shift(2);\r\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\r\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\r\n}\r\n\r\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\r\nfunction parse_CellStyleXF(blob, length, style, opts) {\r\n\tvar o = {};\r\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\r\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\r\n\to.patternType = XLSFillPattern[c >> 26];\r\n\r\n\tif(!opts.cellStyles) return o;\r\n\to.alc = a & 0x07;\r\n\to.fWrap = (a >> 3) & 0x01;\r\n\to.alcV = (a >> 4) & 0x07;\r\n\to.fJustLast = (a >> 7) & 0x01;\r\n\to.trot = (a >> 8) & 0xFF;\r\n\to.cIndent = (a >> 16) & 0x0F;\r\n\to.fShrinkToFit = (a >> 20) & 0x01;\r\n\to.iReadOrder = (a >> 22) & 0x02;\r\n\to.fAtrNum = (a >> 26) & 0x01;\r\n\to.fAtrFnt = (a >> 27) & 0x01;\r\n\to.fAtrAlc = (a >> 28) & 0x01;\r\n\to.fAtrBdr = (a >> 29) & 0x01;\r\n\to.fAtrPat = (a >> 30) & 0x01;\r\n\to.fAtrProt = (a >> 31) & 0x01;\r\n\r\n\to.dgLeft = b & 0x0F;\r\n\to.dgRight = (b >> 4) & 0x0F;\r\n\to.dgTop = (b >> 8) & 0x0F;\r\n\to.dgBottom = (b >> 12) & 0x0F;\r\n\to.icvLeft = (b >> 16) & 0x7F;\r\n\to.icvRight = (b >> 23) & 0x7F;\r\n\to.grbitDiag = (b >> 30) & 0x03;\r\n\r\n\to.icvTop = c & 0x7F;\r\n\to.icvBottom = (c >> 7) & 0x7F;\r\n\to.icvDiag = (c >> 14) & 0x7F;\r\n\to.dgDiag = (c >> 21) & 0x0F;\r\n\r\n\to.icvFore = d & 0x7F;\r\n\to.icvBack = (d >> 7) & 0x7F;\r\n\to.fsxButton = (d >> 14) & 0x01;\r\n\treturn o;\r\n}\r\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\r\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\r\n\r\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\r\nfunction parse_XF(blob, length, opts) {\r\n\tvar o = {};\r\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\r\n\to.fStyle = (o.flags >> 2) & 0x01;\r\n\tlength -= 6;\r\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\r\n\treturn o;\r\n}\r\nfunction write_XF(data, ixfeP, opts, o) {\r\n\tvar b5 = (opts && (opts.biff == 5));\r\n\tif(!o) o = new_buf(b5 ? 16 : 20);\r\n\to.write_shift(2, 0);\r\n\tif(data.style) {\r\n\t\to.write_shift(2, (data.numFmtId||0));\r\n\t\to.write_shift(2, 0xFFF4);\r\n\t} else {\r\n\t\to.write_shift(2, (data.numFmtId||0));\r\n\t\to.write_shift(2, (ixfeP<<4));\r\n\t}\r\n\tvar f = 0;\r\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\r\n\to.write_shift(4, f);\r\n\to.write_shift(4, 0);\r\n\tif(!b5) o.write_shift(4, 0);\r\n\to.write_shift(2, 0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.134 */\r\nfunction parse_Guts(blob) {\r\n\tblob.l += 4;\r\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\r\n\tif(out[0] !== 0) out[0]--;\r\n\tif(out[1] !== 0) out[1]--;\r\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\r\n\treturn out;\r\n}\r\nfunction write_Guts(guts) {\r\n\tvar o = new_buf(8);\r\n\to.write_shift(4, 0);\r\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\r\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.24 */\r\nfunction parse_BoolErr(blob, length, opts) {\r\n\tvar cell = parse_XLSCell(blob, 6);\r\n\tif(opts.biff == 2 || length == 9) ++blob.l;\r\n\tvar val = parse_Bes(blob, 2);\r\n\tcell.val = val;\r\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\r\n\treturn cell;\r\n}\r\nfunction write_BoolErr(R, C, v, os, opts, t) {\r\n\tvar o = new_buf(8);\r\n\twrite_XLSCell(R, C, os, o);\r\n\twrite_Bes(v, t, o);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.180 Number */\r\nfunction parse_Number(blob, length, opts) {\r\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\r\n\tvar cell = parse_XLSCell(blob, 6);\r\n\tvar xnum = parse_Xnum(blob, 8);\r\n\tcell.val = xnum;\r\n\treturn cell;\r\n}\r\nfunction write_Number(R, C, v, os) {\r\n\tvar o = new_buf(14);\r\n\twrite_XLSCell(R, C, os, o);\r\n\twrite_Xnum(v, o);\r\n\treturn o;\r\n}\r\n\r\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\r\n\r\n/* [MS-XLS] 2.4.271 */\r\nfunction parse_SupBook(blob, length, opts) {\r\n\tvar end = blob.l + length;\r\n\tvar ctab = blob.read_shift(2);\r\n\tvar cch = blob.read_shift(2);\r\n\topts.sbcch = cch;\r\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\r\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\r\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\r\n\t/* TODO: 2.5.277 Virtual Path */\r\n\tvar rgst = [];\r\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\r\n\treturn [cch, ctab, virtPath, rgst];\r\n}\r\n\r\n/* [MS-XLS] 2.4.105 TODO */\r\nfunction parse_ExternName(blob, length, opts) {\r\n\tvar flags = blob.read_shift(2);\r\n\tvar body;\r\n\tvar o = ({\r\n\t\tfBuiltIn: flags & 0x01,\r\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\r\n\t\tfWantPict: (flags >>> 2) & 0x01,\r\n\t\tfOle: (flags >>> 3) & 0x01,\r\n\t\tfOleLink: (flags >>> 4) & 0x01,\r\n\t\tcf: (flags >>> 5) & 0x3FF,\r\n\t\tfIcon: flags >>> 15 & 0x01\r\n\t});\r\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\r\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\r\n\to.body = body || blob.read_shift(length-2);\r\n\tif(typeof body === \"string\") o.Name = body;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.150 TODO */\r\nfunction parse_Lbl(blob, length, opts) {\r\n\tvar target = blob.l + length;\r\n\tvar flags = blob.read_shift(2);\r\n\tvar chKey = blob.read_shift(1);\r\n\tvar cch = blob.read_shift(1);\r\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\r\n\tvar itab = 0;\r\n\tif(!opts || opts.biff >= 5) {\r\n\t\tif(opts.biff != 5) blob.l += 2;\r\n\t\titab = blob.read_shift(2);\r\n\t\tif(opts.biff == 5) blob.l += 2;\r\n\t\tblob.l += 4;\r\n\t}\r\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\r\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\r\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\r\n\t/*jshint -W018 */\r\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\r\n\t/*jshint +W018 */\r\n\treturn {\r\n\t\tchKey: chKey,\r\n\t\tName: name,\r\n\t\titab: itab,\r\n\t\trgce: rgce\r\n\t};\r\n}\r\n\r\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\r\nfunction parse_ExternSheet(blob, length, opts) {\r\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\r\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\r\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\r\n\t\t// [iSupBook, itabFirst, itabLast];\r\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\r\n\treturn o;\r\n}\r\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\r\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\r\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\r\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.176 TODO: check older biff */\r\nfunction parse_NameCmt(blob, length, opts) {\r\n\tif(opts.biff < 8) { blob.l += length; return; }\r\n\tvar cchName = blob.read_shift(2);\r\n\tvar cchComment = blob.read_shift(2);\r\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\r\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\r\n\treturn [name, comment];\r\n}\r\n\r\n/* [MS-XLS] 2.4.260 */\r\nfunction parse_ShrFmla(blob, length, opts) {\r\n\tvar ref = parse_RefU(blob, 6);\r\n\tblob.l++;\r\n\tvar cUse = blob.read_shift(1);\r\n\tlength -= 8;\r\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\r\n}\r\n\r\n/* [MS-XLS] 2.4.4 TODO */\r\nfunction parse_Array(blob, length, opts) {\r\n\tvar ref = parse_Ref(blob, 6);\r\n\t/* TODO: fAlwaysCalc */\r\n\tswitch(opts.biff) {\r\n\t\tcase 2: blob.l ++; length -= 7; break;\r\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\r\n\t\tdefault: blob.l += 6; length -= 12;\r\n\t}\r\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\r\n}\r\n\r\n/* [MS-XLS] 2.4.173 */\r\nfunction parse_MTRSettings(blob) {\r\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\r\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\r\n\tvar cUserThreadCount = blob.read_shift(4);\r\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\r\n}\r\n\r\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\r\nfunction parse_NoteSh(blob, length, opts) {\r\n\tif(opts.biff < 8) return;\r\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\r\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\r\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\r\n\tif(opts.biff < 8) blob.read_shift(1);\r\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\r\n}\r\n\r\n/* [MS-XLS] 2.4.179 */\r\nfunction parse_Note(blob, length, opts) {\r\n\t/* TODO: Support revisions */\r\n\treturn parse_NoteSh(blob, length, opts);\r\n}\r\n\r\n/* [MS-XLS] 2.4.168 */\r\nfunction parse_MergeCells(blob, length) {\r\n\tvar merges = [];\r\n\tvar cmcs = blob.read_shift(2);\r\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\r\n\treturn merges;\r\n}\r\nfunction write_MergeCells(merges) {\r\n\tvar o = new_buf(2 + merges.length * 8);\r\n\to.write_shift(2, merges.length);\r\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\r\nfunction parse_Obj(blob, length, opts) {\r\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\r\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\r\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\r\n\treturn { cmo: cmo, ft:fts };\r\n}\r\n/* from older spec */\r\nvar parse_BIFF5OT = {\r\n0x08: function(blob, length) {\r\n\tvar tgt = blob.l + length;\r\n\tblob.l += 10; // todo\r\n\tvar cf = blob.read_shift(2);\r\n\tblob.l += 4;\r\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\r\n\tblob.l += 2;\r\n\tblob.l += 2; //var grbit = blob.read_shift(2);\r\n\tblob.l += 4;\r\n\tvar cchName = blob.read_shift(1);\r\n\tblob.l += cchName; // TODO: stName\r\n\tblob.l = tgt; // TODO: fmla\r\n\treturn { fmt:cf };\r\n}\r\n};\r\n\r\nfunction parse_BIFF5Obj(blob, length, opts) {\r\n\tblob.l += 4; //var cnt = blob.read_shift(4);\r\n\tvar ot = blob.read_shift(2);\r\n\tvar id = blob.read_shift(2);\r\n\tvar grbit = blob.read_shift(2);\r\n\tblob.l += 2; //var colL = blob.read_shift(2);\r\n\tblob.l += 2; //var dxL = blob.read_shift(2);\r\n\tblob.l += 2; //var rwT = blob.read_shift(2);\r\n\tblob.l += 2; //var dyT = blob.read_shift(2);\r\n\tblob.l += 2; //var colR = blob.read_shift(2);\r\n\tblob.l += 2; //var dxR = blob.read_shift(2);\r\n\tblob.l += 2; //var rwB = blob.read_shift(2);\r\n\tblob.l += 2; //var dyB = blob.read_shift(2);\r\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\r\n\tblob.l += 6;\r\n\tlength -= 36;\r\n\tvar fts = [];\r\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\r\n\treturn { cmo: [id, ot, grbit], ft:fts };\r\n}\r\n\r\n/* [MS-XLS] 2.4.329 TODO: parse properly */\r\nfunction parse_TxO(blob, length, opts) {\r\n\tvar s = blob.l;\r\n\tvar texts = \"\";\r\ntry {\r\n\tblob.l += 4;\r\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\r\n\tvar controlInfo; // eslint-disable-line no-unused-vars\r\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\r\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\r\n\tvar cchText = blob.read_shift(2);\r\n\t/*var cbRuns = */blob.read_shift(2);\r\n\t/*var ifntEmpty = */parseuint16(blob, 2);\r\n\tvar len = blob.read_shift(2);\r\n\tblob.l += len;\r\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\r\n\r\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\r\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\r\n\t\tvar hdr = blob[blob.l];\r\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\r\n\t\ttexts += t;\r\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\r\n\t}\r\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\r\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\r\n\t}\r\n\r\n\tblob.l = s + length;\r\n\t/* [MS-XLS] 2.5.272 TxORuns */\r\n//\tvar rgTxoRuns = [];\r\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\r\n//\tvar cchText2 = blob.read_shift(2);\r\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\r\n//\tblob.l += 6;\r\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\r\n\treturn { t: texts };\r\n} catch(e) { blob.l = s + length; return { t: texts }; }\r\n}\r\n\r\n/* [MS-XLS] 2.4.140 */\r\nfunction parse_HLink(blob, length) {\r\n\tvar ref = parse_Ref8U(blob, 8);\r\n\tblob.l += 16; /* CLSID */\r\n\tvar hlink = parse_Hyperlink(blob, length-24);\r\n\treturn [ref, hlink];\r\n}\r\nfunction write_HLink(hl) {\r\n\tvar O = new_buf(24);\r\n\tvar ref = decode_cell(hl[0]);\r\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\r\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\r\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\r\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\r\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\r\n}\r\n\r\n\r\n/* [MS-XLS] 2.4.141 */\r\nfunction parse_HLinkTooltip(blob, length) {\r\n\tblob.read_shift(2);\r\n\tvar ref = parse_Ref8U(blob, 8);\r\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\r\n\twzTooltip = wzTooltip.replace(chr0,\"\");\r\n\treturn [ref, wzTooltip];\r\n}\r\nfunction write_HLinkTooltip(hl) {\r\n\tvar TT = hl[1].Tooltip;\r\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\r\n\tO.write_shift(2, 0x0800);\r\n\tvar ref = decode_cell(hl[0]);\r\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\r\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\r\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\r\n\tO.write_shift(2, 0);\r\n\treturn O;\r\n}\r\n\r\n/* [MS-XLS] 2.4.63 */\r\nfunction parse_Country(blob) {\r\n\tvar o = [0,0], d;\r\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\r\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\r\n\treturn o;\r\n}\r\nfunction write_Country(o) {\r\n\tif(!o) o = new_buf(4);\r\n\to.write_shift(2, 0x01);\r\n\to.write_shift(2, 0x01);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.50 ClrtClient */\r\nfunction parse_ClrtClient(blob) {\r\n\tvar ccv = blob.read_shift(2);\r\n\tvar o = [];\r\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.188 */\r\nfunction parse_Palette(blob) {\r\n\tvar ccv = blob.read_shift(2);\r\n\tvar o = [];\r\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.354 */\r\nfunction parse_XFCRC(blob) {\r\n\tblob.l += 2;\r\n\tvar o = {cxfs:0, crc:0};\r\n\to.cxfs = blob.read_shift(2);\r\n\to.crc = blob.read_shift(4);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.53 TODO: parse flags */\r\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\r\nfunction parse_ColInfo(blob, length, opts) {\r\n\tif(!opts.cellStyles) return parsenoop(blob, length);\r\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\r\n\tvar colFirst = blob.read_shift(w);\r\n\tvar colLast = blob.read_shift(w);\r\n\tvar coldx = blob.read_shift(w);\r\n\tvar ixfe = blob.read_shift(w);\r\n\tvar flags = blob.read_shift(2);\r\n\tif(w == 2) blob.l += 2;\r\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags});\r\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\r\n\treturn o;\r\n}\r\nfunction write_ColInfo(col, idx) {\r\n\tvar o = new_buf(12);\r\n\to.write_shift(2, idx);\r\n\to.write_shift(2, idx);\r\n\to.write_shift(2, col.width * 256);\r\n\to.write_shift(2, 0);\r\n\tvar f = 0;\r\n\tif(col.hidden) f |= 1;\r\n\to.write_shift(1, f);\r\n\tf = col.level || 0;\r\n\to.write_shift(1, f);\r\n\to.write_shift(2, 0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.257 */\r\nfunction parse_Setup(blob, length) {\r\n\tvar o = {};\r\n\tif(length < 32) return o;\r\n\tblob.l += 16;\r\n\to.header = parse_Xnum(blob, 8);\r\n\to.footer = parse_Xnum(blob, 8);\r\n\tblob.l += 2;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.4.261 */\r\nfunction parse_ShtProps(blob, length, opts) {\r\n\tvar def = {area:false};\r\n\tif(opts.biff != 5) { blob.l += length; return def; }\r\n\tvar d = blob.read_shift(1); blob.l += 3;\r\n\tif((d & 0x10)) def.area = true;\r\n\treturn def;\r\n}\r\n\r\n/* [MS-XLS] 2.4.241 */\r\nfunction write_RRTabId(n) {\r\n\tvar out = new_buf(2 * n);\r\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\r\n\treturn out;\r\n}\r\n\r\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\r\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\r\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\r\n\r\n/* --- Specific to versions before BIFF8 --- */\r\nfunction parse_ImData(blob) {\r\n\tvar cf = blob.read_shift(2);\r\n\tvar env = blob.read_shift(2);\r\n\tvar lcb = blob.read_shift(4);\r\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\r\n\tblob.l += lcb;\r\n\treturn o;\r\n}\r\n\r\n/* BIFF2_??? where ??? is the name from [XLS] */\r\nfunction parse_BIFF2STR(blob, length, opts) {\r\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\r\n\tvar cell = parse_XLSCell(blob, 6);\r\n\t++blob.l;\r\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\r\n\tcell.t = 'str';\r\n\tcell.val = str;\r\n\treturn cell;\r\n}\r\n\r\nfunction parse_BIFF2NUM(blob) {\r\n\tvar cell = parse_XLSCell(blob, 6);\r\n\t++blob.l;\r\n\tvar num = parse_Xnum(blob, 8);\r\n\tcell.t = 'n';\r\n\tcell.val = num;\r\n\treturn cell;\r\n}\r\nfunction write_BIFF2NUM(r, c, val) {\r\n\tvar out = new_buf(15);\r\n\twrite_BIFF2Cell(out, r, c);\r\n\tout.write_shift(8, val, 'f');\r\n\treturn out;\r\n}\r\n\r\nfunction parse_BIFF2INT(blob) {\r\n\tvar cell = parse_XLSCell(blob, 6);\r\n\t++blob.l;\r\n\tvar num = blob.read_shift(2);\r\n\tcell.t = 'n';\r\n\tcell.val = num;\r\n\treturn cell;\r\n}\r\nfunction write_BIFF2INT(r, c, val) {\r\n\tvar out = new_buf(9);\r\n\twrite_BIFF2Cell(out, r, c);\r\n\tout.write_shift(2, val);\r\n\treturn out;\r\n}\r\n\r\nfunction parse_BIFF2STRING(blob) {\r\n\tvar cch = blob.read_shift(1);\r\n\tif(cch === 0) { blob.l++; return \"\"; }\r\n\treturn blob.read_shift(cch, 'sbcs-cont');\r\n}\r\n\r\n/* TODO: convert to BIFF8 font struct */\r\nfunction parse_BIFF2FONTXTRA(blob, length) {\r\n\tblob.l += 6; // unknown\r\n\tblob.l += 2; // font weight \"bls\"\r\n\tblob.l += 1; // charset\r\n\tblob.l += 3; // unknown\r\n\tblob.l += 1; // font family\r\n\tblob.l += length - 13;\r\n}\r\n\r\n/* TODO: parse rich text runs */\r\nfunction parse_RString(blob, length, opts) {\r\n\tvar end = blob.l + length;\r\n\tvar cell = parse_XLSCell(blob, 6);\r\n\tvar cch = blob.read_shift(2);\r\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\r\n\tblob.l = end;\r\n\tcell.t = 'str';\r\n\tcell.val = str;\r\n\treturn cell;\r\n}\r\n/* from js-harb (C) 2014-present SheetJS */\r\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\r\nvar DBF = (function() {\r\nvar dbf_codepage_map = {\r\n\t/* Code Pages Supported by Visual FoxPro */\r\n0x01: 437, 0x02: 850,\r\n0x03: 1252, 0x04: 10000,\r\n0x64: 852, 0x65: 866,\r\n0x66: 865, 0x67: 861,\r\n0x68: 895, 0x69: 620,\r\n0x6A: 737, 0x6B: 857,\r\n0x78: 950, 0x79: 949,\r\n0x7A: 936, 0x7B: 932,\r\n0x7C: 874, 0x7D: 1255,\r\n0x7E: 1256, 0x96: 10007,\r\n0x97: 10029, 0x98: 10006,\r\n0xC8: 1250, 0xC9: 1251,\r\n0xCA: 1254, 0xCB: 1253,\r\n\r\n\t/* shapefile DBF extension */\r\n0x00: 20127, 0x08: 865,\r\n0x09: 437, 0x0A: 850,\r\n0x0B: 437, 0x0D: 437,\r\n0x0E: 850, 0x0F: 437,\r\n0x10: 850, 0x11: 437,\r\n0x12: 850, 0x13: 932,\r\n0x14: 850, 0x15: 437,\r\n0x16: 850, 0x17: 865,\r\n0x18: 437, 0x19: 437,\r\n0x1A: 850, 0x1B: 437,\r\n0x1C: 863, 0x1D: 850,\r\n0x1F: 852, 0x22: 852,\r\n0x23: 852, 0x24: 860,\r\n0x25: 850, 0x26: 866,\r\n0x37: 850, 0x40: 852,\r\n0x4D: 936, 0x4E: 949,\r\n0x4F: 950, 0x50: 874,\r\n0x57: 1252, 0x58: 1252,\r\n0x59: 1252, 0x6C: 863,\r\n0x86: 737, 0x87: 852,\r\n0x88: 857, 0xCC: 1257,\r\n\r\n0xFF: 16969\r\n};\r\nvar dbf_reverse_map = evert({\r\n0x01: 437, 0x02: 850,\r\n0x03: 1252, 0x04: 10000,\r\n0x64: 852, 0x65: 866,\r\n0x66: 865, 0x67: 861,\r\n0x68: 895, 0x69: 620,\r\n0x6A: 737, 0x6B: 857,\r\n0x78: 950, 0x79: 949,\r\n0x7A: 936, 0x7B: 932,\r\n0x7C: 874, 0x7D: 1255,\r\n0x7E: 1256, 0x96: 10007,\r\n0x97: 10029, 0x98: 10006,\r\n0xC8: 1250, 0xC9: 1251,\r\n0xCA: 1254, 0xCB: 1253,\r\n0x00: 20127\r\n});\r\n/* TODO: find an actual specification */\r\nfunction dbf_to_aoa(buf, opts) {\r\n\tvar out = [];\r\n\tvar d = (new_raw_buf(1));\r\n\tswitch(opts.type) {\r\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\r\n\t\tcase 'binary': d = s2a(buf); break;\r\n\t\tcase 'buffer':\r\n\t\tcase 'array': d = buf; break;\r\n\t}\r\n\tprep_blob(d, 0);\r\n\r\n\t/* header */\r\n\tvar ft = d.read_shift(1);\r\n\tvar memo = !!(ft & 0x88);\r\n\tvar vfp = false, l7 = false;\r\n\tswitch(ft) {\r\n\t\tcase 0x02: break; // dBASE II\r\n\t\tcase 0x03: break; // dBASE III\r\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\r\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\r\n\t\t// 0x43 dBASE IV SQL table files\r\n\t\t// 0x63 dBASE IV SQL system files\r\n\t\tcase 0x83: break; // dBASE III with memo\r\n\t\tcase 0x8B: break; // dBASE IV with memo\r\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\r\n\t\t// case 0xCB dBASE IV SQL table files with memo\r\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\r\n\t\t// case 0xFB FoxBASE\r\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\r\n\t}\r\n\r\n\tvar nrow = 0, fpos = 0x0209;\r\n\tif(ft == 0x02) nrow = d.read_shift(2);\r\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\r\n\tif(ft != 0x02) nrow = d.read_shift(4);\r\n\tif(nrow > 1048576) nrow = 1e6;\r\n\r\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\r\n\tvar rlen = d.read_shift(2); // record length\r\n\r\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\r\n\tif(ft != 0x02) { // 20 reserved bytes\r\n\t\td.l+=16;\r\n\t\t/*flags = */d.read_shift(1);\r\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\r\n\r\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\r\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\r\n\t\td.l+=1;\r\n\r\n\t\td.l+=2;\r\n\t}\r\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\r\n\r\nvar fields = [], field = ({});\r\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\r\n\tvar ww = l7 ? 32 : 11;\r\n\twhile(d.l < hend && d[d.l] != 0x0d) {\r\n\t\tfield = ({});\r\n\t\tfield.name = (typeof $cptable !== \"undefined\" ? $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)) : a2s(d.slice(d.l, d.l + ww))).replace(/[\\u0000\\r\\n].*$/g,\"\");\r\n\t\td.l += ww;\r\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\r\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\r\n\t\tfield.len = d.read_shift(1);\r\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\r\n\t\tfield.dec = d.read_shift(1);\r\n\t\tif(field.name.length) fields.push(field);\r\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\r\n\t\tswitch(field.type) {\r\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\r\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\r\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\r\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\r\n\t\t\t\tbreak;\r\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\r\n\t\t\tcase '0': // _NullFlags (VFP only)\r\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\r\n\t\t\tcase 'C': // Character (dBASE II)\r\n\t\t\tcase 'D': // Date (dBASE III)\r\n\t\t\tcase 'F': // Float (dBASE IV)\r\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\r\n\t\t\tcase 'L': // Logical (dBASE II)\r\n\t\t\tcase 'M': // Memo (dBASE III)\r\n\t\t\tcase 'N': // Number (dBASE II)\r\n\t\t\tcase 'O': // Double (dBASE L7 only)\r\n\t\t\tcase 'T': // Datetime (VFP only)\r\n\t\t\tcase 'Y': // Currency (VFP only)\r\n\t\t\t\tbreak;\r\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\r\n\t\t}\r\n\t}\r\n\r\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\r\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\r\n\td.l = fpos;\r\n\r\n\t/* data */\r\n\tvar R = 0, C = 0;\r\n\tout[0] = [];\r\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\r\n\twhile(nrow-- > 0) {\r\n\t\tif(d[d.l] === 0x2A) {\r\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\r\n\t\t\td.l+=rlen;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\t++d.l;\r\n\t\tout[++R] = []; C = 0;\r\n\t\tfor(C = 0; C != fields.length; ++C) {\r\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\r\n\t\t\tprep_blob(dd, 0);\r\n\t\t\tvar s = typeof $cptable !== \"undefined\" ? $cptable.utils.decode(current_cp, dd) : a2s(dd);\r\n\t\t\tswitch(fields[C].type) {\r\n\t\t\t\tcase 'C':\r\n\t\t\t\t\t// NOTE: it is conventional to write ' / / ' for empty dates\r\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'D':\r\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\r\n\t\t\t\t\telse out[R][C] = s;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\r\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\r\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\r\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\r\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\r\n\t\t\t\t\tcase '': case '?': break;\r\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\r\n\t\t\t\t\t} break;\r\n\t\t\t\tcase 'M': /* TODO: handle memo files */\r\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\r\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'N':\r\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\r\n\t\t\t\t\t// NOTE: dBASE II interprets \" . \" as 0\r\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\r\n\t\t\t\tcase '@':\r\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\r\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\r\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\r\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\r\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\r\n\t\t\t\t\t/* falls through */\r\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\r\n\t\t\t\tcase '0':\r\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\r\n\t\t\t\t\t/* falls through */\r\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\r\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\r\n\topts.DBF = fields;\r\n\treturn out;\r\n}\r\n\r\nfunction dbf_to_sheet(buf, opts) {\r\n\tvar o = opts || {};\r\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\r\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\r\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\r\n\t\twch: field.len,\r\n\t\tDBF: field\r\n\t};});\r\n\tdelete o.DBF;\r\n\treturn ws;\r\n}\r\n\r\nfunction dbf_to_workbook(buf, opts) {\r\n\ttry {\r\n\t\tvar o = sheet_to_workbook(dbf_to_sheet(buf, opts), opts);\r\n\t\to.bookType = \"dbf\";\r\n\t\treturn o;\r\n\t}\r\n\tcatch(e) { if(opts && opts.WTF) throw e; }\r\n\treturn ({SheetNames:[],Sheets:{}});\r\n}\r\n\r\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\r\nfunction sheet_to_dbf(ws, opts) {\r\n\tvar o = opts || {};\r\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\r\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\r\n\tvar ba = buf_array();\r\n\tvar aoa = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\r\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\r\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\r\n\tfor(i = 0; i < headers.length; ++i) {\r\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\r\n\t\tif(headers[i] == null) continue;\r\n\t\t++hcnt;\r\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\r\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\r\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\r\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\r\n\t}\r\n\tvar range = safe_decode_range(ws['!ref']);\r\n\tvar coltypes = [];\r\n\tvar colwidths = [];\r\n\tvar coldecimals = [];\r\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\r\n\t\tvar guess = '', _guess = '', maxlen = 0;\r\n\t\tvar col = [];\r\n\t\tfor(j=0; j < data.length; ++j) {\r\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\r\n\t\t}\r\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\r\n\t\tfor(j = 0; j < col.length; ++j) {\r\n\t\t\tswitch(typeof col[j]) {\r\n\t\t\t\t/* TODO: check if L2 compat is desired */\r\n\t\t\t\tcase 'number': _guess = 'B'; break;\r\n\t\t\t\tcase 'string': _guess = 'C'; break;\r\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\r\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\r\n\t\t\t\tdefault: _guess = 'C';\r\n\t\t\t}\r\n\t\t\tmaxlen = Math.max(maxlen, String(col[j]).length);\r\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\r\n\t\t\t//if(guess == 'C') break;\r\n\t\t}\r\n\t\tif(maxlen > 250) maxlen = 250;\r\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\r\n\t\t/* TODO: more fine grained control over DBF type resolution */\r\n\t\tif(_guess == 'C') {\r\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\r\n\t\t}\r\n\t\tif(guess == 'B' && _guess == 'N') {\r\n\t\t\tguess = 'N';\r\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\r\n\t\t\tmaxlen = cols[i].DBF.len;\r\n\t\t}\r\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\r\n\t\trlen += colwidths[i];\r\n\t\tcoltypes[i] = guess;\r\n\t}\r\n\r\n\tvar h = ba.next(32);\r\n\th.write_shift(4, 0x13021130);\r\n\th.write_shift(4, data.length);\r\n\th.write_shift(2, 296 + 32 * hcnt);\r\n\th.write_shift(2, rlen);\r\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\r\n\th.write_shift(4, 0x00000000 | ((+dbf_reverse_map[current_ansi] || 0x03)<<8));\r\n\r\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\r\n\t\tif(headers[i] == null) continue;\r\n\t\tvar hf = ba.next(32);\r\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\r\n\t\thf.write_shift(1, _f, \"sbcs\");\r\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\r\n\t\thf.write_shift(4, j);\r\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\r\n\t\thf.write_shift(1, coldecimals[i] || 0);\r\n\t\thf.write_shift(1, 0x02);\r\n\t\thf.write_shift(4, 0);\r\n\t\thf.write_shift(1, 0);\r\n\t\thf.write_shift(4, 0);\r\n\t\thf.write_shift(4, 0);\r\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\r\n\t}\r\n\r\n\tvar hb = ba.next(264);\r\n\thb.write_shift(4, 0x0000000D);\r\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\r\n\tfor(i=0; i < data.length; ++i) {\r\n\t\tvar rout = ba.next(rlen);\r\n\t\trout.write_shift(1, 0);\r\n\t\tfor(j=0; j\":190, \"?\":191, \"{\":223\r\n\t});\r\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\r\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\r\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\r\n\tsylk_escapes[\"|\"] = 254;\r\n\t/* https://oss.sheetjs.com/notes/sylk/ for more details */\r\n\tfunction sylk_to_aoa(d, opts) {\r\n\t\tswitch(opts.type) {\r\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\r\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\r\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\r\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\r\n\t\t}\r\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\r\n\t}\r\n\tfunction sylk_to_aoa_str(str, opts) {\r\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr = [];\r\n\t\tvar formats = [];\r\n\t\tvar next_cell_format = null;\r\n\t\tvar sht = {}, rowinfo = [], colinfo = [], cw = [];\r\n\t\tvar Mval = 0, j;\r\n\t\tvar wb = { Workbook: { WBProps: {}, Names: [] } };\r\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\r\n\t\tfor (; ri !== records.length; ++ri) {\r\n\t\t\tMval = 0;\r\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\r\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\r\n\t\t\tvar RT=record[0], val;\r\n\t\t\tif(rstr.length > 0) switch(RT) {\r\n\t\t\tcase 'ID': break; /* header */\r\n\t\t\tcase 'E': break; /* EOF */\r\n\t\t\tcase 'B': break; /* dimensions */\r\n\t\t\tcase 'O': /* workbook options */\r\n\t\t\tfor(rj=1; rj= 5 or < 0\r\n\t\t\t\t\tif(d1904 >= 1 && d1904 <= 4) wb.Workbook.WBProps.date1904 = true;\r\n\t\t\t\t} break;\r\n\t\t\t} break;\r\n\t\t\tcase 'W': break; /* window */\r\n\t\t\tcase 'P':\r\n\t\t\t\tswitch(record[1].charAt(0)){\r\n\t\t\t\t\tcase 'P': formats.push(rstr.slice(3).replace(/;;/g, \";\")); break;\r\n\t\t\t\t} break;\r\n\t\t\tcase 'NN': { /* defined name */\r\n\t\t\t\tvar nn = {Sheet: 0};\r\n\t\t\t\tfor(rj=1; rj -1 && arr[_R][_C];\r\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\r\n\t\t\t\tformula = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\r\n\t\t\t}\r\n\t\t\tif(formula) {\r\n\t\t\t\tif(!arr[R][C]) arr[R][C] = { t: 'n', f: formula };\r\n\t\t\t\telse arr[R][C].f = formula;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase 'F': /* Format */\r\n\t\t\tvar F_seen = 0;\r\n\t\t\tfor(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\r\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t// case 'K': // ??\r\n\t\t\t\t// case 'E': // ??\r\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\r\n\t\t\t}\r\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\r\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\r\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\r\n\t\tcolinfo.forEach(function(col) { process_col(col); });\r\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\r\n\t\treturn [arr, sht, wb];\r\n\t}\r\n\r\n\tfunction sylk_to_workbook(d, opts) {\r\n\t\tvar aoasht = sylk_to_aoa(d, opts);\r\n\t\tvar aoa = aoasht[0], ws = aoasht[1], wb = aoasht[2];\r\n\t\tvar _opts = dup(opts); _opts.date1904 = (((wb||{}).Workbook || {}).WBProps || {}).date1904;\r\n\t\tvar o = aoa_to_sheet(aoa, _opts);\r\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\r\n\t\tvar outwb = sheet_to_workbook(o, opts);\r\n\t\tkeys(wb).forEach(function(k) { outwb[k] = wb[k]; });\r\n\t\toutwb.bookType = \"sylk\";\r\n\t\treturn outwb;\r\n\t}\r\n\r\n\tfunction write_ws_cell_sylk(cell, ws, R, C) {\r\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\r\n\t\tswitch(cell.t) {\r\n\t\t\tcase 'n':\r\n\t\t\t\to += (cell.v||0);\r\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\r\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\r\n\t\t\tcase 'e': o += cell.w || cell.v; break;\r\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\r\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\r\n\t\t}\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction write_ws_cols_sylk(out, cols) {\r\n\t\tcols.forEach(function(col, i) {\r\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\r\n\t\t\tif(col.hidden) rec += \"0\";\r\n\t\t\telse {\r\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\r\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\r\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\r\n\t\t\t}\r\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction write_ws_rows_sylk(out, rows) {\r\n\t\trows.forEach(function(row, i) {\r\n\t\t\tvar rec = \"F;\";\r\n\t\t\tif(row.hidden) rec += \"M0;\";\r\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\r\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\r\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\r\n\t\t});\r\n\t}\r\n\r\n\tfunction sheet_to_sylk(ws, opts, wb) {\r\n\t\tvar preamble = [\"ID;PSheetJS;N;E\"], o = [];\r\n\t\tvar r = safe_decode_range(ws['!ref']), cell;\r\n\t\tvar dense = Array.isArray(ws);\r\n\t\tvar RS = \"\\r\\n\";\r\n\t\tvar d1904 = (((wb||{}).Workbook||{}).WBProps||{}).date1904;\r\n\r\n\t\tpreamble.push(\"P;PGeneral\");\r\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\r\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\r\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\r\n\r\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\r\n\t\tpreamble.push(\"O;L;D;B\" + (d1904 ? \";V4\" : \"\") + \";K47;G100 0.001\");\r\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\r\n\t\t\tvar p = [];\r\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\r\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\r\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\r\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\r\n\t\t\t\tp.push(write_ws_cell_sylk(cell, ws, R, C, opts)); // TODO: pass date1904 info\r\n\t\t\t}\r\n\t\t\to.push(p.join(RS));\r\n\t\t}\r\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\r\n\t}\r\n\r\n\treturn {\r\n\t\tto_workbook: sylk_to_workbook,\r\n\t\tfrom_sheet: sheet_to_sylk\r\n\t};\r\n})();\r\n\r\nvar DIF = (function() {\r\n\tfunction dif_to_aoa(d, opts) {\r\n\t\tswitch(opts.type) {\r\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\r\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\r\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\r\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\r\n\t\t}\r\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\r\n\t}\r\n\tfunction dif_to_aoa_str(str, opts) {\r\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr = [];\r\n\t\tfor (; ri !== records.length; ++ri) {\r\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\r\n\t\t\tif (R < 0) continue;\r\n\t\t\tvar metadata = records[ri].trim().split(\",\");\r\n\t\t\tvar type = metadata[0], value = metadata[1];\r\n\t\t\t++ri;\r\n\t\t\tvar data = records[ri] || \"\";\r\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\r\n\t\t\tdata = data.trim();\r\n\t\t\tswitch (+type) {\r\n\t\t\t\tcase -1:\r\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\r\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0:\r\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\r\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\r\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\r\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\r\n\t\t\t\t\telse arr[R][C] = value;\r\n\t\t\t\t\t++C; break;\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\tdata = data.slice(1,data.length-1);\r\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\r\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\r\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif (data === 'EOD') break;\r\n\t\t}\r\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\r\n\t\treturn arr;\r\n\t}\r\n\r\n\tfunction dif_to_sheet(str, opts) { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\r\n\tfunction dif_to_workbook(str, opts) {\r\n\t\tvar o = sheet_to_workbook(dif_to_sheet(str, opts), opts);\r\n\t\to.bookType = \"dif\";\r\n\t\treturn o;\r\n\t}\r\n\r\n\tvar sheet_to_dif = (function() {\r\n\t\tvar push_field = function pf(o, topic, v, n, s) {\r\n\t\t\to.push(topic);\r\n\t\t\to.push(v + \",\" + n);\r\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\r\n\t\t};\r\n\t\tvar push_value = function po(o, type, v, s) {\r\n\t\t\to.push(type + \",\" + v);\r\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\r\n\t\t};\r\n\t\treturn function sheet_to_dif(ws) {\r\n\t\t\tvar o = [];\r\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell;\r\n\t\t\tvar dense = Array.isArray(ws);\r\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\r\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\r\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\r\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\r\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\r\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\r\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\r\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\r\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\r\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\r\n\t\t\t\t\tswitch(cell.t) {\r\n\t\t\t\t\t\tcase 'n':\r\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\r\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\r\n\t\t\t\t\t\t\tif(val == null) {\r\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\r\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'b':\r\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 's':\r\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'd':\r\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\r\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\r\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tpush_value(o, -1, 0, \"EOD\");\r\n\t\t\tvar RS = \"\\r\\n\";\r\n\t\t\tvar oo = o.join(RS);\r\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\r\n\t\t\treturn oo;\r\n\t\t};\r\n\t})();\r\n\treturn {\r\n\t\tto_workbook: dif_to_workbook,\r\n\t\tto_sheet: dif_to_sheet,\r\n\t\tfrom_sheet: sheet_to_dif\r\n\t};\r\n})();\r\n\r\nvar ETH = (function() {\r\n\tfunction decode(s) { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\r\n\tfunction encode(s) { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\r\n\r\n\tfunction eth_to_aoa(str, opts) {\r\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr = [];\r\n\t\tfor (; ri !== records.length; ++ri) {\r\n\t\t\tvar record = records[ri].trim().split(\":\");\r\n\t\t\tif(record[0] !== 'cell') continue;\r\n\t\t\tvar addr = decode_cell(record[1]);\r\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\r\n\t\t\tR = addr.r; C = addr.c;\r\n\t\t\tswitch(record[2]) {\r\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\r\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\r\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\r\n\t\t\t\t\t/* falls through */\r\n\t\t\t\tcase 'vtc':\r\n\t\t\t\t\tswitch(record[3]) {\r\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\r\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\r\n\t\treturn arr;\r\n\t}\r\n\r\n\tfunction eth_to_sheet(d, opts) { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\r\n\tfunction eth_to_workbook(d, opts) { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\r\n\r\n\tvar header = [\r\n\t\t\"socialcalc:version:1.5\",\r\n\t\t\"MIME-Version: 1.0\",\r\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\r\n\t].join(\"\\n\");\r\n\r\n\tvar sep = [\r\n\t\t\"--SocialCalcSpreadsheetControlSave\",\r\n\t\t\"Content-type: text/plain; charset=UTF-8\"\r\n\t].join(\"\\n\") + \"\\n\";\r\n\r\n\t/* TODO: the other parts */\r\n\tvar meta = [\r\n\t\t\"# SocialCalc Spreadsheet Control Save\",\r\n\t\t\"part:sheet\"\r\n\t].join(\"\\n\");\r\n\r\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\r\n\r\n\tfunction sheet_to_eth_data(ws) {\r\n\t\tif(!ws || !ws['!ref']) return \"\";\r\n\t\tvar o = [], oo = [], cell, coord = \"\";\r\n\t\tvar r = decode_range(ws['!ref']);\r\n\t\tvar dense = Array.isArray(ws);\r\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\r\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\r\n\t\t\t\tcoord = encode_cell({r:R,c:C});\r\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\r\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\r\n\t\t\t\too = [\"cell\", coord, 't'];\r\n\t\t\t\tswitch(cell.t) {\r\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\r\n\t\t\t\t\tcase 'n':\r\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\r\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'b':\r\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\r\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'd':\r\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\r\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\r\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'e': continue;\r\n\t\t\t\t}\r\n\t\t\t\to.push(oo.join(\":\"));\r\n\t\t\t}\r\n\t\t}\r\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\r\n\t\to.push(\"valueformat:1:text-wiki\");\r\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\r\n\t\treturn o.join(\"\\n\");\r\n\t}\r\n\r\n\tfunction sheet_to_eth(ws) {\r\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\r\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\r\n\t}\r\n\r\n\treturn {\r\n\t\tto_workbook: eth_to_workbook,\r\n\t\tto_sheet: eth_to_sheet,\r\n\t\tfrom_sheet: sheet_to_eth\r\n\t};\r\n})();\r\n\r\nvar PRN = (function() {\r\n\tfunction set_text_arr(data, arr, R, C, o) {\r\n\t\tif(o.raw) arr[R][C] = data;\r\n\t\telse if(data === \"\"){/* empty */}\r\n\t\telse if(data === 'TRUE') arr[R][C] = true;\r\n\t\telse if(data === 'FALSE') arr[R][C] = false;\r\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\r\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\r\n\t\telse arr[R][C] = data;\r\n\t}\r\n\r\n\tfunction prn_to_aoa_str(f, opts) {\r\n\t\tvar o = opts || {};\r\n\t\tvar arr = ([]);\r\n\t\tif(!f || f.length === 0) return arr;\r\n\t\tvar lines = f.split(/[\\r\\n]/);\r\n\t\tvar L = lines.length - 1;\r\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\r\n\t\tvar start = 10, idx = 0;\r\n\t\tvar R = 0;\r\n\t\tfor(; R <= L; ++R) {\r\n\t\t\tidx = lines[R].indexOf(\" \");\r\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\r\n\t\t\tstart = Math.max(start, idx);\r\n\t\t}\r\n\t\tfor(R = 0; R <= L; ++R) {\r\n\t\t\tarr[R] = [];\r\n\t\t\t/* TODO: confirm that widths are always 10 */\r\n\t\t\tvar C = 0;\r\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\r\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\r\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\r\n\t\t}\r\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\r\n\t\treturn arr;\r\n\t}\r\n\r\n\t// List of accepted CSV separators\r\n\tvar guess_seps = {\r\n0x2C: ',',\r\n0x09: \"\\t\",\r\n0x3B: ';',\r\n0x7C: '|'\r\n\t};\r\n\r\n\t// CSV separator weights to be used in case of equal numbers\r\n\tvar guess_sep_weights = {\r\n0x2C: 3,\r\n0x09: 2,\r\n0x3B: 1,\r\n0x7C: 0\r\n\t};\r\n\r\n\tfunction guess_sep(str) {\r\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\r\n\t\tfor(;end < str.length;++end) {\r\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\r\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\r\n\t\t}\r\n\r\n\t\tcc = [];\r\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\r\n\t\t\tcc.push([ cnt[end], end ]);\r\n\t\t}\r\n\r\n\t\tif ( !cc.length ) {\r\n\t\t\tcnt = guess_sep_weights;\r\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\r\n\t\t\t\tcc.push([ cnt[end], end ]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\r\n\r\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\r\n\t}\r\n\r\n\tfunction dsv_to_sheet_str(str, opts) {\r\n\t\tvar o = opts || {};\r\n\t\tvar sep = \"\";\r\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\r\n\t\tvar ws = o.dense ? ([]) : ({});\r\n\t\tvar range = ({s: {c:0, r:0}, e: {c:0, r:0}});\r\n\r\n\t\tif(str.slice(0,4) == \"sep=\") {\r\n\t\t\t// If the line ends in \\r\\n\r\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\r\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\r\n\t\t\t}\r\n\t\t\t// If line ends in \\r OR \\n\r\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\r\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\r\n\t\t\t}\r\n\t\t\telse sep = guess_sep(str.slice(0,1024));\r\n\t\t}\r\n\t\telse if(o && o.FS) sep = o.FS;\r\n\t\telse sep = guess_sep(str.slice(0,1024));\r\n\t\tvar R = 0, C = 0, v = 0;\r\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\r\n\t\tvar _re = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\r\n\t\tfunction finish_cell() {\r\n\t\t\tvar s = str.slice(start, end); if(s.slice(-1) == \"\\r\") s = s.slice(0, -1);\r\n\t\t\tvar cell = ({});\r\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\r\n\t\t\tif(s.length === 0) cell.t = 'z';\r\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\r\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\r\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\r\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\r\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\r\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\r\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\r\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\r\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\r\n\t\t\telse if(!isNaN((v = fuzzydate(s)).getDate()) || _re && s.match(_re)) {\r\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\r\n\t\t\t\tvar k = 0;\r\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; v = parseDate(s, k); }\r\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = v; }\r\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(v); }\r\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\r\n\t\t\t\tif(!o.cellNF) delete cell.z;\r\n\t\t\t} else {\r\n\t\t\t\tcell.t = 's';\r\n\t\t\t\tcell.v = s;\r\n\t\t\t}\r\n\t\t\tif(cell.t == 'z'){}\r\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\r\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\r\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\r\n\t\t\tif(range.e.c < C) range.e.c = C;\r\n\t\t\tif(range.e.r < R) range.e.r = R;\r\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\r\n\t\t}\r\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\r\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\r\n\t\t\tcase 0x0d:\r\n\t\t\t\tif(instr) break;\r\n\t\t\t\tif(str.charCodeAt(end+1) == 0x0a) ++end;\r\n\t\t\t\t/* falls through */\r\n\t\t\tcase sepcc: case 0x0a: if(!instr && finish_cell()) break outer; break;\r\n\t\t\tdefault: break;\r\n\t\t}\r\n\t\tif(end - start > 0) finish_cell();\r\n\r\n\t\tws['!ref'] = encode_range(range);\r\n\t\treturn ws;\r\n\t}\r\n\r\n\tfunction prn_to_sheet_str(str, opts) {\r\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\r\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\r\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\r\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\r\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\r\n\t}\r\n\r\n\tfunction prn_to_sheet(d, opts) {\r\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\r\n\t\tswitch(opts.type) {\r\n\t\t\tcase 'base64': str = Base64_decode(d); break;\r\n\t\t\tcase 'binary': str = d; break;\r\n\t\t\tcase 'buffer':\r\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\r\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\r\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'array': str = cc2str(d); break;\r\n\t\t\tcase 'string': str = d; break;\r\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\r\n\t\t}\r\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\r\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\r\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\r\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\r\n\t\treturn prn_to_sheet_str(str, opts);\r\n\t}\r\n\r\n\tfunction prn_to_workbook(d, opts) { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\r\n\r\n\tfunction sheet_to_prn(ws) {\r\n\t\tvar o = [];\r\n\t\tvar r = safe_decode_range(ws['!ref']), cell;\r\n\t\tvar dense = Array.isArray(ws);\r\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\r\n\t\t\tvar oo = [];\r\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\r\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\r\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\r\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\" \"); continue; }\r\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\r\n\t\t\t\twhile(w.length < 10) w += \" \";\r\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\r\n\t\t\t}\r\n\t\t\to.push(oo.join(\"\"));\r\n\t\t}\r\n\t\treturn o.join(\"\\n\");\r\n\t}\r\n\r\n\treturn {\r\n\t\tto_workbook: prn_to_workbook,\r\n\t\tto_sheet: prn_to_sheet,\r\n\t\tfrom_sheet: sheet_to_prn\r\n\t};\r\n})();\r\n\r\n/* Excel defaults to SYLK but warns if data is not valid */\r\nfunction read_wb_ID(d, opts) {\r\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\r\n\ttry {\r\n\t\tvar out = SYLK.to_workbook(d, o);\r\n\t\to.WTF = OLD_WTF;\r\n\t\treturn out;\r\n\t} catch(e) {\r\n\t\to.WTF = OLD_WTF;\r\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\r\n\t\treturn PRN.to_workbook(d, opts);\r\n\t}\r\n}\r\n\r\nvar WK_ = (function() {\r\n\tfunction lotushopper(data, cb, opts) {\r\n\t\tif(!data) return;\r\n\t\tprep_blob(data, data.l || 0);\r\n\t\tvar Enum = opts.Enum || WK1Enum;\r\n\t\twhile(data.l < data.length) {\r\n\t\t\tvar RT = data.read_shift(2);\r\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\r\n\t\t\tvar length = data.read_shift(2);\r\n\t\t\tvar tgt = data.l + length;\r\n\t\t\tvar d = R.f && R.f(data, length, opts);\r\n\t\t\tdata.l = tgt;\r\n\t\t\tif(cb(d, R, RT)) return;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction lotus_to_workbook(d, opts) {\r\n\t\tswitch(opts.type) {\r\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\r\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\r\n\t\t\tcase 'buffer':\r\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\r\n\t\t}\r\n\t\tthrow \"Unsupported type \" + opts.type;\r\n\t}\r\n\r\n\tfunction lotus_to_workbook_buf(d, opts) {\r\n\t\tif(!d) return d;\r\n\t\tvar o = opts || {};\r\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\r\n\t\tvar s = ((o.dense ? [] : {})), n = \"Sheet1\", next_n = \"\", sidx = 0;\r\n\t\tvar sheets = {}, snames = [], realnames = [];\r\n\r\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\r\n\t\tvar sheetRows = o.sheetRows || 0;\r\n\r\n\t\tif(d[4] == 0x51 && d[5] == 0x50 && d[6] == 0x57) return qpw_to_workbook_buf(d, opts);\r\n\t\tif(d[2] == 0x00) {\r\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\r\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(d[2] == 0x02) {\r\n\t\t\to.Enum = WK1Enum;\r\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\r\n\t\t\t\tcase 0x00: /* BOF */\r\n\t\t\t\t\to.vers = val;\r\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0xFF: /* BOF (works 3+) */\r\n\t\t\t\t\to.vers = val;\r\n\t\t\t\t\to.works = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\r\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\r\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\r\n\t\t\t\tcase 0x0F: /* LABEL */\r\n\t\t\t\tcase 0x33: /* STRING */\r\n\t\t\t\t\tif((!o.qpro && !o.works || RT == 0x33) && val[1].v.charCodeAt(0) < 0x30) val[1].v = val[1].v.slice(1);\r\n\t\t\t\t\tif(o.works || o.works2) val[1].v = val[1].v.replace(/\\r\\n/g, \"\\n\");\r\n\t\t\t\t\t/* falls through */\r\n\t\t\t\tcase 0x0D: /* INTEGER */\r\n\t\t\t\tcase 0x0E: /* NUMBER */\r\n\t\t\t\tcase 0x10: /* FORMULA */\r\n\t\t\t\t\t/* TODO: actual translation of the format code */\r\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\r\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\r\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(o.qpro) {\r\n\t\t\t\t\t\tif(val[3] > sidx) {\r\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\r\n\t\t\t\t\t\t\tsheets[n] = s;\r\n\t\t\t\t\t\t\tsnames.push(n);\r\n\t\t\t\t\t\t\ts = (o.dense ? [] : {});\r\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\r\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\r\n\t\t\t\t\tif(tmpcell) {\r\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\r\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\r\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(o.dense) {\r\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\r\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\r\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x5405: o.works2 = true; break;\r\n\t\t\t\tdefault:\r\n\t\t\t}}, o);\r\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\r\n\t\t\to.Enum = WK3Enum;\r\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\r\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\r\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\r\n\t\t\t\tcase 0x16: /* LABEL16 */\r\n\t\t\t\t\tif(val[1].v.charCodeAt(0) < 0x30) val[1].v = val[1].v.slice(1);\r\n\t\t\t\t\t// TODO: R9 appears to encode control codes this way -- verify against other versions\r\n\t\t\t\t\tval[1].v = val[1].v.replace(/\\x0F./g, function($$) { return String.fromCharCode($$.charCodeAt(1) - 0x20); }).replace(/\\r\\n/g, \"\\n\");\r\n\t\t\t\t\t/* falls through */\r\n\t\t\t\tcase 0x17: /* NUMBER17 */\r\n\t\t\t\tcase 0x18: /* NUMBER18 */\r\n\t\t\t\tcase 0x19: /* FORMULA19 */\r\n\t\t\t\tcase 0x25: /* NUMBER25 */\r\n\t\t\t\tcase 0x27: /* NUMBER27 */\r\n\t\t\t\tcase 0x28: /* FORMULA28 */\r\n\t\t\t\t\tif(val[3] > sidx) {\r\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\r\n\t\t\t\t\t\tsheets[n] = s;\r\n\t\t\t\t\t\tsnames.push(n);\r\n\t\t\t\t\t\ts = (o.dense ? [] : {});\r\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\r\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\r\n\t\t\t\t\tif(o.dense) {\r\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\r\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\r\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\r\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\r\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x1B: /* XFORMAT */\r\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\r\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\r\n\t\t\t\tdefault: break;\r\n\t\t\t}}, o);\r\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\r\n\t\ts[\"!ref\"] = encode_range(refguess);\r\n\t\tsheets[next_n || n] = s;\r\n\t\tsnames.push(next_n || n);\r\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\r\n\t\tvar osheets = {}, rnames = [];\r\n\t\t/* TODO: verify no collisions */\r\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\r\n\t\t\trnames.push(realnames[i] || snames[i]);\r\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\r\n\t\t} else {\r\n\t\t\trnames.push(realnames[i]);\r\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\r\n\t\t}\r\n\t\treturn { SheetNames: rnames, Sheets: osheets };\r\n\t}\r\n\r\n\tfunction sheet_to_wk1(ws, opts) {\r\n\t\tvar o = opts || {};\r\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\r\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\r\n\t\tvar ba = buf_array();\r\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\r\n\t\tvar dense = Array.isArray(ws);\r\n\t\tvar cols = [];\r\n\r\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\r\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\r\n\t\tvar max_R = Math.min(range.e.r, 8191);\r\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\r\n\t\t\tvar rr = encode_row(R);\r\n\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\r\n\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\r\n\t\t\t\tvar ref = cols[C] + rr;\r\n\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\r\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\r\n\t\t\t\t/* TODO: formula records */\r\n\t\t\t\tif(cell.t == \"n\") {\r\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\r\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar str = format_cell(cell);\r\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twrite_biff_rec(ba, 0x01);\r\n\t\treturn ba.end();\r\n\t}\r\n\r\n\tfunction book_to_wk3(wb, opts) {\r\n\t\tvar o = opts || {};\r\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\r\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\r\n\t\tvar ba = buf_array();\r\n\r\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\r\n\r\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\r\n\r\n\t\tvar wsidx = 0;\r\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\r\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\r\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\r\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\r\n\t\t\tvar dense = Array.isArray(ws);\r\n\t\t\tvar cols = [];\r\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\r\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\r\n\t\t\t\tvar rr = encode_row(R);\r\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\r\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\r\n\t\t\t\t\tvar ref = cols[C] + rr;\r\n\t\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\r\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\r\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\r\n\t\t\t\t\tif(cell.t == \"n\") {\r\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar str = format_cell(cell);\r\n\t\t\t\t\t\t/* TODO: max len? */\r\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t++wsidx;\r\n\t\t}\r\n\r\n\t\twrite_biff_rec(ba, 0x01);\r\n\t\treturn ba.end();\r\n\t}\r\n\r\n\r\n\tfunction write_BOF_WK1(v) {\r\n\t\tvar out = new_buf(2);\r\n\t\tout.write_shift(2, v);\r\n\t\treturn out;\r\n\t}\r\n\r\n\tfunction write_BOF_WK3(wb) {\r\n\t\tvar out = new_buf(26);\r\n\t\tout.write_shift(2, 0x1000);\r\n\t\tout.write_shift(2, 0x0004);\r\n\t\tout.write_shift(4, 0x0000);\r\n\t\tvar rows = 0, cols = 0, wscnt = 0;\r\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\r\n\t\t\tvar name = wb.SheetNames[i];\r\n\t\t\tvar ws = wb.Sheets[name];\r\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\r\n\t\t\t++wscnt;\r\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\r\n\t\t\tif(rows < range.e.r) rows = range.e.r;\r\n\t\t\tif(cols < range.e.c) cols = range.e.c;\r\n\t\t}\r\n\t\tif(rows > 8191) rows = 8191;\r\n\t\tout.write_shift(2, rows);\r\n\t\tout.write_shift(1, wscnt);\r\n\t\tout.write_shift(1, cols);\r\n\t\tout.write_shift(2, 0x00);\r\n\t\tout.write_shift(2, 0x00);\r\n\t\tout.write_shift(1, 0x01);\r\n\t\tout.write_shift(1, 0x02);\r\n\t\tout.write_shift(4, 0);\r\n\t\tout.write_shift(4, 0);\r\n\t\treturn out;\r\n\t}\r\n\r\n\tfunction parse_RANGE(blob, length, opts) {\r\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\r\n\t\tif(length == 8 && opts.qpro) {\r\n\t\t\to.s.c = blob.read_shift(1);\r\n\t\t\tblob.l++;\r\n\t\t\to.s.r = blob.read_shift(2);\r\n\t\t\to.e.c = blob.read_shift(1);\r\n\t\t\tblob.l++;\r\n\t\t\to.e.r = blob.read_shift(2);\r\n\t\t\treturn o;\r\n\t\t}\r\n\t\to.s.c = blob.read_shift(2);\r\n\t\to.s.r = blob.read_shift(2);\r\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\r\n\t\to.e.c = blob.read_shift(2);\r\n\t\to.e.r = blob.read_shift(2);\r\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\r\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\r\n\t\treturn o;\r\n\t}\r\n\tfunction write_RANGE(range) {\r\n\t\tvar out = new_buf(8);\r\n\t\tout.write_shift(2, range.s.c);\r\n\t\tout.write_shift(2, range.s.r);\r\n\t\tout.write_shift(2, range.e.c);\r\n\t\tout.write_shift(2, range.e.r);\r\n\t\treturn out;\r\n\t}\r\n\r\n\tfunction parse_cell(blob, length, opts) {\r\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\r\n\t\tif(opts.qpro && opts.vers != 0x5120) {\r\n\t\t\to[0].c = blob.read_shift(1);\r\n\t\t\to[3] = blob.read_shift(1);\r\n\t\t\to[0].r = blob.read_shift(2);\r\n\t\t\tblob.l+=2;\r\n\t\t} else if(opts.works) { // TODO: verify with more complex works3-4 examples\r\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\r\n\t\t\to[2] = blob.read_shift(2);\r\n\t\t} else {\r\n\t\t\to[2] = blob.read_shift(1);\r\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\r\n\t\t}\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_LABEL(blob, length, opts) {\r\n\t\tvar tgt = blob.l + length;\r\n\t\tvar o = parse_cell(blob, length, opts);\r\n\t\to[1].t = 's';\r\n\t\tif(opts.vers == 0x5120) {\r\n\t\t\tblob.l++;\r\n\t\t\tvar len = blob.read_shift(1);\r\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\r\n\t\t\treturn o;\r\n\t\t}\r\n\t\tif(opts.qpro) blob.l++;\r\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\r\n\t\treturn o;\r\n\t}\r\n\tfunction write_LABEL(R, C, s) {\r\n\t\t/* TODO: encoding */\r\n\t\tvar o = new_buf(7 + s.length);\r\n\t\to.write_shift(1, 0xFF);\r\n\t\to.write_shift(2, C);\r\n\t\to.write_shift(2, R);\r\n\t\to.write_shift(1, 0x27); // ??\r\n\t\tfor(var i = 0; i < o.length; ++i) {\r\n\t\t\tvar cc = s.charCodeAt(i);\r\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\r\n\t\t}\r\n\t\to.write_shift(1, 0);\r\n\t\treturn o;\r\n\t}\r\n\tfunction parse_STRING(blob, length, opts) {\r\n\t\tvar tgt = blob.l + length;\r\n\t\tvar o = parse_cell(blob, length, opts);\r\n\t\to[1].t = 's';\r\n\t\tif(opts.vers == 0x5120) {\r\n\t\t\tvar len = blob.read_shift(1);\r\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\r\n\t\t\treturn o;\r\n\t\t}\r\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_INTEGER(blob, length, opts) {\r\n\t\tvar o = parse_cell(blob, length, opts);\r\n\t\to[1].v = blob.read_shift(2, 'i');\r\n\t\treturn o;\r\n\t}\r\n\tfunction write_INTEGER(R, C, v) {\r\n\t\tvar o = new_buf(7);\r\n\t\to.write_shift(1, 0xFF);\r\n\t\to.write_shift(2, C);\r\n\t\to.write_shift(2, R);\r\n\t\to.write_shift(2, v, 'i');\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_NUMBER(blob, length, opts) {\r\n\t\tvar o = parse_cell(blob, length, opts);\r\n\t\to[1].v = blob.read_shift(8, 'f');\r\n\t\treturn o;\r\n\t}\r\n\tfunction write_NUMBER(R, C, v) {\r\n\t\tvar o = new_buf(13);\r\n\t\to.write_shift(1, 0xFF);\r\n\t\to.write_shift(2, C);\r\n\t\to.write_shift(2, R);\r\n\t\to.write_shift(8, v, 'f');\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_FORMULA(blob, length, opts) {\r\n\t\tvar tgt = blob.l + length;\r\n\t\tvar o = parse_cell(blob, length, opts);\r\n\t\t/* TODO: formula */\r\n\t\to[1].v = blob.read_shift(8, 'f');\r\n\t\tif(opts.qpro) blob.l = tgt;\r\n\t\telse {\r\n\t\t\tvar flen = blob.read_shift(2);\r\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\r\n\t\t\tblob.l += flen;\r\n\t\t}\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction wk1_parse_rc(B, V, col) {\r\n\t\tvar rel = V & 0x8000;\r\n\t\tV &= ~0x8000;\r\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\r\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\r\n\t}\r\n\t/* var oprec = [\r\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\r\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\r\n\t]; */\r\n\t/* TODO: flesh out */\r\n\tvar FuncTab = {\r\n\t\t0x1F: [\"NA\", 0],\r\n\t\t// 0x20: [\"ERR\", 0],\r\n\t\t0x21: [\"ABS\", 1],\r\n\t\t0x22: [\"TRUNC\", 1],\r\n\t\t0x23: [\"SQRT\", 1],\r\n\t\t0x24: [\"LOG\", 1],\r\n\t\t0x25: [\"LN\", 1],\r\n\t\t0x26: [\"PI\", 0],\r\n\t\t0x27: [\"SIN\", 1],\r\n\t\t0x28: [\"COS\", 1],\r\n\t\t0x29: [\"TAN\", 1],\r\n\t\t0x2A: [\"ATAN2\", 2],\r\n\t\t0x2B: [\"ATAN\", 1],\r\n\t\t0x2C: [\"ASIN\", 1],\r\n\t\t0x2D: [\"ACOS\", 1],\r\n\t\t0x2E: [\"EXP\", 1],\r\n\t\t0x2F: [\"MOD\", 2],\r\n\t\t// 0x30\r\n\t\t0x31: [\"ISNA\", 1],\r\n\t\t0x32: [\"ISERR\", 1],\r\n\t\t0x33: [\"FALSE\", 0],\r\n\t\t0x34: [\"TRUE\", 0],\r\n\t\t0x35: [\"RAND\", 0],\r\n\t\t// 0x36 DATE\r\n\t\t// 0x37 NOW\r\n\t\t// 0x38 PMT\r\n\t\t// 0x39 PV\r\n\t\t// 0x3A FV\r\n\t\t// 0x3B IF\r\n\t\t// 0x3C DAY\r\n\t\t// 0x3D MONTH\r\n\t\t// 0x3E YEAR\r\n\t\t0x3F: [\"ROUND\", 2],\r\n\t\t// 0x40 TIME\r\n\t\t// 0x41 HOUR\r\n\t\t// 0x42 MINUTE\r\n\t\t// 0x43 SECOND\r\n\t\t0x44: [\"ISNUMBER\", 1],\r\n\t\t0x45: [\"ISTEXT\", 1],\r\n\t\t0x46: [\"LEN\", 1],\r\n\t\t0x47: [\"VALUE\", 1],\r\n\t\t// 0x48: [\"FIXED\", ?? 1],\r\n\t\t0x49: [\"MID\", 3],\r\n\t\t0x4A: [\"CHAR\", 1],\r\n\t\t// 0x4B\r\n\t\t// 0x4C FIND\r\n\t\t// 0x4D DATEVALUE\r\n\t\t// 0x4E TIMEVALUE\r\n\t\t// 0x4F CELL\r\n\t\t0x50: [\"SUM\", 69],\r\n\t\t0x51: [\"AVERAGEA\", 69],\r\n\t\t0x52: [\"COUNTA\", 69],\r\n\t\t0x53: [\"MINA\", 69],\r\n\t\t0x54: [\"MAXA\", 69],\r\n\t\t// 0x55 VLOOKUP\r\n\t\t// 0x56 NPV\r\n\t\t// 0x57 VAR\r\n\t\t// 0x58 STD\r\n\t\t// 0x59 IRR\r\n\t\t// 0x5A HLOOKUP\r\n\t\t// 0x5B DSUM\r\n\t\t// 0x5C DAVERAGE\r\n\t\t// 0x5D DCOUNTA\r\n\t\t// 0x5E DMIN\r\n\t\t// 0x5F DMAX\r\n\t\t// 0x60 DVARP\r\n\t\t// 0x61 DSTDEVP\r\n\t\t// 0x62 INDEX\r\n\t\t// 0x63 COLS\r\n\t\t// 0x64 ROWS\r\n\t\t// 0x65 REPEAT\r\n\t\t0x66: [\"UPPER\", 1],\r\n\t\t0x67: [\"LOWER\", 1],\r\n\t\t// 0x68 LEFT\r\n\t\t// 0x69 RIGHT\r\n\t\t// 0x6A REPLACE\r\n\t\t0x6B: [\"PROPER\", 1],\r\n\t\t// 0x6C CELL\r\n\t\t0x6D: [\"TRIM\", 1],\r\n\t\t// 0x6E CLEAN\r\n\t\t0x6F: [\"T\", 1]\r\n\t\t// 0x70 V\r\n\t};\r\n\tvar BinOpTab = [\r\n\t\t \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\r\n\t\t \"\", \"+\", \"-\", \"*\", \"/\", \"^\", \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\r\n\t\t\"<=\", \">=\", \"<\", \">\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\r\n\t\t \"&\", \"\", \"\", \"\", \"\", \"\", \"\", \"\" // eslint-disable-line no-mixed-spaces-and-tabs\r\n\t];\r\n\r\n\tfunction wk1_fmla_to_csf(blob, o) {\r\n\t\tprep_blob(blob, 0);\r\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\r\n\t\twhile(blob.l < blob.length) {\r\n\t\t\tvar cc = blob[blob.l++];\r\n\t\t\tswitch(cc) {\r\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\r\n\t\t\t\tcase 0x01: {\r\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\r\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\r\n\t\t\t\t\tout.push(C + R);\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x02: {\r\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\r\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\r\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\r\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\r\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x03:\r\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\r\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\r\n\t\t\t\tcase 0x06: {\r\n\t\t\t\t\t/* TODO: text encoding */\r\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\r\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\r\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\r\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\r\n\r\n\t\t\t\tcase 0x14: case 0x15: {\r\n\t\t\t\t\targR = out.pop(); argL = out.pop();\r\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\r\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\r\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\r\n\t\t\t\t\t} else if(FuncTab[cc]) {\r\n\t\t\t\t\t\targc = FuncTab[cc][1];\r\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\r\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\r\n\t\t\t\t\t\tvar args = out.slice(-argc);\r\n\t\t\t\t\t\tout.length -= argc;\r\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\r\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\r\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\r\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\r\n\t\t\t\t\t// possible future functions ??\r\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\r\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\r\n\t}\r\n\r\n\r\n\tfunction parse_cell_3(blob) {\r\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\r\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_LABEL_16(blob, length) {\r\n\t\tvar o = parse_cell_3(blob, length);\r\n\t\to[1].t = 's';\r\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\r\n\t\treturn o;\r\n\t}\r\n\tfunction write_LABEL_16(R, C, wsidx, s) {\r\n\t\t/* TODO: encoding */\r\n\t\tvar o = new_buf(6 + s.length);\r\n\t\to.write_shift(2, R);\r\n\t\to.write_shift(1, wsidx);\r\n\t\to.write_shift(1, C);\r\n\t\to.write_shift(1, 0x27);\r\n\t\tfor(var i = 0; i < s.length; ++i) {\r\n\t\t\tvar cc = s.charCodeAt(i);\r\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\r\n\t\t}\r\n\t\to.write_shift(1, 0);\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_NUMBER_18(blob, length) {\r\n\t\tvar o = parse_cell_3(blob, length);\r\n\t\to[1].v = blob.read_shift(2);\r\n\t\tvar v = o[1].v >> 1;\r\n\t\tif(o[1].v & 0x1) {\r\n\t\t\tswitch(v & 0x07) {\r\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\r\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\r\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\r\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\r\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\r\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\r\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\r\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\r\n\t\t\t}\r\n\t\t}\r\n\t\to[1].v = v;\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_NUMBER_17(blob, length) {\r\n\t\tvar o = parse_cell_3(blob, length);\r\n\t\tvar v1 = blob.read_shift(4);\r\n\t\tvar v2 = blob.read_shift(4);\r\n\t\tvar e = blob.read_shift(2);\r\n\t\tif(e == 0xFFFF) {\r\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\r\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\r\n\t\t\telse o[1].v = 0;\r\n\t\t\treturn o;\r\n\t\t}\r\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\r\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\r\n\t\treturn o;\r\n\t}\r\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\r\n\t\tvar o = new_buf(14);\r\n\t\to.write_shift(2, R);\r\n\t\to.write_shift(1, wsidx);\r\n\t\to.write_shift(1, C);\r\n\t\tif(v == 0) {\r\n\t\t\to.write_shift(4, 0);\r\n\t\t\to.write_shift(4, 0);\r\n\t\t\to.write_shift(2, 0xFFFF);\r\n\t\t\treturn o;\r\n\t\t}\r\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\r\n\t\tif(v < 0) { s = 1; v = -v; }\r\n\t\te = Math.log2(v) | 0;\r\n\t\tv /= Math.pow(2, e-31);\r\n\t\tv2 = (v)>>>0;\r\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\r\n\t\tv -= v2;\r\n\t\tv2 |= 0x80000000;\r\n\t\tv2 >>>= 0;\r\n\t\tv *= Math.pow(2, 32);\r\n\t\tv1 = v>>>0;\r\n\t\to.write_shift(4, v1);\r\n\t\to.write_shift(4, v2);\r\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\r\n\t\to.write_shift(2, e);\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_FORMULA_19(blob, length) {\r\n\t\tvar o = parse_NUMBER_17(blob, 14);\r\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_NUMBER_25(blob, length) {\r\n\t\tvar o = parse_cell_3(blob, length);\r\n\t\tvar v1 = blob.read_shift(4);\r\n\t\to[1].v = v1 >> 6;\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_NUMBER_27(blob, length) {\r\n\t\tvar o = parse_cell_3(blob, length);\r\n\t\tvar v1 = blob.read_shift(8,'f');\r\n\t\to[1].v = v1;\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_FORMULA_28(blob, length) {\r\n\t\tvar o = parse_NUMBER_27(blob, 12);\r\n\t\tblob.l += length - 12; /* TODO: formula */\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_SHEETNAMECS(blob, length) {\r\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\r\n\t}\r\n\r\n\tfunction parse_SHEETNAMELP(blob, length) {\r\n\t\tvar len = blob[blob.l++];\r\n\t\tif(len > length - 1) len = length - 1;\r\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\r\n\t\treturn o;\r\n\t}\r\n\r\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\r\n\t\tif(!opts.qpro || length < 21) return;\r\n\t\tvar id = blob.read_shift(1);\r\n\t\tblob.l += 17;\r\n\t\tblob.l += 1; //var len = blob.read_shift(1);\r\n\t\tblob.l += 2;\r\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\r\n\t\treturn [id, nm];\r\n\t}\r\n\r\n\tfunction parse_XFORMAT(blob, length) {\r\n\t\tvar o = {}, tgt = blob.l + length;\r\n\t\twhile(blob.l < tgt) {\r\n\t\t\tvar dt = blob.read_shift(2);\r\n\t\t\tif(dt == 0x36b0) {\r\n\t\t\t\to[dt] = [0, \"\"];\r\n\t\t\t\to[dt][0] = blob.read_shift(2);\r\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\r\n\t\t\t}\r\n\t\t\t// TODO: 0x3a99 ??\r\n\t\t}\r\n\t\treturn o;\r\n\t}\r\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\r\n\t\tvar out = new_buf(5 + name.length);\r\n\t\tout.write_shift(2, 0x36b0);\r\n\t\tout.write_shift(2, wsidx);\r\n\t\tfor(var i = 0; i < name.length; ++i) {\r\n\t\t\tvar cc = name.charCodeAt(i);\r\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\r\n\t\t}\r\n\t\tout[out.l++] = 0;\r\n\t\treturn out;\r\n\t}\r\n\r\n\tvar WK1Enum = {\r\n0x0000: { n:\"BOF\", f:parseuint16 },\r\n0x0001: { n:\"EOF\" },\r\n0x0002: { n:\"CALCMODE\" },\r\n0x0003: { n:\"CALCORDER\" },\r\n0x0004: { n:\"SPLIT\" },\r\n0x0005: { n:\"SYNC\" },\r\n0x0006: { n:\"RANGE\", f:parse_RANGE },\r\n0x0007: { n:\"WINDOW1\" },\r\n0x0008: { n:\"COLW1\" },\r\n0x0009: { n:\"WINTWO\" },\r\n0x000A: { n:\"COLW2\" },\r\n0x000B: { n:\"NAME\" },\r\n0x000C: { n:\"BLANK\" },\r\n0x000D: { n:\"INTEGER\", f:parse_INTEGER },\r\n0x000E: { n:\"NUMBER\", f:parse_NUMBER },\r\n0x000F: { n:\"LABEL\", f:parse_LABEL },\r\n0x0010: { n:\"FORMULA\", f:parse_FORMULA },\r\n0x0018: { n:\"TABLE\" },\r\n0x0019: { n:\"ORANGE\" },\r\n0x001A: { n:\"PRANGE\" },\r\n0x001B: { n:\"SRANGE\" },\r\n0x001C: { n:\"FRANGE\" },\r\n0x001D: { n:\"KRANGE1\" },\r\n0x0020: { n:\"HRANGE\" },\r\n0x0023: { n:\"KRANGE2\" },\r\n0x0024: { n:\"PROTEC\" },\r\n0x0025: { n:\"FOOTER\" },\r\n0x0026: { n:\"HEADER\" },\r\n0x0027: { n:\"SETUP\" },\r\n0x0028: { n:\"MARGINS\" },\r\n0x0029: { n:\"LABELFMT\" },\r\n0x002A: { n:\"TITLES\" },\r\n0x002B: { n:\"SHEETJS\" },\r\n0x002D: { n:\"GRAPH\" },\r\n0x002E: { n:\"NGRAPH\" },\r\n0x002F: { n:\"CALCCOUNT\" },\r\n0x0030: { n:\"UNFORMATTED\" },\r\n0x0031: { n:\"CURSORW12\" },\r\n0x0032: { n:\"WINDOW\" },\r\n0x0033: { n:\"STRING\", f:parse_STRING },\r\n0x0037: { n:\"PASSWORD\" },\r\n0x0038: { n:\"LOCKED\" },\r\n0x003C: { n:\"QUERY\" },\r\n0x003D: { n:\"QUERYNAME\" },\r\n0x003E: { n:\"PRINT\" },\r\n0x003F: { n:\"PRINTNAME\" },\r\n0x0040: { n:\"GRAPH2\" },\r\n0x0041: { n:\"GRAPHNAME\" },\r\n0x0042: { n:\"ZOOM\" },\r\n0x0043: { n:\"SYMSPLIT\" },\r\n0x0044: { n:\"NSROWS\" },\r\n0x0045: { n:\"NSCOLS\" },\r\n0x0046: { n:\"RULER\" },\r\n0x0047: { n:\"NNAME\" },\r\n0x0048: { n:\"ACOMM\" },\r\n0x0049: { n:\"AMACRO\" },\r\n0x004A: { n:\"PARSE\" },\r\n0x0066: { n:\"PRANGES??\" },\r\n0x0067: { n:\"RRANGES??\" },\r\n0x0068: { n:\"FNAME??\" },\r\n0x0069: { n:\"MRANGES??\" },\r\n0x00CC: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\r\n0x00DE: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\r\n0x00FF: { n:\"BOF\", f:parseuint16 },\r\n0xFFFF: { n:\"\" }\r\n\t};\r\n\r\n\tvar WK3Enum = {\r\n0x0000: { n:\"BOF\" },\r\n0x0001: { n:\"EOF\" },\r\n0x0002: { n:\"PASSWORD\" },\r\n0x0003: { n:\"CALCSET\" },\r\n0x0004: { n:\"WINDOWSET\" },\r\n0x0005: { n:\"SHEETCELLPTR\" },\r\n0x0006: { n:\"SHEETLAYOUT\" },\r\n0x0007: { n:\"COLUMNWIDTH\" },\r\n0x0008: { n:\"HIDDENCOLUMN\" },\r\n0x0009: { n:\"USERRANGE\" },\r\n0x000A: { n:\"SYSTEMRANGE\" },\r\n0x000B: { n:\"ZEROFORCE\" },\r\n0x000C: { n:\"SORTKEYDIR\" },\r\n0x000D: { n:\"FILESEAL\" },\r\n0x000E: { n:\"DATAFILLNUMS\" },\r\n0x000F: { n:\"PRINTMAIN\" },\r\n0x0010: { n:\"PRINTSTRING\" },\r\n0x0011: { n:\"GRAPHMAIN\" },\r\n0x0012: { n:\"GRAPHSTRING\" },\r\n0x0013: { n:\"??\" },\r\n0x0014: { n:\"ERRCELL\" },\r\n0x0015: { n:\"NACELL\" },\r\n0x0016: { n:\"LABEL16\", f:parse_LABEL_16},\r\n0x0017: { n:\"NUMBER17\", f:parse_NUMBER_17 },\r\n0x0018: { n:\"NUMBER18\", f:parse_NUMBER_18 },\r\n0x0019: { n:\"FORMULA19\", f:parse_FORMULA_19},\r\n0x001A: { n:\"FORMULA1A\" },\r\n0x001B: { n:\"XFORMAT\", f:parse_XFORMAT },\r\n0x001C: { n:\"DTLABELMISC\" },\r\n0x001D: { n:\"DTLABELCELL\" },\r\n0x001E: { n:\"GRAPHWINDOW\" },\r\n0x001F: { n:\"CPA\" },\r\n0x0020: { n:\"LPLAUTO\" },\r\n0x0021: { n:\"QUERY\" },\r\n0x0022: { n:\"HIDDENSHEET\" },\r\n0x0023: { n:\"??\" },\r\n0x0025: { n:\"NUMBER25\", f:parse_NUMBER_25 },\r\n0x0026: { n:\"??\" },\r\n0x0027: { n:\"NUMBER27\", f:parse_NUMBER_27 },\r\n0x0028: { n:\"FORMULA28\", f:parse_FORMULA_28 },\r\n0x008E: { n:\"??\" },\r\n0x0093: { n:\"??\" },\r\n0x0096: { n:\"??\" },\r\n0x0097: { n:\"??\" },\r\n0x0098: { n:\"??\" },\r\n0x0099: { n:\"??\" },\r\n0x009A: { n:\"??\" },\r\n0x009B: { n:\"??\" },\r\n0x009C: { n:\"??\" },\r\n0x00A3: { n:\"??\" },\r\n0x00AE: { n:\"??\" },\r\n0x00AF: { n:\"??\" },\r\n0x00B0: { n:\"??\" },\r\n0x00B1: { n:\"??\" },\r\n0x00B8: { n:\"??\" },\r\n0x00B9: { n:\"??\" },\r\n0x00BA: { n:\"??\" },\r\n0x00BB: { n:\"??\" },\r\n0x00BC: { n:\"??\" },\r\n0x00C3: { n:\"??\" },\r\n0x00C9: { n:\"??\" },\r\n0x00CC: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\r\n0x00CD: { n:\"??\" },\r\n0x00CE: { n:\"??\" },\r\n0x00CF: { n:\"??\" },\r\n0x00D0: { n:\"??\" },\r\n0x0100: { n:\"??\" },\r\n0x0103: { n:\"??\" },\r\n0x0104: { n:\"??\" },\r\n0x0105: { n:\"??\" },\r\n0x0106: { n:\"??\" },\r\n0x0107: { n:\"??\" },\r\n0x0109: { n:\"??\" },\r\n0x010A: { n:\"??\" },\r\n0x010B: { n:\"??\" },\r\n0x010C: { n:\"??\" },\r\n0x010E: { n:\"??\" },\r\n0x010F: { n:\"??\" },\r\n0x0180: { n:\"??\" },\r\n0x0185: { n:\"??\" },\r\n0x0186: { n:\"??\" },\r\n0x0189: { n:\"??\" },\r\n0x018C: { n:\"??\" },\r\n0x0200: { n:\"??\" },\r\n0x0202: { n:\"??\" },\r\n0x0201: { n:\"??\" },\r\n0x0204: { n:\"??\" },\r\n0x0205: { n:\"??\" },\r\n0x0280: { n:\"??\" },\r\n0x0281: { n:\"??\" },\r\n0x0282: { n:\"??\" },\r\n0x0283: { n:\"??\" },\r\n0x0284: { n:\"??\" },\r\n0x0285: { n:\"??\" },\r\n0x0286: { n:\"??\" },\r\n0x0287: { n:\"??\" },\r\n0x0288: { n:\"??\" },\r\n0x0292: { n:\"??\" },\r\n0x0293: { n:\"??\" },\r\n0x0294: { n:\"??\" },\r\n0x0295: { n:\"??\" },\r\n0x0296: { n:\"??\" },\r\n0x0299: { n:\"??\" },\r\n0x029A: { n:\"??\" },\r\n0x0300: { n:\"??\" },\r\n0x0304: { n:\"??\" },\r\n0x0601: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\r\n0x0640: { n:\"??\" },\r\n0x0642: { n:\"??\" },\r\n0x0701: { n:\"??\" },\r\n0x0702: { n:\"??\" },\r\n0x0703: { n:\"??\" },\r\n0x0704: { n:\"??\" },\r\n0x0780: { n:\"??\" },\r\n0x0800: { n:\"??\" },\r\n0x0801: { n:\"??\" },\r\n0x0804: { n:\"??\" },\r\n0x0A80: { n:\"??\" },\r\n0x2AF6: { n:\"??\" },\r\n0x3231: { n:\"??\" },\r\n0x6E49: { n:\"??\" },\r\n0x6F44: { n:\"??\" },\r\n0xFFFF: { n:\"\" }\r\n\t};\r\n\r\n\t/* QPW uses a different set of record types */\r\n\tfunction qpw_to_workbook_buf(d, opts) {\r\n\t\tprep_blob(d, 0);\r\n\t\tvar o = opts || {};\r\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\r\n\t\tvar s = ((o.dense ? [] : {}));\r\n\t\tvar SST = [], sname = \"\", formulae = [];\r\n\t\tvar range = {s:{r:-1,c:-1}, e:{r:-1,c:-1}};\r\n\t\tvar cnt = 0, type = 0, C = 0, R = 0;\r\n\t\tvar wb = { SheetNames: [], Sheets: {} };\r\n\t\touter: while(d.l < d.length) {\r\n\t\t\tvar RT = d.read_shift(2), length = d.read_shift(2);\r\n\t\t\tvar p = d.slice(d.l, d.l + length);\r\n\t\t\tprep_blob(p, 0);\r\n\t\t\tswitch(RT) {\r\n\t\t\t\tcase 0x01: /* BOF */\r\n\t\t\t\t\tif(p.read_shift(4) != 0x39575051) throw \"Bad QPW9 BOF!\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x02: /* EOF */ break outer;\r\n\r\n\t\t\t\t/* TODO: The behavior here should be consistent with Numbers: QP Notebook ~ .TN.SheetArchive, QP Sheet ~ .TST.TableModelArchive */\r\n\t\t\t\tcase 0x0401: /* BON */ break;\r\n\t\t\t\tcase 0x0402: /* EON */ /* TODO: backfill missing sheets based on BON cnt */ break;\r\n\r\n\t\t\t\tcase 0x0407: { /* SST */\r\n\t\t\t\t\tp.l += 12;\r\n\t\t\t\t\twhile(p.l < p.length) {\r\n\t\t\t\t\t\tcnt = p.read_shift(2);\r\n\t\t\t\t\t\ttype = p.read_shift(1);\r\n\t\t\t\t\t\tSST.push(p.read_shift(cnt, 'cstr'));\r\n\t\t\t\t\t}\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x0408: { /* FORMULAE */\r\n\t\t\t\t\t//p.l += 12;\r\n\t\t\t\t\t//while(p.l < p.length) {\r\n\t\t\t\t\t//\tcnt = p.read_shift(2);\r\n\t\t\t\t\t//\tformulae.push(p.slice(p.l, p.l + cnt + 1)); p.l += cnt + 1;\r\n\t\t\t\t\t//}\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\tcase 0x0601: { /* BOS */\r\n\t\t\t\t\tvar sidx = p.read_shift(2);\r\n\t\t\t\t\ts = ((o.dense ? [] : {}));\r\n\t\t\t\t\trange.s.c = p.read_shift(2);\r\n\t\t\t\t\trange.e.c = p.read_shift(2);\r\n\t\t\t\t\trange.s.r = p.read_shift(4);\r\n\t\t\t\t\trange.e.r = p.read_shift(4);\r\n\t\t\t\t\tp.l += 4;\r\n\t\t\t\t\tif(p.l + 2 < p.length) {\r\n\t\t\t\t\t\tcnt = p.read_shift(2);\r\n\t\t\t\t\t\ttype = p.read_shift(1);\r\n\t\t\t\t\t\tsname = cnt == 0 ? \"\" : p.read_shift(cnt, 'cstr');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(!sname) sname = encode_col(sidx);\r\n\t\t\t\t\t/* TODO: backfill empty sheets */\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x0602: { /* EOS */\r\n\t\t\t\t\t/* NOTE: QP valid range A1:IV1000000 */\r\n\t\t\t\t\tif(range.s.c > 0xFF || range.s.r > 999999) break;\r\n\t\t\t\t\tif(range.e.c < range.s.c) range.e.c = range.s.c;\r\n\t\t\t\t\tif(range.e.r < range.s.r) range.e.r = range.s.r;\r\n\t\t\t\t\ts[\"!ref\"] = encode_range(range);\r\n\t\t\t\t\tbook_append_sheet(wb, s, sname); // TODO: a barrel roll\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\tcase 0x0A01: { /* COL (like XLS Row, modulo the layout transposition) */\r\n\t\t\t\t\tC = p.read_shift(2);\r\n\t\t\t\t\tif(range.e.c < C) range.e.c = C;\r\n\t\t\t\t\tif(range.s.c > C) range.s.c = C;\r\n\t\t\t\t\tR = p.read_shift(4);\r\n\t\t\t\t\tif(range.s.r > R) range.s.r = R;\r\n\t\t\t\t\tR = p.read_shift(4);\r\n\t\t\t\t\tif(range.e.r < R) range.e.r = R;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\tcase 0x0C01: { /* MulCells (like XLS MulRK, but takes advantage of common column data patterns) */\r\n\t\t\t\t\tR = p.read_shift(4), cnt = p.read_shift(4);\r\n\t\t\t\t\tif(range.s.r > R) range.s.r = R;\r\n\t\t\t\t\tif(range.e.r < R + cnt - 1) range.e.r = R + cnt - 1;\r\n\t\t\t\t\twhile(p.l < p.length) {\r\n\t\t\t\t\t\tvar cell = { t: \"z\" };\r\n\t\t\t\t\t\tvar flags = p.read_shift(1);\r\n\t\t\t\t\t\tif(flags & 0x80) p.l += 2;\r\n\t\t\t\t\t\tvar mul = (flags & 0x40) ? p.read_shift(2) - 1: 0;\r\n\t\t\t\t\t\tswitch(flags & 0x1F) {\r\n\t\t\t\t\t\t\tcase 1: break;\r\n\t\t\t\t\t\t\tcase 2: cell = { t: \"n\", v: p.read_shift(2) }; break;\r\n\t\t\t\t\t\t\tcase 3: cell = { t: \"n\", v: p.read_shift(2, 'i') }; break;\r\n\t\t\t\t\t\t\tcase 5: cell = { t: \"n\", v: p.read_shift(8, 'f') }; break;\r\n\t\t\t\t\t\t\tcase 7: cell = { t: \"s\", v: SST[type = p.read_shift(4) - 1] }; break;\r\n\t\t\t\t\t\t\tcase 8: cell = { t: \"n\", v: p.read_shift(8, 'f') }; p.l += 2; /* cell.f = formulae[p.read_shift(4)]; */ p.l += 4; break;\r\n\t\t\t\t\t\t\tdefault: throw \"Unrecognized QPW cell type \" + (flags & 0x1F);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar delta = 0;\r\n\t\t\t\t\t\tif(flags & 0x20) switch(flags & 0x1F) {\r\n\t\t\t\t\t\t\tcase 2: delta = p.read_shift(2); break;\r\n\t\t\t\t\t\t\tcase 3: delta = p.read_shift(2, 'i'); break;\r\n\t\t\t\t\t\t\tcase 7: delta = p.read_shift(2); break;\r\n\t\t\t\t\t\t\tdefault: throw \"Unsupported delta for QPW cell type \" + (flags & 0x1F);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!(!o.sheetStubs && cell.t == \"z\")) {\r\n\t\t\t\t\t\t\tif(Array.isArray(s)) {\r\n\t\t\t\t\t\t\t\tif(!s[R]) s[R] = [];\r\n\t\t\t\t\t\t\t\ts[R][C] = cell;\r\n\t\t\t\t\t\t\t} else s[encode_cell({r:R, c:C})] = cell;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t++R; --cnt;\r\n\t\t\t\t\t\twhile(mul-- > 0 && cnt >= 0) {\r\n\t\t\t\t\t\t\tif(flags & 0x20) switch(flags & 0x1F) {\r\n\t\t\t\t\t\t\t\tcase 2: cell = { t: \"n\", v: (cell.v + delta) & 0xFFFF }; break;\r\n\t\t\t\t\t\t\t\tcase 3: cell = { t: \"n\", v: (cell.v + delta) & 0xFFFF }; if(cell.v > 0x7FFF) cell.v -= 0x10000; break;\r\n\t\t\t\t\t\t\t\tcase 7: cell = { t: \"s\", v: SST[type = (type + delta) >>> 0] }; break;\r\n\t\t\t\t\t\t\t\tdefault: throw \"Cannot apply delta for QPW cell type \" + (flags & 0x1F);\r\n\t\t\t\t\t\t\t} else switch(flags & 0x1F) {\r\n\t\t\t\t\t\t\t\tcase 1: cell = { t: \"z\" }; break;\r\n\t\t\t\t\t\t\t\tcase 2: cell = { t: \"n\", v: p.read_shift(2) }; break;\r\n\t\t\t\t\t\t\t\tcase 7: cell = { t: \"s\", v: SST[type = p.read_shift(4) - 1] }; break;\r\n\t\t\t\t\t\t\t\tdefault: throw \"Cannot apply repeat for QPW cell type \" + (flags & 0x1F);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif(!(!o.sheetStubs && cell.t == \"z\")) {\r\n\t\t\t\t\t\t\t\tif(Array.isArray(s)) {\r\n\t\t\t\t\t\t\t\t\tif(!s[R]) s[R] = [];\r\n\t\t\t\t\t\t\t\t\ts[R][C] = cell;\r\n\t\t\t\t\t\t\t\t} else s[encode_cell({r:R, c:C})] = cell;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t++R; --cnt;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\tdefault: break;\r\n\t\t\t}\r\n\t\t\td.l += length;\r\n\t\t}\r\n\t\treturn wb;\r\n\t}\r\n\r\n\treturn {\r\n\t\tsheet_to_wk1: sheet_to_wk1,\r\n\t\tbook_to_wk3: book_to_wk3,\r\n\t\tto_workbook: lotus_to_workbook\r\n\t};\r\n})();\r\n/* 18.4.7 rPr CT_RPrElt */\r\nfunction parse_rpr(rpr) {\r\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\r\n\tvar pass = false;\r\n\tif(m) for(;i!=m.length; ++i) {\r\n\t\tvar y = parsexmltag(m[i]);\r\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\r\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\r\n\t\t\t/* ** not required . */\r\n\t\t\tcase '':\r\n\t\t\tcase '': font.shadow = 1; break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\r\n\t\t\tcase '':\r\n\t\t\tcase '': font.outline = 1; break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.4.5 rFont CT_FontName */\r\n\t\t\tcase '':\r\n\t\t\tcase '': font.strike = 1; break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\r\n\t\t\tcase '':\r\n\t\t\tcase '': font.u = 1; break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.2 b */\r\n\t\t\tcase '':\r\n\t\t\tcase '': font.b = 1; break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.26 i */\r\n\t\t\tcase '':\r\n\t\t\tcase '': font.i = 1; break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\r\n\t\t\tcase '': case '': case '': break;\r\n\r\n\t\t\t/* 18.8.18 family ST_FontFamily */\r\n\t\t\tcase '': case '': case '': break;\r\n\r\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\r\n\t\t\tcase '': case '': case '': break;\r\n\r\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\r\n\t\t\tcase '': case '': case '': break;\r\n\r\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\r\n\t\t\tcase '': case '': break;\r\n\t\t\tcase '': pass = false; break;\r\n\t\t\tdefault:\r\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\r\n\t\t}\r\n\t}\r\n\treturn font;\r\n}\r\n\r\nvar parse_rs = (function() {\r\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\r\n\t/* 18.4.4 r CT_RElt */\r\n\tfunction parse_r(r) {\r\n\t\t/* 18.4.12 t ST_Xstring */\r\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\r\n\t\tif(!t) return {t:\"s\", v:\"\"};\r\n\r\n\t\tvar o = ({t:'s', v:unescapexml(t[1])});\r\n\t\tvar rpr = r.match(rpregex);\r\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\r\n\t\treturn o;\r\n\t}\r\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\r\n\treturn function parse_rs(rs) {\r\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\r\n\t};\r\n})();\r\n\r\n\r\n/* Parse a list of tags */\r\nvar rs_to_html = (function parse_rs_factory() {\r\n\tvar nlregex = /(\\r\\n|\\n)/g;\r\n\tfunction parse_rpr2(font, intro, outro) {\r\n\t\tvar style = [];\r\n\r\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\r\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\r\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\r\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\r\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\r\n\t\tintro.push('');\r\n\r\n\t\tif(font.b) { intro.push(\"\"); outro.push(\"\"); }\r\n\t\tif(font.i) { intro.push(\"\"); outro.push(\"\"); }\r\n\t\tif(font.strike) { intro.push(\"\"); outro.push(\"\"); }\r\n\r\n\t\tvar align = font.valign || \"\";\r\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\r\n\t\telse if(align == \"subscript\") align = \"sub\";\r\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"\"); }\r\n\r\n\t\toutro.push(\"\");\r\n\t\treturn font;\r\n\t}\r\n\r\n\t/* 18.4.4 r CT_RElt */\r\n\tfunction r_to_html(r) {\r\n\t\tvar terms = [[],r.v,[]];\r\n\t\tif(!r.v) return \"\";\r\n\r\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\r\n\r\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'
') + terms[2].join(\"\");\r\n\t}\r\n\r\n\treturn function parse_rs(rs) {\r\n\t\treturn rs.map(r_to_html).join(\"\");\r\n\t};\r\n})();\r\n\r\n/* 18.4.8 si CT_Rst */\r\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\r\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\r\nfunction parse_si(x, opts) {\r\n\tvar html = opts ? opts.cellHTML : true;\r\n\tvar z = {};\r\n\tif(!x) return { t: \"\" };\r\n\t//var y;\r\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\r\n\t// TODO: is whitespace actually valid here?\r\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\r\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"), true);\r\n\t\tz.r = utf8read(x);\r\n\t\tif(html) z.h = escapehtml(z.t);\r\n\t}\r\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\r\n\telse if((/*y = */x.match(sirregex))) {\r\n\t\tz.r = utf8read(x);\r\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")), true);\r\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\r\n\t}\r\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\r\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\r\n\treturn z;\r\n}\r\n\r\n/* 18.4 Shared String Table */\r\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\r\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\r\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\r\nfunction parse_sst_xml(data, opts) {\r\n\tvar s = ([]), ss = \"\";\r\n\tif(!data) return s;\r\n\t/* 18.4.9 sst CT_Sst */\r\n\tvar sst = data.match(sstr0);\r\n\tif(sst) {\r\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\r\n\t\tfor(var i = 0; i != ss.length; ++i) {\r\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\r\n\t\t\tif(o != null) s[s.length] = o;\r\n\t\t}\r\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\r\n\t}\r\n\treturn s;\r\n}\r\n\r\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\r\nfunction write_sst_xml(sst, opts) {\r\n\tif(!opts.bookSST) return \"\";\r\n\tvar o = [XML_HEADER];\r\n\to[o.length] = (writextag('sst', null, {\r\n\t\txmlns: XMLNS_main[0],\r\n\t\tcount: sst.Count,\r\n\t\tuniqueCount: sst.Unique\r\n\t}));\r\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\r\n\t\tvar s = sst[i];\r\n\t\tvar sitag = \"\";\r\n\t\tif(s.r) sitag += s.r;\r\n\t\telse {\r\n\t\t\tsitag += \"\" + escapexml(s.t) + \"\";\r\n\t\t}\r\n\t\tsitag += \"\";\r\n\t\to[o.length] = (sitag);\r\n\t}\r\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\r\n\treturn o.join(\"\");\r\n}\r\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\r\nfunction parse_BrtBeginSst(data) {\r\n\treturn [data.read_shift(4), data.read_shift(4)];\r\n}\r\n\r\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\r\nfunction parse_sst_bin(data, opts) {\r\n\tvar s = ([]);\r\n\tvar pass = false;\r\n\trecordhopper(data, function hopper_sst(val, R, RT) {\r\n\t\tswitch(RT) {\r\n\t\t\tcase 0x009F: /* BrtBeginSst */\r\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\r\n\t\t\tcase 0x0013: /* BrtSSTItem */\r\n\t\t\t\ts.push(val); break;\r\n\t\t\tcase 0x00A0: /* BrtEndSst */\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tcase 0x0023: /* BrtFRTBegin */\r\n\t\t\t\tpass = true; break;\r\n\t\t\tcase 0x0024: /* BrtFRTEnd */\r\n\t\t\t\tpass = false; break;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tif(R.T){}\r\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\r\n\t\t}\r\n\t});\r\n\treturn s;\r\n}\r\n\r\nfunction write_BrtBeginSst(sst, o) {\r\n\tif(!o) o = new_buf(8);\r\n\to.write_shift(4, sst.Count);\r\n\to.write_shift(4, sst.Unique);\r\n\treturn o;\r\n}\r\n\r\nvar write_BrtSSTItem = write_RichStr;\r\n\r\nfunction write_sst_bin(sst) {\r\n\tvar ba = buf_array();\r\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\r\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\r\n\t/* FRTSST */\r\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\r\n\treturn ba.end();\r\n}\r\nfunction _JS2ANSI(str) {\r\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\r\n\tvar o = [], oo = str.split(\"\");\r\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.1.4 Version */\r\nfunction parse_CRYPTOVersion(blob, length) {\r\n\tvar o = {};\r\n\to.Major = blob.read_shift(2);\r\n\to.Minor = blob.read_shift(2);\r\nif(length >= 4) blob.l += length - 4;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\r\nfunction parse_DataSpaceVersionInfo(blob) {\r\n\tvar o = {};\r\n\to.id = blob.read_shift(0, 'lpp4');\r\n\to.R = parse_CRYPTOVersion(blob, 4);\r\n\to.U = parse_CRYPTOVersion(blob, 4);\r\n\to.W = parse_CRYPTOVersion(blob, 4);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\r\nfunction parse_DataSpaceMapEntry(blob) {\r\n\tvar len = blob.read_shift(4);\r\n\tvar end = blob.l + len - 4;\r\n\tvar o = {};\r\n\tvar cnt = blob.read_shift(4);\r\n\tvar comps = [];\r\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\r\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\r\n\to.name = blob.read_shift(0, 'lpp4');\r\n\to.comps = comps;\r\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\r\nfunction parse_DataSpaceMap(blob) {\r\n\tvar o = [];\r\n\tblob.l += 4; // must be 0x8\r\n\tvar cnt = blob.read_shift(4);\r\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\r\n\treturn o;\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\r\nfunction parse_DataSpaceDefinition(blob) {\r\n\tvar o = [];\r\n\tblob.l += 4; // must be 0x8\r\n\tvar cnt = blob.read_shift(4);\r\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\r\n\treturn o;\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\r\nfunction parse_TransformInfoHeader(blob) {\r\n\tvar o = {};\r\n\t/*var len = */blob.read_shift(4);\r\n\tblob.l += 4; // must be 0x1\r\n\to.id = blob.read_shift(0, 'lpp4');\r\n\to.name = blob.read_shift(0, 'lpp4');\r\n\to.R = parse_CRYPTOVersion(blob, 4);\r\n\to.U = parse_CRYPTOVersion(blob, 4);\r\n\to.W = parse_CRYPTOVersion(blob, 4);\r\n\treturn o;\r\n}\r\n\r\nfunction parse_Primary(blob) {\r\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\r\n\tvar hdr = parse_TransformInfoHeader(blob);\r\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\r\n\thdr.ename = blob.read_shift(0, '8lpp4');\r\n\thdr.blksz = blob.read_shift(4);\r\n\thdr.cmode = blob.read_shift(4);\r\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\r\n\treturn hdr;\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\r\nfunction parse_EncryptionHeader(blob, length) {\r\n\tvar tgt = blob.l + length;\r\n\tvar o = {};\r\n\to.Flags = (blob.read_shift(4) & 0x3F);\r\n\tblob.l += 4;\r\n\to.AlgID = blob.read_shift(4);\r\n\tvar valid = false;\r\n\tswitch(o.AlgID) {\r\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\r\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\r\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\r\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\r\n\t}\r\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\r\n\to.AlgIDHash = blob.read_shift(4);\r\n\to.KeySize = blob.read_shift(4);\r\n\to.ProviderType = blob.read_shift(4);\r\n\tblob.l += 8;\r\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\r\n\tblob.l = tgt;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\r\nfunction parse_EncryptionVerifier(blob, length) {\r\n\tvar o = {}, tgt = blob.l + length;\r\n\tblob.l += 4; // SaltSize must be 0x10\r\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\r\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\r\n\t/*var sz = */blob.read_shift(4);\r\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\r\nfunction parse_EncryptionInfo(blob) {\r\n\tvar vers = parse_CRYPTOVersion(blob);\r\n\tswitch(vers.Minor) {\r\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\r\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\r\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\r\n\t}\r\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */\r\nfunction parse_EncInfoStd(blob) {\r\n\tvar flags = blob.read_shift(4);\r\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\r\n\tvar sz = blob.read_shift(4);\r\n\t//var tgt = blob.l + sz;\r\n\tvar hdr = parse_EncryptionHeader(blob, sz);\r\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\r\n\treturn { t:\"Std\", h:hdr, v:verifier };\r\n}\r\n/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */\r\nfunction parse_EncInfoExt() { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\r\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\r\nfunction parse_EncInfoAgl(blob) {\r\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\r\n\tblob.l+=4;\r\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\r\n\tvar o = {};\r\n\txml.replace(tagregex, function xml_agile(x) {\r\n\t\tvar y = parsexmltag(x);\r\n\t\tswitch(strip_ns(y[0])) {\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\tcase '': break;\r\n\t\t\tcase ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\r\n\to.Flags = blob.read_shift(4); length -= 4;\r\n\tvar sz = blob.read_shift(4); length -= 4;\r\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\r\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\r\n\treturn o;\r\n}\r\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\r\nfunction parse_RC4Header(blob) {\r\n\tvar o = {};\r\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\r\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\r\n\to.Salt = blob.read_shift(16);\r\n\to.EncryptedVerifier = blob.read_shift(16);\r\n\to.EncryptedVerifierHash = blob.read_shift(16);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\r\nfunction crypto_CreatePasswordVerifier_Method1(Password) {\r\n\tvar Verifier = 0x0000, PasswordArray;\r\n\tvar PasswordDecoded = _JS2ANSI(Password);\r\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\r\n\tvar Intermediate1, Intermediate2, Intermediate3;\r\n\tPasswordArray = new_raw_buf(len);\r\n\tPasswordArray[0] = PasswordDecoded.length;\r\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\r\n\tfor(i = len-1; i >= 0; --i) {\r\n\t\tPasswordByte = PasswordArray[i];\r\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\r\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\r\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\r\n\t\tVerifier = Intermediate3 ^ PasswordByte;\r\n\t}\r\n\treturn Verifier ^ 0xCE4B;\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\r\nvar crypto_CreateXorArray_Method1 = (function() {\r\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\r\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\r\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\r\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\r\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\r\n\tvar CreateXorKey_Method1 = function(Password) {\r\n\t\tvar XorKey = InitialCode[Password.length - 1];\r\n\t\tvar CurrentElement = 0x68;\r\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\r\n\t\t\tvar Char = Password[i];\r\n\t\t\tfor(var j = 0; j != 7; ++j) {\r\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\r\n\t\t\t\tChar *= 2; --CurrentElement;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn XorKey;\r\n\t};\r\n\treturn function(password) {\r\n\t\tvar Password = _JS2ANSI(password);\r\n\t\tvar XorKey = CreateXorKey_Method1(Password);\r\n\t\tvar Index = Password.length;\r\n\t\tvar ObfuscationArray = new_raw_buf(16);\r\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\r\n\t\tvar Temp, PasswordLastChar, PadIndex;\r\n\t\tif((Index & 1) === 1) {\r\n\t\t\tTemp = XorKey >> 8;\r\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\r\n\t\t\t--Index;\r\n\t\t\tTemp = XorKey & 0xFF;\r\n\t\t\tPasswordLastChar = Password[Password.length - 1];\r\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\r\n\t\t}\r\n\t\twhile(Index > 0) {\r\n\t\t\t--Index;\r\n\t\t\tTemp = XorKey >> 8;\r\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\r\n\t\t\t--Index;\r\n\t\t\tTemp = XorKey & 0xFF;\r\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\r\n\t\t}\r\n\t\tIndex = 15;\r\n\t\tPadIndex = 15 - Password.length;\r\n\t\twhile(PadIndex > 0) {\r\n\t\t\tTemp = XorKey >> 8;\r\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\r\n\t\t\t--Index;\r\n\t\t\t--PadIndex;\r\n\t\t\tTemp = XorKey & 0xFF;\r\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\r\n\t\t\t--Index;\r\n\t\t\t--PadIndex;\r\n\t\t}\r\n\t\treturn ObfuscationArray;\r\n\t};\r\n})();\r\n\r\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\r\nvar crypto_DecryptData_Method1 = function(password, Data, XorArrayIndex, XorArray, O) {\r\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\r\n\tif(!O) O = Data;\r\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\r\n\tvar Index, Value;\r\n\tfor(Index = 0; Index != Data.length; ++Index) {\r\n\t\tValue = Data[Index];\r\n\t\tValue ^= XorArray[XorArrayIndex];\r\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\r\n\t\tO[Index] = Value;\r\n\t\t++XorArrayIndex;\r\n\t}\r\n\treturn [O, XorArrayIndex, XorArray];\r\n};\r\n\r\nvar crypto_MakeXorDecryptor = function(password) {\r\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\r\n\treturn function(Data) {\r\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\r\n\t\tXorArrayIndex = O[1];\r\n\t\treturn O[0];\r\n\t};\r\n};\r\n\r\n/* 2.5.343 */\r\nfunction parse_XORObfuscation(blob, length, opts, out) {\r\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) });\r\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\r\n\tout.valid = o.verificationBytes === o.verifier;\r\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\r\n\treturn o;\r\n}\r\n\r\n/* 2.4.117 */\r\nfunction parse_FilePassHeader(blob, length, oo) {\r\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\r\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\r\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\r\n\treturn o;\r\n}\r\nfunction parse_FilePass(blob, length, opts) {\r\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }); /* wEncryptionType */\r\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\r\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\r\n\treturn o;\r\n}\r\n\r\n\r\nfunction rtf_to_sheet(d, opts) {\r\n switch (opts.type) {\r\n case \"base64\":\r\n return rtf_to_sheet_str(Base64_decode(d), opts);\r\n case \"binary\":\r\n return rtf_to_sheet_str(d, opts);\r\n case \"buffer\":\r\n return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString(\"binary\") : a2s(d), opts);\r\n case \"array\":\r\n return rtf_to_sheet_str(cc2str(d), opts);\r\n }\r\n throw new Error(\"Unrecognized type \" + opts.type);\r\n}\r\nfunction rtf_to_sheet_str(str, opts) {\r\n var o = opts || {};\r\n var ws = o.dense ? [] : {};\r\n var rows = str.match(/\\\\trowd[\\s\\S]*?\\\\row\\b/g);\r\n if (!rows)\r\n throw new Error(\"RTF missing table\");\r\n var range = { s: { c: 0, r: 0 }, e: { c: 0, r: rows.length - 1 } };\r\n rows.forEach(function(rowtf, R) {\r\n if (Array.isArray(ws))\r\n ws[R] = [];\r\n var rtfre = /\\\\[\\w\\-]+\\b/g;\r\n var last_index = 0;\r\n var res;\r\n var C = -1;\r\n var payload = [];\r\n while ((res = rtfre.exec(rowtf)) != null) {\r\n var data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\r\n if (data.charCodeAt(0) == 32)\r\n data = data.slice(1);\r\n if (data.length)\r\n payload.push(data);\r\n switch (res[0]) {\r\n case \"\\\\cell\":\r\n ++C;\r\n if (payload.length) {\r\n var cell = { v: payload.join(\"\"), t: \"s\" };\r\n if (cell.v == \"TRUE\" || cell.v == \"FALSE\") {\r\n cell.v = cell.v == \"TRUE\";\r\n cell.t = \"b\";\r\n } else if (!isNaN(fuzzynum(cell.v))) {\r\n cell.t = \"n\";\r\n if (o.cellText !== false)\r\n cell.w = cell.v;\r\n cell.v = fuzzynum(cell.v);\r\n }\r\n if (Array.isArray(ws))\r\n ws[R][C] = cell;\r\n else\r\n ws[encode_cell({ r: R, c: C })] = cell;\r\n }\r\n payload = [];\r\n break;\r\n case \"\\\\par\":\r\n payload.push(\"\\n\");\r\n break;\r\n }\r\n last_index = rtfre.lastIndex;\r\n }\r\n if (C > range.e.c)\r\n range.e.c = C;\r\n });\r\n ws[\"!ref\"] = encode_range(range);\r\n return ws;\r\n}\r\nfunction rtf_to_workbook(d, opts) {\r\n var wb = sheet_to_workbook(rtf_to_sheet(d, opts), opts);\r\n wb.bookType = \"rtf\";\r\n return wb;\r\n}\r\nfunction sheet_to_rtf(ws, opts) {\r\n var o = [\"{\\\\rtf1\\\\ansi\"];\r\n if (!ws[\"!ref\"])\r\n return o[0] + \"}\";\r\n var r = safe_decode_range(ws[\"!ref\"]), cell;\r\n var dense = Array.isArray(ws);\r\n for (var R = r.s.r; R <= r.e.r; ++R) {\r\n o.push(\"\\\\trowd\\\\trautofit1\");\r\n for (var C = r.s.c; C <= r.e.c; ++C)\r\n o.push(\"\\\\cellx\" + (C + 1));\r\n o.push(\"\\\\pard\\\\intbl\");\r\n for (C = r.s.c; C <= r.e.c; ++C) {\r\n var coord = encode_cell({ r: R, c: C });\r\n cell = dense ? (ws[R] || [])[C] : ws[coord];\r\n if (!cell || cell.v == null && (!cell.f || cell.F)) {\r\n o.push(\" \\\\cell\");\r\n continue;\r\n }\r\n o.push(\" \" + (cell.w || (format_cell(cell), cell.w) || \"\").replace(/[\\r\\n]/g, \"\\\\par \"));\r\n o.push(\"\\\\cell\");\r\n }\r\n o.push(\"\\\\pard\\\\intbl\\\\row\");\r\n }\r\n return o.join(\"\") + \"}\";\r\n}\r\nfunction hex2RGB(h) {\r\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\r\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\r\n}\r\nfunction rgb2Hex(rgb) {\r\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\r\n\treturn o.toString(16).toUpperCase().slice(1);\r\n}\r\n\r\nfunction rgb2HSL(rgb) {\r\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\r\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\r\n\tif(C === 0) return [0, 0, R];\r\n\r\n\tvar H6 = 0, S = 0, L2 = (M + m);\r\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\r\n\tswitch(M){\r\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\r\n\t\tcase G: H6 = ((B - R) / C + 2); break;\r\n\t\tcase B: H6 = ((R - G) / C + 4); break;\r\n\t}\r\n\treturn [H6 / 6, S, L2 / 2];\r\n}\r\n\r\nfunction hsl2RGB(hsl){\r\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\r\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\r\n\tvar rgb = [m,m,m], h6 = 6*H;\r\n\r\n\tvar X;\r\n\tif(S !== 0) switch(h6|0) {\r\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\r\n\t\tcase 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break;\r\n\t\tcase 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break;\r\n\t\tcase 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break;\r\n\t\tcase 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break;\r\n\t\tcase 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break;\r\n\t}\r\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\r\n\treturn rgb;\r\n}\r\n\r\n/* 18.8.3 bgColor tint algorithm */\r\nfunction rgb_tint(hex, tint) {\r\n\tif(tint === 0) return hex;\r\n\tvar hsl = rgb2HSL(hex2RGB(hex));\r\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\r\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\r\n\treturn rgb2Hex(hsl2RGB(hsl));\r\n}\r\n\r\n/* 18.3.1.13 width calculations */\r\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\r\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\r\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\r\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\r\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\r\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\r\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\r\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\r\n/* XLSX/XLSB/XLS specify width in units of MDW */\r\nfunction find_mdw_colw(collw) {\r\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\r\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--;\r\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\r\n\t}\r\n\tMDW = _MDW;\r\n}*/\r\n\r\nfunction process_col(coll) {\r\n\tif(coll.width) {\r\n\t\tcoll.wpx = width2px(coll.width);\r\n\t\tcoll.wch = px2char(coll.wpx);\r\n\t\tcoll.MDW = MDW;\r\n\t} else if(coll.wpx) {\r\n\t\tcoll.wch = px2char(coll.wpx);\r\n\t\tcoll.width = char2width(coll.wch);\r\n\t\tcoll.MDW = MDW;\r\n\t} else if(typeof coll.wch == 'number') {\r\n\t\tcoll.width = char2width(coll.wch);\r\n\t\tcoll.wpx = width2px(coll.width);\r\n\t\tcoll.MDW = MDW;\r\n\t}\r\n\tif(coll.customWidth) delete coll.customWidth;\r\n}\r\n\r\nvar DEF_PPI = 96, PPI = DEF_PPI;\r\nfunction px2pt(px) { return px * 96 / PPI; }\r\nfunction pt2px(pt) { return pt * PPI / 96; }\r\n\r\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\r\nvar XLMLPatternTypeMap = {\r\n\t\"None\": \"none\",\r\n\t\"Solid\": \"solid\",\r\n\t\"Gray50\": \"mediumGray\",\r\n\t\"Gray75\": \"darkGray\",\r\n\t\"Gray25\": \"lightGray\",\r\n\t\"HorzStripe\": \"darkHorizontal\",\r\n\t\"VertStripe\": \"darkVertical\",\r\n\t\"ReverseDiagStripe\": \"darkDown\",\r\n\t\"DiagStripe\": \"darkUp\",\r\n\t\"DiagCross\": \"darkGrid\",\r\n\t\"ThickDiagCross\": \"darkTrellis\",\r\n\t\"ThinHorzStripe\": \"lightHorizontal\",\r\n\t\"ThinVertStripe\": \"lightVertical\",\r\n\t\"ThinReverseDiagStripe\": \"lightDown\",\r\n\t\"ThinHorzCross\": \"lightGrid\"\r\n};\r\n\r\n/* 18.8.5 borders CT_Borders */\r\nfunction parse_borders(t, styles, themes, opts) {\r\n\tstyles.Borders = [];\r\n\tvar border = {};\r\n\tvar pass = false;\r\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\r\n\t\tvar y = parsexmltag(x);\r\n\t\tswitch(strip_ns(y[0])) {\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.8.4 border CT_Border */\r\n\t\t\tcase '': case '':\r\n\t\t\t\tborder = {};\r\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\r\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\r\n\t\t\t\tstyles.Borders.push(border);\r\n\t\t\t\tbreak;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.43 top CT_BorderPr */\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\r\n\t\t\tcase '': case '': break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\r\n\t\t\tcase '': case '': break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\r\n\t\t\tcase '': case '': break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.37 start CT_BorderPr */\r\n\t\t\tcase '': case '': break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.16 end CT_BorderPr */\r\n\t\t\tcase '': case '': break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.? color CT_Color */\r\n\t\t\tcase '':\r\n\t\t\t\tbreak;\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\r\n\t\t\tcase '': case '': break;\r\n\t\t\tcase '': pass = false; break;\r\n\t\t\tdefault: if(opts && opts.WTF) {\r\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/* 18.8.21 fills CT_Fills */\r\nfunction parse_fills(t, styles, themes, opts) {\r\n\tstyles.Fills = [];\r\n\tvar fill = {};\r\n\tvar pass = false;\r\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\r\n\t\tvar y = parsexmltag(x);\r\n\t\tswitch(strip_ns(y[0])) {\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.8.20 fill CT_Fill */\r\n\t\t\tcase '': case '':\r\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': styles.Fills.push(fill); fill = {}; break;\r\n\r\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\r\n\t\t\tcase '':\r\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\r\n\t\t\t\tbreak;\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.8.3 bgColor CT_Color */\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.8.19 fgColor CT_Color */\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.8.38 stop CT_GradientStop */\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.? color CT_Color */\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\r\n\t\t\tcase '': case '': break;\r\n\t\t\tcase '': pass = false; break;\r\n\t\t\tdefault: if(opts && opts.WTF) {\r\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/* 18.8.23 fonts CT_Fonts */\r\nfunction parse_fonts(t, styles, themes, opts) {\r\n\tstyles.Fonts = [];\r\n\tvar font = {};\r\n\tvar pass = false;\r\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\r\n\t\tvar y = parsexmltag(x);\r\n\t\tswitch(strip_ns(y[0])) {\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.8.22 font CT_Font */\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': case '':\r\n\t\t\t\tstyles.Fonts.push(font);\r\n\t\t\t\tfont = {};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t/* 18.8.29 name CT_FontName */\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\r\n\t\t\tcase '': font.bold = 1; break;\r\n\r\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\r\n\t\t\tcase '': font.italic = 1; break;\r\n\r\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\r\n\t\t\tcase '': font.underline = 1; break;\r\n\r\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\r\n\t\t\tcase '': font.strike = 1; break;\r\n\r\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\r\n\t\t\tcase '': font.outline = 1; break;\r\n\r\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\r\n\t\t\tcase '': font.shadow = 1; break;\r\n\r\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\r\n\t\t\tcase '': font.condense = 1; break;\r\n\r\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\r\n\t\t\tcase '': font.extend = 1; break;\r\n\r\n\t\t\t/* 18.4.11 sz CT_FontSize */\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.8.18 family CT_FontFamily */\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.4.1 charset CT_IntProperty */\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\r\n\t\t\tcase '': pass = false; break;\r\n\r\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\r\n\t\t\tcase '': case '': break;\r\n\t\t\tcase '': pass = false; break;\r\n\t\t\tdefault: if(opts && opts.WTF) {\r\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/* 18.8.31 numFmts CT_NumFmts */\r\nfunction parse_numFmts(t, styles, opts) {\r\n\tstyles.NumberFmt = [];\r\n\tvar k/*Array*/ = (keys(table_fmt));\r\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\r\n\tvar m = t[0].match(tagregex);\r\n\tif(!m) return;\r\n\tfor(i=0; i < m.length; ++i) {\r\n\t\tvar y = parsexmltag(m[i]);\r\n\t\tswitch(strip_ns(y[0])) {\r\n\t\t\tcase '': case '': case '': break;\r\n\t\t\tcase '0) {\r\n\t\t\t\t\tif(j > 0x188) {\r\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\r\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tSSF__load(f,j);\r\n\t\t\t\t}\r\n\t\t\t} break;\r\n\t\t\tcase '': break;\r\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction write_numFmts(NF) {\r\n\tvar o = [\"\"];\r\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\r\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\r\n\t});\r\n\tif(o.length === 1) return \"\";\r\n\to[o.length] = (\"\");\r\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\r\n\treturn o.join(\"\");\r\n}\r\n\r\n/* 18.8.10 cellXfs CT_CellXfs */\r\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\r\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\r\nfunction parse_cellXfs(t, styles, opts) {\r\n\tstyles.CellXf = [];\r\n\tvar xf;\r\n\tvar pass = false;\r\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\r\n\t\tvar y = parsexmltag(x), i = 0;\r\n\t\tswitch(strip_ns(y[0])) {\r\n\t\t\tcase '': case '': case '': break;\r\n\r\n\t\t\t/* 18.8.45 xf CT_Xf */\r\n\t\t\tcase '':\r\n\t\t\t\txf = y;\r\n\t\t\t\tdelete xf[0];\r\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\r\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\r\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\r\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\r\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\r\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\r\n\t\t\t\t}\r\n\t\t\t\tstyles.CellXf.push(xf); break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\r\n\t\t\tcase '':\r\n\t\t\t\tvar alignment = {};\r\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\r\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\r\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\r\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\r\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\r\n\t\t\t\txf.alignment = alignment;\r\n\t\t\t\tbreak;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.8.33 protection CT_CellProtection */\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\r\n\t\t\tcase '': pass = false; break;\r\n\r\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\r\n\t\t\tcase '': case '': break;\r\n\t\t\tcase '': pass = false; break;\r\n\t\t\tdefault: if(opts && opts.WTF) {\r\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction write_cellXfs(cellXfs) {\r\n\tvar o = [];\r\n\to[o.length] = (writextag('cellXfs',null));\r\n\tcellXfs.forEach(function(c) {\r\n\t\to[o.length] = (writextag('xf', null, c));\r\n\t});\r\n\to[o.length] = (\"\");\r\n\tif(o.length === 2) return \"\";\r\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\r\n\treturn o.join(\"\");\r\n}\r\n\r\n/* 18.8 Styles CT_Stylesheet*/\r\nvar parse_sty_xml= (function make_pstyx() {\r\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\r\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\r\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\r\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\r\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\r\n\r\nreturn function parse_sty_xml(data, themes, opts) {\r\n\tvar styles = {};\r\n\tif(!data) return styles;\r\n\tdata = data.replace(//mg,\"\").replace(//gm,\"\");\r\n\t/* 18.8.39 styleSheet CT_Stylesheet */\r\n\tvar t;\r\n\r\n\t/* 18.8.31 numFmts CT_NumFmts ? */\r\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\r\n\r\n\t/* 18.8.23 fonts CT_Fonts ? */\r\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\r\n\r\n\t/* 18.8.21 fills CT_Fills ? */\r\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\r\n\r\n\t/* 18.8.5 borders CT_Borders ? */\r\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\r\n\r\n\t/* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */\r\n\t/* 18.8.8 cellStyles CT_CellStyles ? */\r\n\r\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\r\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\r\n\r\n\t/* 18.8.15 dxfs CT_Dxfs ? */\r\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\r\n\t/* 18.8.11 colors CT_Colors ? */\r\n\t/* 18.2.10 extLst CT_ExtensionList ? */\r\n\r\n\treturn styles;\r\n};\r\n})();\r\n\r\nfunction write_sty_xml(wb, opts) {\r\n if (typeof style_builder != 'undefined' && typeof 'require' != 'undefined') {\r\n return style_builder.toXml();\r\n }\r\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\r\n\t\t'xmlns': XMLNS_main[0],\r\n\t\t'xmlns:vt': XMLNS.vt\r\n\t})], w;\r\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\r\n\to[o.length] = ('');\r\n\to[o.length] = ('');\r\n\to[o.length] = ('');\r\n\to[o.length] = ('');\r\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\r\n\to[o.length] = ('');\r\n\to[o.length] = ('');\r\n\to[o.length] = ('');\r\n\r\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\r\n\treturn o.join(\"\");\r\n}\r\n/* [MS-XLSB] 2.4.657 BrtFmt */\r\nfunction parse_BrtFmt(data, length) {\r\n\tvar numFmtId = data.read_shift(2);\r\n\tvar stFmtCode = parse_XLWideString(data,length-2);\r\n\treturn [numFmtId, stFmtCode];\r\n}\r\nfunction write_BrtFmt(i, f, o) {\r\n\tif(!o) o = new_buf(6 + 4 * f.length);\r\n\to.write_shift(2, i);\r\n\twrite_XLWideString(f, o);\r\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\r\n\tif(o.l == null) o.l = o.length;\r\n\treturn out;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\r\nfunction parse_BrtFont(data, length, opts) {\r\n\tvar out = ({});\r\n\r\n\tout.sz = data.read_shift(2) / 20;\r\n\r\n\tvar grbit = parse_FontFlags(data, 2, opts);\r\n\tif(grbit.fItalic) out.italic = 1;\r\n\tif(grbit.fCondense) out.condense = 1;\r\n\tif(grbit.fExtend) out.extend = 1;\r\n\tif(grbit.fShadow) out.shadow = 1;\r\n\tif(grbit.fOutline) out.outline = 1;\r\n\tif(grbit.fStrikeout) out.strike = 1;\r\n\r\n\tvar bls = data.read_shift(2);\r\n\tif(bls === 0x02BC) out.bold = 1;\r\n\r\n\tswitch(data.read_shift(2)) {\r\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\r\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\r\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\r\n\t}\r\n\r\n\tvar underline = data.read_shift(1);\r\n\tif(underline != 0) out.underline = underline;\r\n\r\n\tvar family = data.read_shift(1);\r\n\tif(family > 0) out.family = family;\r\n\r\n\tvar bCharSet = data.read_shift(1);\r\n\tif(bCharSet > 0) out.charset = bCharSet;\r\n\r\n\tdata.l++;\r\n\tout.color = parse_BrtColor(data, 8);\r\n\r\n\tswitch(data.read_shift(1)) {\r\n\t\t/* case 0: out.scheme = \"none\": break; */\r\n\t\tcase 1: out.scheme = \"major\"; break;\r\n\t\tcase 2: out.scheme = \"minor\"; break;\r\n\t}\r\n\r\n\tout.name = parse_XLWideString(data, length - 21);\r\n\r\n\treturn out;\r\n}\r\nfunction write_BrtFont(font, o) {\r\n\tif(!o) o = new_buf(25+4*32);\r\n\to.write_shift(2, font.sz * 20);\r\n\twrite_FontFlags(font, o);\r\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\r\n\tvar sss = 0;\r\n\tif(font.vertAlign == \"superscript\") sss = 1;\r\n\telse if(font.vertAlign == \"subscript\") sss = 2;\r\n\to.write_shift(2, sss);\r\n\to.write_shift(1, font.underline || 0);\r\n\to.write_shift(1, font.family || 0);\r\n\to.write_shift(1, font.charset || 0);\r\n\to.write_shift(1, 0);\r\n\twrite_BrtColor(font.color, o);\r\n\tvar scheme = 0;\r\n\tif(font.scheme == \"major\") scheme = 1;\r\n\tif(font.scheme == \"minor\") scheme = 2;\r\n\to.write_shift(1, scheme);\r\n\twrite_XLWideString(font.name, o);\r\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.650 BrtFill */\r\nvar XLSBFillPTNames = [\r\n\t\"none\",\r\n\t\"solid\",\r\n\t\"mediumGray\",\r\n\t\"darkGray\",\r\n\t\"lightGray\",\r\n\t\"darkHorizontal\",\r\n\t\"darkVertical\",\r\n\t\"darkDown\",\r\n\t\"darkUp\",\r\n\t\"darkGrid\",\r\n\t\"darkTrellis\",\r\n\t\"lightHorizontal\",\r\n\t\"lightVertical\",\r\n\t\"lightDown\",\r\n\t\"lightUp\",\r\n\t\"lightGrid\",\r\n\t\"lightTrellis\",\r\n\t\"gray125\",\r\n\t\"gray0625\"\r\n];\r\nvar rev_XLSBFillPTNames;\r\n/* TODO: gradient fill representation */\r\nvar parse_BrtFill = parsenoop;\r\nfunction write_BrtFill(fill, o) {\r\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\r\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames));\r\n\tvar fls = rev_XLSBFillPTNames[fill.patternType];\r\n\tif(fls == null) fls = 0x28;\r\n\to.write_shift(4, fls);\r\n\tvar j = 0;\r\n\tif(fls != 0x28) {\r\n\t\t/* TODO: custom FG Color */\r\n\t\twrite_BrtColor({auto:1}, o);\r\n\t\t/* TODO: custom BG Color */\r\n\t\twrite_BrtColor({auto:1}, o);\r\n\r\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\r\n\t} else {\r\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\r\n\r\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\r\n\t\t/* iGradientType */\r\n\t\t/* xnumDegree */\r\n\t\t/* xnumFillToLeft */\r\n\t\t/* xnumFillToRight */\r\n\t\t/* xnumFillToTop */\r\n\t\t/* xnumFillToBottom */\r\n\t\t/* cNumStop */\r\n\t\t/* xfillGradientStop */\r\n\t}\r\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.824 BrtXF */\r\nfunction parse_BrtXF(data, length) {\r\n\tvar tgt = data.l + length;\r\n\tvar ixfeParent = data.read_shift(2);\r\n\tvar ifmt = data.read_shift(2);\r\n\tdata.l = tgt;\r\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\r\n}\r\nfunction write_BrtXF(data, ixfeP, o) {\r\n\tif(!o) o = new_buf(16);\r\n\to.write_shift(2, ixfeP||0);\r\n\to.write_shift(2, data.numFmtId||0);\r\n\to.write_shift(2, 0); /* iFont */\r\n\to.write_shift(2, 0); /* iFill */\r\n\to.write_shift(2, 0); /* ixBorder */\r\n\to.write_shift(1, 0); /* trot */\r\n\to.write_shift(1, 0); /* indent */\r\n\tvar flow = 0;\r\n\to.write_shift(1, flow); /* flags */\r\n\to.write_shift(1, 0); /* flags */\r\n\to.write_shift(1, 0); /* xfGrbitAtr */\r\n\to.write_shift(1, 0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.5.4 Blxf TODO */\r\nfunction write_Blxf(data, o) {\r\n\tif(!o) o = new_buf(10);\r\n\to.write_shift(1, 0); /* dg */\r\n\to.write_shift(1, 0);\r\n\to.write_shift(4, 0); /* color */\r\n\to.write_shift(4, 0); /* color */\r\n\treturn o;\r\n}\r\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\r\nvar parse_BrtBorder = parsenoop;\r\nfunction write_BrtBorder(border, o) {\r\n\tif(!o) o = new_buf(51);\r\n\to.write_shift(1, 0); /* diagonal */\r\n\twrite_Blxf(null, o); /* top */\r\n\twrite_Blxf(null, o); /* bottom */\r\n\twrite_Blxf(null, o); /* left */\r\n\twrite_Blxf(null, o); /* right */\r\n\twrite_Blxf(null, o); /* diag */\r\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\r\nfunction write_BrtStyle(style, o) {\r\n\tif(!o) o = new_buf(12+4*10);\r\n\to.write_shift(4, style.xfId);\r\n\to.write_shift(2, 1);\r\n\to.write_shift(1, +style.builtinId);\r\n\to.write_shift(1, 0); /* iLevel */\r\n\twrite_XLNullableWideString(style.name || \"\", o);\r\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\r\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\r\n\tvar o = new_buf(4+256*2*4);\r\n\to.write_shift(4, cnt);\r\n\twrite_XLNullableWideString(defTableStyle, o);\r\n\twrite_XLNullableWideString(defPivotStyle, o);\r\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\r\n}\r\n\r\n/* [MS-XLSB] 2.1.7.50 Styles */\r\nfunction parse_sty_bin(data, themes, opts) {\r\n\tvar styles = {};\r\n\tstyles.NumberFmt = ([]);\r\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\r\n\r\n\tstyles.CellXf = [];\r\n\tstyles.Fonts = [];\r\n\tvar state = [];\r\n\tvar pass = false;\r\n\trecordhopper(data, function hopper_sty(val, R, RT) {\r\n\t\tswitch(RT) {\r\n\t\t\tcase 0x002C: /* BrtFmt */\r\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF__load(val[1], val[0]);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 0x002B: /* BrtFont */\r\n\t\t\t\tstyles.Fonts.push(val);\r\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\r\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\r\n\t\t\tcase 0x002D: /* BrtFill */\r\n\t\t\t\tbreak;\r\n\t\t\tcase 0x002E: /* BrtBorder */\r\n\t\t\t\tbreak;\r\n\t\t\tcase 0x002F: /* BrtXF */\r\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\r\n\t\t\t\t\tstyles.CellXf.push(val);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 0x0030: /* BrtStyle */\r\n\t\t\tcase 0x01FB: /* BrtDXF */\r\n\t\t\tcase 0x023C: /* BrtMRUColor */\r\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0493: /* BrtDXF14 */\r\n\t\t\tcase 0x0836: /* BrtDXF15 */\r\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\r\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\r\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\r\n\t\t\tcase 0x0C00: /* BrtUid */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0023: /* BrtFRTBegin */\r\n\t\t\t\tpass = true; break;\r\n\t\t\tcase 0x0024: /* BrtFRTEnd */\r\n\t\t\t\tpass = false; break;\r\n\t\t\tcase 0x0025: /* BrtACBegin */\r\n\t\t\t\tstate.push(RT); pass = true; break;\r\n\t\t\tcase 0x0026: /* BrtACEnd */\r\n\t\t\t\tstate.pop(); pass = false; break;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tif(R.T > 0) state.push(RT);\r\n\t\t\t\telse if(R.T < 0) state.pop();\r\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\r\n\t\t}\r\n\t});\r\n\treturn styles;\r\n}\r\n\r\nfunction write_FMTS_bin(ba, NF) {\r\n\tif(!NF) return;\r\n\tvar cnt = 0;\r\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\r\nfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\r\n\t});\r\n\r\n\tif(cnt == 0) return;\r\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\r\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\r\nfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\r\n\t});\r\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\r\n}\r\n\r\nfunction write_FONTS_bin(ba) {\r\n\tvar cnt = 1;\r\n\r\n\tif(cnt == 0) return;\r\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\r\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\r\n\t\tsz:12,\r\n\t\tcolor: {theme:1},\r\n\t\tname: \"Calibri\",\r\n\t\tfamily: 2,\r\n\t\tscheme: \"minor\"\r\n\t}));\r\n\t/* 1*65491BrtFont [ACFONTS] */\r\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\r\n}\r\n\r\nfunction write_FILLS_bin(ba) {\r\n\tvar cnt = 2;\r\n\r\n\tif(cnt == 0) return;\r\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\r\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\r\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\r\n\t/* 1*65431BrtFill */\r\n\twrite_record(ba, 0x025C /* BrtEndFills */);\r\n}\r\n\r\nfunction write_BORDERS_bin(ba) {\r\n\tvar cnt = 1;\r\n\r\n\tif(cnt == 0) return;\r\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\r\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\r\n\t/* 1*65430BrtBorder */\r\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\r\n}\r\n\r\nfunction write_CELLSTYLEXFS_bin(ba) {\r\n\tvar cnt = 1;\r\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\r\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\r\n\t\tnumFmtId: 0,\r\n\t\tfontId: 0,\r\n\t\tfillId: 0,\r\n\t\tborderId: 0\r\n\t}, 0xFFFF));\r\n\t/* 1*65430(BrtXF *FRT) */\r\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\r\n}\r\n\r\nfunction write_CELLXFS_bin(ba, data) {\r\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\r\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\r\n\t/* 1*65430(BrtXF *FRT) */\r\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\r\n}\r\n\r\nfunction write_STYLES_bin(ba) {\r\n\tvar cnt = 1;\r\n\r\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\r\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\r\n\t\txfId:0,\r\n\t\tbuiltinId:0,\r\n\t\tname:\"Normal\"\r\n\t}));\r\n\t/* 1*65430(BrtStyle *FRT) */\r\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\r\n}\r\n\r\nfunction write_DXFS_bin(ba) {\r\n\tvar cnt = 0;\r\n\r\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\r\n\t/* *2147483647(BrtDXF *FRT) */\r\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\r\n}\r\n\r\nfunction write_TABLESTYLES_bin(ba) {\r\n\tvar cnt = 0;\r\n\r\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\r\n\t/* *TABLESTYLE */\r\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\r\n}\r\n\r\nfunction write_COLORPALETTE_bin() {\r\n\treturn;\r\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\r\n}\r\n\r\n/* [MS-XLSB] 2.1.7.50 Styles */\r\nfunction write_sty_bin(wb, opts) {\r\n\tvar ba = buf_array();\r\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\r\n\twrite_FMTS_bin(ba, wb.SSF);\r\n\twrite_FONTS_bin(ba, wb);\r\n\twrite_FILLS_bin(ba, wb);\r\n\twrite_BORDERS_bin(ba, wb);\r\n\twrite_CELLSTYLEXFS_bin(ba, wb);\r\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\r\n\twrite_STYLES_bin(ba, wb);\r\n\twrite_DXFS_bin(ba, wb);\r\n\twrite_TABLESTYLES_bin(ba, wb);\r\n\twrite_COLORPALETTE_bin(ba, wb);\r\n\t/* FRTSTYLESHEET*/\r\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\r\n\treturn ba.end();\r\n}\r\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\r\nvar XLSXThemeClrScheme = [\r\n\t'', '', '', '',\r\n\t'', '', '',\r\n\t'', '', '',\r\n\t'', ''\r\n];\r\n/* 20.1.6.2 clrScheme CT_ColorScheme */\r\nfunction parse_clrScheme(t, themes, opts) {\r\n\tthemes.themeElements.clrScheme = [];\r\n\tvar color = {};\r\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\r\n\t\tvar y = parsexmltag(x);\r\n\t\tswitch(y[0]) {\r\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\r\n\t\t\tcase '': case '':\r\n\t\t\tcase '': case '':\r\n\t\t\tcase '': case '':\r\n\t\t\tcase '': case '':\r\n\t\t\tcase '': case '':\r\n\t\t\tcase '': case '':\r\n\t\t\tcase '': case '':\r\n\t\t\tcase '': case '':\r\n\t\t\tcase '': case '':\r\n\t\t\tcase '': case '':\r\n\t\t\tcase '': case '':\r\n\t\t\tcase '': case '':\r\n\t\t\t\tif (y[0].charAt(1) === '/') {\r\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\r\n\t\t\t\t\tcolor = {};\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\r\nfunction parse_fontScheme() { }\r\n\r\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\r\nfunction parse_fmtScheme() { }\r\n\r\nvar clrsregex = /]*)>[\\s\\S]*<\\/a:clrScheme>/;\r\nvar fntsregex = /]*)>[\\s\\S]*<\\/a:fontScheme>/;\r\nvar fmtsregex = /]*)>[\\s\\S]*<\\/a:fmtScheme>/;\r\n\r\n/* 20.1.6.10 themeElements CT_BaseStyles */\r\nfunction parse_themeElements(data, themes, opts) {\r\n\tthemes.themeElements = {};\r\n\r\n\tvar t;\r\n\r\n\t[\r\n\t\t/* clrScheme CT_ColorScheme */\r\n\t\t['clrScheme', clrsregex, parse_clrScheme],\r\n\t\t/* fontScheme CT_FontScheme */\r\n\t\t['fontScheme', fntsregex, parse_fontScheme],\r\n\t\t/* fmtScheme CT_StyleMatrix */\r\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\r\n\t].forEach(function(m) {\r\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\r\n\t\tm[2](t, themes, opts);\r\n\t});\r\n}\r\n\r\nvar themeltregex = /]*)>[\\s\\S]*<\\/a:themeElements>/;\r\n\r\n/* 14.2.7 Theme Part */\r\nfunction parse_theme_xml(data, opts) {\r\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\r\n\tif(!data || data.length === 0) data = write_theme();\r\n\r\n\tvar t;\r\n\tvar themes = {};\r\n\r\n\t/* themeElements CT_BaseStyles */\r\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\r\n\tparse_themeElements(t[0], themes, opts);\r\n\tthemes.raw = data;\r\n\treturn themes;\r\n}\r\n\r\nfunction write_theme(Themes, opts) {\r\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\r\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\r\n\tvar o = [XML_HEADER];\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\to[o.length] = '';\r\n\treturn o.join(\"\");\r\n}\r\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\r\nfunction parse_Theme(blob, length, opts) {\r\n\tvar end = blob.l + length;\r\n\tvar dwThemeVersion = blob.read_shift(4);\r\n\tif(dwThemeVersion === 124226) return;\r\n\tif(!opts.cellStyles) { blob.l = end; return; }\r\n\tvar data = blob.slice(blob.l);\r\n\tblob.l = end;\r\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\r\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\r\n\tif(!themeXML) return;\r\n\treturn parse_theme_xml(themeXML, opts);\r\n}\r\n\r\n/* 2.5.49 */\r\nfunction parse_ColorTheme(blob) { return blob.read_shift(4); }\r\n\r\n/* 2.5.155 */\r\nfunction parse_FullColorExt(blob) {\r\n\tvar o = {};\r\n\to.xclrType = blob.read_shift(2);\r\n\to.nTintShade = blob.read_shift(2);\r\n\tswitch(o.xclrType) {\r\n\t\tcase 0: blob.l += 4; break;\r\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\r\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\r\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\r\n\t\tcase 4: blob.l += 4; break;\r\n\t}\r\n\tblob.l += 8;\r\n\treturn o;\r\n}\r\n\r\n/* 2.5.164 TODO: read 7 bits*/\r\nfunction parse_IcvXF(blob, length) {\r\n\treturn parsenoop(blob, length);\r\n}\r\n\r\n/* 2.5.280 */\r\nfunction parse_XFExtGradient(blob, length) {\r\n\treturn parsenoop(blob, length);\r\n}\r\n\r\n/* [MS-XLS] 2.5.108 */\r\nfunction parse_ExtProp(blob) {\r\n\tvar extType = blob.read_shift(2);\r\n\tvar cb = blob.read_shift(2) - 4;\r\n\tvar o = [extType];\r\n\tswitch(extType) {\r\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\r\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\r\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\r\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\r\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\r\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\r\n\t}\r\n\treturn o;\r\n}\r\n\r\n/* 2.4.355 */\r\nfunction parse_XFExt(blob, length) {\r\n\tvar end = blob.l + length;\r\n\tblob.l += 2;\r\n\tvar ixfe = blob.read_shift(2);\r\n\tblob.l += 2;\r\n\tvar cexts = blob.read_shift(2);\r\n\tvar ext = [];\r\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\r\n\treturn {ixfe:ixfe, ext:ext};\r\n}\r\n\r\n/* xf is an XF, see parse_XFExt for xfext */\r\nfunction update_xfext(xf, xfext) {\r\n\txfext.forEach(function(xfe) {\r\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\r\n\t\t\tcase 0x04: break; /* foreground color */\r\n\t\t\tcase 0x05: break; /* background color */\r\n\t\t\tcase 0x06: break; /* gradient fill */\r\n\t\t\tcase 0x07: break; /* top cell border color */\r\n\t\t\tcase 0x08: break; /* bottom cell border color */\r\n\t\t\tcase 0x09: break; /* left cell border color */\r\n\t\t\tcase 0x0a: break; /* right cell border color */\r\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\r\n\t\t\tcase 0x0d: /* text color */\r\n\t\t\t\tbreak;\r\n\t\t\tcase 0x0e: break; /* font scheme */\r\n\t\t\tcase 0x0f: break; /* indentation level */\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction parse_BrtMdtinfo(data, length) {\r\n return {\r\n flags: data.read_shift(4),\r\n version: data.read_shift(4),\r\n name: parse_XLWideString(data, length - 8)\r\n };\r\n}\r\nfunction write_BrtMdtinfo(data) {\r\n var o = new_buf(12 + 2 * data.name.length);\r\n o.write_shift(4, data.flags);\r\n o.write_shift(4, data.version);\r\n write_XLWideString(data.name, o);\r\n return o.slice(0, o.l);\r\n}\r\nfunction parse_BrtMdb(data) {\r\n var out = [];\r\n var cnt = data.read_shift(4);\r\n while (cnt-- > 0)\r\n out.push([data.read_shift(4), data.read_shift(4)]);\r\n return out;\r\n}\r\nfunction write_BrtMdb(mdb) {\r\n var o = new_buf(4 + 8 * mdb.length);\r\n o.write_shift(4, mdb.length);\r\n for (var i = 0; i < mdb.length; ++i) {\r\n o.write_shift(4, mdb[i][0]);\r\n o.write_shift(4, mdb[i][1]);\r\n }\r\n return o;\r\n}\r\nfunction write_BrtBeginEsfmd(cnt, name) {\r\n var o = new_buf(8 + 2 * name.length);\r\n o.write_shift(4, cnt);\r\n write_XLWideString(name, o);\r\n return o.slice(0, o.l);\r\n}\r\nfunction parse_BrtBeginEsmdb(data) {\r\n data.l += 4;\r\n return data.read_shift(4) != 0;\r\n}\r\nfunction write_BrtBeginEsmdb(cnt, cm) {\r\n var o = new_buf(8);\r\n o.write_shift(4, cnt);\r\n o.write_shift(4, cm ? 1 : 0);\r\n return o;\r\n}\r\nfunction parse_xlmeta_bin(data, name, _opts) {\r\n var out = { Types: [], Cell: [], Value: [] };\r\n var opts = _opts || {};\r\n var state = [];\r\n var pass = false;\r\n var metatype = 2;\r\n recordhopper(data, function(val, R, RT) {\r\n switch (RT) {\r\n case 335:\r\n out.Types.push({ name: val.name });\r\n break;\r\n case 51:\r\n val.forEach(function(r) {\r\n if (metatype == 1)\r\n out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\r\n else if (metatype == 0)\r\n out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\r\n });\r\n break;\r\n case 337:\r\n metatype = val ? 1 : 0;\r\n break;\r\n case 338:\r\n metatype = 2;\r\n break;\r\n case 35:\r\n state.push(RT);\r\n pass = true;\r\n break;\r\n case 36:\r\n state.pop();\r\n pass = false;\r\n break;\r\n default:\r\n if (R.T) {\r\n } else if (!pass || opts.WTF && state[state.length - 1] != 35)\r\n throw new Error(\"Unexpected record 0x\" + RT.toString(16));\r\n }\r\n });\r\n return out;\r\n}\r\nfunction write_xlmeta_bin() {\r\n var ba = buf_array();\r\n write_record(ba, 332);\r\n write_record(ba, 334, write_UInt32LE(1));\r\n write_record(ba, 335, write_BrtMdtinfo({\r\n name: \"XLDAPR\",\r\n version: 12e4,\r\n flags: 3496657072\r\n }));\r\n write_record(ba, 336);\r\n write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\r\n write_record(ba, 52);\r\n write_record(ba, 35, write_UInt32LE(514));\r\n write_record(ba, 4096, write_UInt32LE(0));\r\n write_record(ba, 4097, writeuint16(1));\r\n write_record(ba, 36);\r\n write_record(ba, 53);\r\n write_record(ba, 340);\r\n write_record(ba, 337, write_BrtBeginEsmdb(1, true));\r\n write_record(ba, 51, write_BrtMdb([[1, 0]]));\r\n write_record(ba, 338);\r\n write_record(ba, 333);\r\n return ba.end();\r\n}\r\nfunction parse_xlmeta_xml(data, name, opts) {\r\n var out = { Types: [], Cell: [], Value: [] };\r\n if (!data)\r\n return out;\r\n var pass = false;\r\n var metatype = 2;\r\n var lastmeta;\r\n data.replace(tagregex, function(x) {\r\n var y = parsexmltag(x);\r\n switch (strip_ns(y[0])) {\r\n case \"\":\r\n break;\r\n case \"\":\r\n break;\r\n case \"\":\r\n break;\r\n case \"\":\r\n break;\r\n case \"\":\r\n break;\r\n case \"\":\r\n break;\r\n case \"\":\r\n break;\r\n case \"\":\r\n metatype = 2;\r\n break;\r\n case \"\":\r\n metatype = 2;\r\n break;\r\n case \"\":\r\n case \"\":\r\n case \"\":\r\n break;\r\n case \"\":\r\n pass = false;\r\n break;\r\n case \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n');\r\n return o.join(\"\");\r\n}\r\n/* 18.6 Calculation Chain */\r\nfunction parse_cc_xml(data) {\r\n\tvar d = [];\r\n\tif(!data) return d;\r\n\tvar i = 1;\r\n\t(data.match(tagregex)||[]).forEach(function(x) {\r\n\t\tvar y = parsexmltag(x);\r\n\t\tswitch(y[0]) {\r\n\t\t\tcase '': case '': break;\r\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\r\n\t\t\tcase ']*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\r\n\r\n\treturn rels['!id'][id].Target;\r\n}\r\n\r\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\r\nfunction write_vml(rId, comments) {\r\n\tvar csize = [21600, 21600];\r\n\t/* L.5.2.1.2 Path Attribute */\r\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\r\n\tvar o = [\r\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\r\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"})\r\n\t];\r\n\r\n\tvar _shapeid = 65536 * rId;\r\n\r\n\tvar _comments = comments || [];\r\n\tif(_comments.length > 0) o.push(writextag(\"v:shapetype\", [\r\n\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\r\n\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\r\n\t].join(\"\"), {id:\"_x0000_t202\", coordsize:csize.join(\",\"), 'o:spt':202, path:bbox}));\r\n\r\n\t_comments.forEach(function(x) { ++_shapeid; o.push(write_vml_comment(x, _shapeid)); });\r\n\to.push('');\r\n\treturn o.join(\"\");\r\n}\r\n\r\nfunction write_vml_comment(x, _shapeid) {\r\n\tvar c = decode_cell(x[0]);\r\n\tvar fillopts = {'color2':\"#BEFF82\", 'type':\"gradient\"};\r\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\r\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\r\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\r\n\r\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"});\r\n\r\n\treturn [\r\n\t'',\r\n\t\tfillxml,\r\n\t\twritextag(\"v:shadow\", null, shadata),\r\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\r\n\t\t'
',\r\n\t\t'',\r\n\t\t\t'',\r\n\t\t\t'',\r\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\r\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\r\n\t\t\twritetag('x:AutoFill', \"False\"),\r\n\t\t\twritetag('x:Row', String(c.r)),\r\n\t\t\twritetag('x:Column', String(c.c)),\r\n\t\t\tx[1].hidden ? '' : '',\r\n\t\t'',\r\n\t''\r\n\t].join(\"\");\r\n}\r\nfunction sheet_insert_comments(sheet, comments, threaded, people) {\r\n\tvar dense = Array.isArray(sheet);\r\n\tvar cell;\r\n\tcomments.forEach(function(comment) {\r\n\t\tvar r = decode_cell(comment.ref);\r\n\t\tif(dense) {\r\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\r\n\t\t\tcell = sheet[r.r][r.c];\r\n\t\t} else cell = sheet[comment.ref];\r\n\t\tif (!cell) {\r\n\t\t\tcell = ({t:\"z\"});\r\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\r\n\t\t\telse sheet[comment.ref] = cell;\r\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\r\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\r\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\r\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\r\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\r\n\t\t\tvar encoded = encode_range(range);\r\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\r\n\t\t}\r\n\r\n\t\tif (!cell.c) cell.c = [];\r\n\t\tvar o = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\r\n\t\tif(comment.h) o.h = comment.h;\r\n\r\n\t\t/* threaded comments always override */\r\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\r\n\t\t\tif(!threaded && cell.c[i].T) return;\r\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\r\n\t\t}\r\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\r\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\r\n\t\t}\r\n\t\tcell.c.push(o);\r\n\t});\r\n}\r\n\r\n/* 18.7 Comments */\r\nfunction parse_comments_xml(data, opts) {\r\n\t/* 18.7.6 CT_Comments */\r\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\r\n\tvar authors = [];\r\n\tvar commentList = [];\r\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\r\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\r\n\t\tif(x === \"\" || x.trim() === \"\") return;\r\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\r\n\t\tif(a) authors.push(a[1]);\r\n\t});\r\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\r\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\r\n\t\tif(x === \"\" || x.trim() === \"\") return;\r\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\r\n\t\tif(!cm) return;\r\n\t\tvar y = parsexmltag(cm[0]);\r\n\t\tvar comment = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid });\r\n\t\tvar cell = decode_cell(y.ref);\r\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\r\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\r\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\r\n\t\tcomment.r = rt.r;\r\n\t\tif(rt.r == \"\") rt.t = rt.h = \"\";\r\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\r\n\t\tif(opts.cellHTML) comment.h = rt.h;\r\n\t\tcommentList.push(comment);\r\n\t});\r\n\treturn commentList;\r\n}\r\n\r\nfunction write_comments_xml(data) {\r\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\r\n\r\n\tvar iauthor = [];\r\n\to.push(\"\");\r\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\r\n\t\tif(iauthor.indexOf(a) == -1) {\r\n\t\t\tiauthor.push(a);\r\n\t\t\to.push(\"\" + a + \"\");\r\n\t\t}\r\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\r\n\t\t\tiauthor.push(\"tc=\" + w.ID);\r\n\t\t\to.push(\"\" + \"tc=\" + w.ID + \"\");\r\n\t\t}\r\n\t}); });\r\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"SheetJ5\"); }\r\n\to.push(\"\");\r\n\to.push(\"\");\r\n\tdata.forEach(function(d) {\r\n\t\t/* 18.7.3 CT_Comment */\r\n\t\tvar lastauthor = 0, ts = [];\r\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\r\n\t\telse d[1].forEach(function(c) {\r\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\r\n\t\t\tts.push(c.t||\"\");\r\n\t\t});\r\n\t\to.push('');\r\n\t\tif(ts.length <= 1) o.push(writetag(\"t\", escapexml(ts[0]||\"\")));\r\n\t\telse {\r\n\t\t\t/* based on Threaded Comments -> Comments projection */\r\n\t\t\tvar t = \"Comment:\\n \" + (ts[0]) + \"\\n\";\r\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n \" + ts[i] + \"\\n\";\r\n\t\t\to.push(writetag(\"t\", escapexml(t)));\r\n\t\t}\r\n\t\to.push('');\r\n\t});\r\n\to.push(\"\");\r\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\r\n\treturn o.join(\"\");\r\n}\r\n\r\n/* [MS-XLSX] 2.1.17 */\r\nfunction parse_tcmnt_xml(data, opts) {\r\n\tvar out = [];\r\n\tvar pass = false, comment = {}, tidx = 0;\r\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\r\n\t\tvar y = parsexmltag(x);\r\n\t\tswitch(strip_ns(y[0])) {\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\r\n\t\t\tcase '': if(comment.t != null) out.push(comment); break;\r\n\r\n\t\t\tcase '': case '': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\r\n\r\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\r\n\t\t\tcase '': pass = true; break;\r\n\t\t\tcase '': pass = false; break;\r\n\r\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\r\n\r\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\r\n\t\t\tcase '': case '
': case '': break;\r\n\t\t\t/* 18.2.7 ext CT_Extension + */\r\n\t\t\tcase '': pass=false; break;\r\n\r\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\r\n\t\t}\r\n\t\treturn x;\r\n\t});\r\n\treturn out;\r\n}\r\n\r\nfunction write_tcmnt_xml(comments, people, opts) {\r\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\r\n\tcomments.forEach(function(carr) {\r\n\t\tvar rootid = \"\";\r\n\t\t(carr[1] || []).forEach(function(c, idx) {\r\n\t\t\tif(!c.T) { delete c.ID; return; }\r\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\r\n\t\t\tvar tcopts = {\r\n\t\t\t\tref: carr[0],\r\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\r\n\t\t\t};\r\n\t\t\tif(idx == 0) rootid = tcopts.id;\r\n\t\t\telse tcopts.parentId = rootid;\r\n\t\t\tc.ID = tcopts.id;\r\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\r\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\r\n\t\t});\r\n\t});\r\n\to.push('');\r\n\treturn o.join(\"\");\r\n}\r\n\r\n/* [MS-XLSX] 2.1.18 */\r\nfunction parse_people_xml(data, opts) {\r\n\tvar out = [];\r\n\tvar pass = false;\r\n\tdata.replace(tagregex, function xml_tcmnt(x) {\r\n\t\tvar y = parsexmltag(x);\r\n\t\tswitch(strip_ns(y[0])) {\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\r\n\t\t\tcase '': case '': case '': break;\r\n\t\t\t/* 18.2.7 ext CT_Extension + */\r\n\t\t\tcase '': pass=false; break;\r\n\r\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\r\n\t\t}\r\n\t\treturn x;\r\n\t});\r\n\treturn out;\r\n}\r\nfunction write_people_xml(people/*, opts*/) {\r\n\tvar o = [XML_HEADER, writextag('personList', null, {\r\n\t\t'xmlns': XMLNS.TCMNT,\r\n\t\t'xmlns:x': XMLNS_main[0]\r\n\t}).replace(/[\\/]>/, \">\")];\r\n\tpeople.forEach(function(person, idx) {\r\n\t\to.push(writextag('person', null, {\r\n\t\t\tdisplayName: person,\r\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\r\n\t\t\tuserId: person,\r\n\t\t\tproviderId: \"None\"\r\n\t\t}));\r\n\t});\r\n\to.push(\"\");\r\n\treturn o.join(\"\");\r\n}\r\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\r\nfunction parse_BrtBeginComment(data) {\r\n\tvar out = {};\r\n\tout.iauthor = data.read_shift(4);\r\n\tvar rfx = parse_UncheckedRfX(data, 16);\r\n\tout.rfx = rfx.s;\r\n\tout.ref = encode_cell(rfx.s);\r\n\tdata.l += 16; /*var guid = parse_GUID(data); */\r\n\treturn out;\r\n}\r\nfunction write_BrtBeginComment(data, o) {\r\n\tif(o == null) o = new_buf(36);\r\n\to.write_shift(4, data[1].iauthor);\r\n\twrite_UncheckedRfX((data[0]), o);\r\n\to.write_shift(4, 0);\r\n\to.write_shift(4, 0);\r\n\to.write_shift(4, 0);\r\n\to.write_shift(4, 0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\r\nvar parse_BrtCommentAuthor = parse_XLWideString;\r\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\r\n\r\n/* [MS-XLSB] 2.1.7.8 Comments */\r\nfunction parse_comments_bin(data, opts) {\r\n\tvar out = [];\r\n\tvar authors = [];\r\n\tvar c = {};\r\n\tvar pass = false;\r\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\r\n\t\tswitch(RT) {\r\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\r\n\t\t\t\tauthors.push(val); break;\r\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\r\n\t\t\t\tc = val; break;\r\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\r\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\r\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\r\n\t\t\t\tc.author = authors[c.iauthor];\r\n\t\t\t\tdelete (c).iauthor;\r\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\r\n\t\t\t\tif(!c.t) c.t = \"\";\r\n\t\t\t\tdelete c.rfx; out.push(c); break;\r\n\r\n\t\t\tcase 0x0C00: /* 'BrtUid' */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\r\n\t\t\t\tpass = true; break;\r\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\r\n\t\t\t\tpass = false; break;\r\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\r\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\r\n\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tif(R.T){/* empty */}\r\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\r\n\t\t}\r\n\t});\r\n\treturn out;\r\n}\r\n\r\nfunction write_comments_bin(data) {\r\n\tvar ba = buf_array();\r\n\tvar iauthor = [];\r\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\r\n\r\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\r\n\tdata.forEach(function(comment) {\r\n\t\tcomment[1].forEach(function(c) {\r\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\r\n\t\t\tiauthor.push(c.a.slice(0,54));\r\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\r\n\t\t});\r\n\t});\r\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\r\n\r\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\r\n\tdata.forEach(function(comment) {\r\n\t\tcomment[1].forEach(function(c) {\r\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\r\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\r\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\r\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\r\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\r\n\t\t\tdelete c.iauthor;\r\n\t\t});\r\n\t});\r\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\r\n\r\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\r\n\treturn ba.end();\r\n}\r\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\r\nfunction make_vba_xls(cfb) {\r\n var newcfb = CFB.utils.cfb_new({ root: \"R\" });\r\n cfb.FullPaths.forEach(function(p, i) {\r\n if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\r\n return;\r\n var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\r\n CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\r\n });\r\n return CFB.write(newcfb);\r\n}\r\nfunction fill_vba_xls(cfb, vba) {\r\n vba.FullPaths.forEach(function(p, i) {\r\n if (i == 0)\r\n return;\r\n var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\r\n if (newpath.slice(-1) !== \"/\")\r\n CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\r\n });\r\n}\r\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\r\n/* macro and dialog sheet stubs */\r\nfunction parse_ds_bin() { return {'!type':'dialog'}; }\r\nfunction parse_ds_xml() { return {'!type':'dialog'}; }\r\nfunction parse_ms_bin() { return {'!type':'macro'}; }\r\nfunction parse_ms_xml() { return {'!type':'macro'}; }\r\n/* TODO: it will be useful to parse the function str */\r\nvar rc_to_a1 = (function(){\r\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\r\n\tvar rcbase = ({r:0,c:0});\r\n\tfunction rcfunc($$,$1,$2,$3) {\r\n\t\tvar cRel = false, rRel = false;\r\n\r\n\t\tif($2.length == 0) rRel = true;\r\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\r\n\r\n\t\tif($3.length == 0) cRel = true;\r\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\r\n\r\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\r\n\r\n\t\tif(cRel) C += rcbase.c; else --C;\r\n\t\tif(rRel) R += rcbase.r; else --R;\r\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\r\n\t}\r\n\treturn function rc_to_a1(fstr, base) {\r\n\t\trcbase = base;\r\n\t\treturn fstr.replace(rcregex, rcfunc);\r\n\t};\r\n})();\r\n\r\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\r\nvar a1_to_rc = (function(){\r\n\treturn function a1_to_rc(fstr, base) {\r\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\r\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\r\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\r\n\t\t\tvar R = $4 == \"$\" ? (r+1) : (r == 0 ? \"\" : \"[\" + r + \"]\");\r\n\t\t\tvar C = $2 == \"$\" ? (c+1) : (c == 0 ? \"\" : \"[\" + c + \"]\");\r\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\r\n\t\t});\r\n\t};\r\n})();\r\n\r\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\r\nfunction shift_formula_str(f, delta) {\r\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\r\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\r\n\t});\r\n}\r\n\r\nfunction shift_formula_xlsx(f, range, cell) {\r\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\r\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\r\n\treturn shift_formula_str(f, delta);\r\n}\r\n\r\n/* TODO: parse formula */\r\nfunction fuzzyfmla(f) {\r\n\tif(f.length == 1) return false;\r\n\treturn true;\r\n}\r\n\r\nfunction _xlfn(f) {\r\n\treturn f.replace(/_xlfn\\./g,\"\");\r\n}\r\nfunction parseread1(blob) { blob.l+=1; return; }\r\n\r\n/* [MS-XLS] 2.5.51 */\r\nfunction parse_ColRelU(blob, length) {\r\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\r\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\r\nfunction parse_RgceArea(blob, length, opts) {\r\n\tvar w = 2;\r\n\tif(opts) {\r\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\r\n\t\telse if(opts.biff == 12) w = 4;\r\n\t}\r\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\r\n\tvar c=parse_ColRelU(blob, 2);\r\n\tvar C=parse_ColRelU(blob, 2);\r\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\r\n}\r\n/* BIFF 2-5 encodes flags in the row field */\r\nfunction parse_RgceArea_BIFF2(blob) {\r\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\r\n\tvar c=blob.read_shift(1);\r\n\tvar C=blob.read_shift(1);\r\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\r\nfunction parse_RgceAreaRel(blob, length, opts) {\r\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\r\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\r\n\tvar c=parse_ColRelU(blob, 2);\r\n\tvar C=parse_ColRelU(blob, 2);\r\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\r\nfunction parse_RgceLoc(blob, length, opts) {\r\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\r\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\r\n\tvar c = parse_ColRelU(blob, 2);\r\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\r\n}\r\nfunction parse_RgceLoc_BIFF2(blob) {\r\n\tvar r = parse_ColRelU(blob, 2);\r\n\tvar c = blob.read_shift(1);\r\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\r\nfunction parse_RgceElfLoc(blob) {\r\n\tvar r = blob.read_shift(2);\r\n\tvar c = blob.read_shift(2);\r\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\r\nfunction parse_RgceLocRel(blob, length, opts) {\r\n\tvar biff = opts && opts.biff ? opts.biff : 8;\r\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\r\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\r\n\tvar cl = blob.read_shift(2);\r\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\r\n\tcl &= 0x3FFF;\r\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\r\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\r\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\r\n}\r\nfunction parse_RgceLocRel_BIFF2(blob) {\r\n\tvar rl = blob.read_shift(2);\r\n\tvar c = blob.read_shift(1);\r\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\r\n\trl &= 0x3FFF;\r\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\r\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\r\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\r\nfunction parse_PtgArea(blob, length, opts) {\r\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\r\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\r\n\treturn [type, area];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\r\nfunction parse_PtgArea3d(blob, length, opts) {\r\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\r\n\tvar ixti = blob.read_shift(2, 'i');\r\n\tvar w = 8;\r\n\tif(opts) switch(opts.biff) {\r\n\t\tcase 5: blob.l += 12; w = 6; break;\r\n\t\tcase 12: w = 12; break;\r\n\t}\r\n\tvar area = parse_RgceArea(blob, w, opts);\r\n\treturn [type, ixti, area];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\r\nfunction parse_PtgAreaErr(blob, length, opts) {\r\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\r\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\r\n\treturn [type];\r\n}\r\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\r\nfunction parse_PtgAreaErr3d(blob, length, opts) {\r\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\r\n\tvar ixti = blob.read_shift(2);\r\n\tvar w = 8;\r\n\tif(opts) switch(opts.biff) {\r\n\t\tcase 5: blob.l += 12; w = 6; break;\r\n\t\tcase 12: w = 12; break;\r\n\t}\r\n\tblob.l += w;\r\n\treturn [type, ixti];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\r\nfunction parse_PtgAreaN(blob, length, opts) {\r\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\r\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\r\n\treturn [type, area];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\r\nfunction parse_PtgArray(blob, length, opts) {\r\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\r\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\r\n\treturn [type];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\r\nfunction parse_PtgAttrBaxcel(blob) {\r\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\r\n\tvar bitBaxcel = 1;\r\n\tblob.l += 4;\r\n\treturn [bitSemi, bitBaxcel];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\r\nfunction parse_PtgAttrChoose(blob, length, opts) {\r\n\tblob.l +=2;\r\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\r\n\tvar o = [];\r\n\t/* offset is 1 less than the number of elements */\r\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\r\nfunction parse_PtgAttrGoto(blob, length, opts) {\r\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\r\n\tblob.l += 2;\r\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\r\nfunction parse_PtgAttrIf(blob, length, opts) {\r\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\r\n\tblob.l += 2;\r\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\r\n}\r\n\r\n/* [MS-XLSB] 2.5.97.28 */\r\nfunction parse_PtgAttrIfError(blob) {\r\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\r\n\tblob.l += 2;\r\n\treturn [bitIf, blob.read_shift(2)];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\r\nfunction parse_PtgAttrSemi(blob, length, opts) {\r\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\r\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\r\n\treturn [bitSemi];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\r\nfunction parse_PtgAttrSpaceType(blob) {\r\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\r\n\treturn [type, cch];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\r\nfunction parse_PtgAttrSpace(blob) {\r\n\tblob.read_shift(2);\r\n\treturn parse_PtgAttrSpaceType(blob, 2);\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\r\nfunction parse_PtgAttrSpaceSemi(blob) {\r\n\tblob.read_shift(2);\r\n\treturn parse_PtgAttrSpaceType(blob, 2);\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\r\nfunction parse_PtgRef(blob, length, opts) {\r\n\t//var ptg = blob[blob.l] & 0x1F;\r\n\tvar type = (blob[blob.l] & 0x60)>>5;\r\n\tblob.l += 1;\r\n\tvar loc = parse_RgceLoc(blob, 0, opts);\r\n\treturn [type, loc];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\r\nfunction parse_PtgRefN(blob, length, opts) {\r\n\tvar type = (blob[blob.l] & 0x60)>>5;\r\n\tblob.l += 1;\r\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\r\n\treturn [type, loc];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\r\nfunction parse_PtgRef3d(blob, length, opts) {\r\n\tvar type = (blob[blob.l] & 0x60)>>5;\r\n\tblob.l += 1;\r\n\tvar ixti = blob.read_shift(2); // XtiIndex\r\n\tif(opts && opts.biff == 5) blob.l += 12;\r\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\r\n\treturn [type, ixti, loc];\r\n}\r\n\r\n\r\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\r\nfunction parse_PtgFunc(blob, length, opts) {\r\n\t//var ptg = blob[blob.l] & 0x1F;\r\n\tvar type = (blob[blob.l] & 0x60)>>5;\r\n\tblob.l += 1;\r\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\r\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\r\n}\r\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\r\nfunction parse_PtgFuncVar(blob, length, opts) {\r\n\tvar type = blob[blob.l++];\r\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\r\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\r\n}\r\n\r\nfunction parsetab(blob) {\r\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\r\nfunction parse_PtgAttrSum(blob, length, opts) {\r\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\r\nfunction parse_PtgExp(blob, length, opts) {\r\n\tblob.l++;\r\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\r\n\tvar row = blob.read_shift(2);\r\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\r\n\treturn [row, col];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\r\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\r\n\r\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\r\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\r\n\r\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\r\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\r\n\r\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\r\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\r\n\r\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\r\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\r\n\r\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\r\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\r\nfunction parse_SerAr(blob, biff) {\r\n\tvar val = [blob.read_shift(1)];\r\n\tif(biff == 12) switch(val[0]) {\r\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\r\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\r\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\r\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\r\n\t}\r\n\tswitch(val[0]) {\r\n\t\tcase 0x04: /* SerBool -- boolean */\r\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\r\n\t\t\tif(biff != 12) blob.l += 7; break;\r\n\t\tcase 0x25: /* appears to be an alias */\r\n\t\tcase 0x10: /* SerErr -- error */\r\n\t\t\tval[1] = BErr[blob[blob.l]];\r\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\r\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\r\n\t\t\tblob.l += 8; break;\r\n\t\tcase 0x01: /* SerNum -- Xnum */\r\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\r\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\r\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\r\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\r\n\t}\r\n\treturn val;\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\r\nfunction parse_PtgExtraMem(blob, cce, opts) {\r\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\r\n\tvar out = [];\r\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\r\n\treturn out;\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\r\nfunction parse_PtgExtraArray(blob, length, opts) {\r\n\tvar rows = 0, cols = 0;\r\n\tif(opts.biff == 12) {\r\n\t\trows = blob.read_shift(4); // DRw\r\n\t\tcols = blob.read_shift(4); // DCol\r\n\t} else {\r\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\r\n\t\trows = 1 + blob.read_shift(2); //DRw\r\n\t}\r\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\r\n\t// $FlowIgnore\r\n\tfor(var i = 0, o = []; i != rows && (o[i] = []); ++i)\r\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\r\nfunction parse_PtgName(blob, length, opts) {\r\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\r\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\r\n\tvar nameindex = blob.read_shift(w);\r\n\tswitch(opts.biff) {\r\n\t\tcase 2: blob.l += 5; break;\r\n\t\tcase 3: case 4: blob.l += 8; break;\r\n\t\tcase 5: blob.l += 12; break;\r\n\t}\r\n\treturn [type, 0, nameindex];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\r\nfunction parse_PtgNameX(blob, length, opts) {\r\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\r\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\r\n\tvar ixti = blob.read_shift(2); // XtiIndex\r\n\tvar nameindex = blob.read_shift(4);\r\n\treturn [type, ixti, nameindex];\r\n}\r\nfunction parse_PtgNameX_BIFF5(blob) {\r\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\r\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\r\n\tblob.l += 8;\r\n\tvar nameindex = blob.read_shift(2);\r\n\tblob.l += 12;\r\n\treturn [type, ixti, nameindex];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\r\nfunction parse_PtgMemArea(blob, length, opts) {\r\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\r\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\r\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\r\n\treturn [type, cce];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\r\nfunction parse_PtgMemFunc(blob, length, opts) {\r\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\r\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\r\n\treturn [type, cce];\r\n}\r\n\r\n\r\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\r\nfunction parse_PtgRefErr(blob, length, opts) {\r\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\r\n\tblob.l += 4;\r\n\tif(opts.biff < 8) blob.l--;\r\n\tif(opts.biff == 12) blob.l += 2;\r\n\treturn [type];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\r\nfunction parse_PtgRefErr3d(blob, length, opts) {\r\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\r\n\tvar ixti = blob.read_shift(2);\r\n\tvar w = 4;\r\n\tif(opts) switch(opts.biff) {\r\n\t\tcase 5: w = 15; break;\r\n\t\tcase 12: w = 6; break;\r\n\t}\r\n\tblob.l += w;\r\n\treturn [type, ixti];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\r\nvar parse_PtgMemErr = parsenoop;\r\n/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */\r\nvar parse_PtgMemNoMem = parsenoop;\r\n/* [MS-XLS] 2.5.198.92 */\r\nvar parse_PtgTbl = parsenoop;\r\n\r\nfunction parse_PtgElfLoc(blob, length, opts) {\r\n\tblob.l += 2;\r\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\r\n}\r\nfunction parse_PtgElfNoop(blob) {\r\n\tblob.l += 6;\r\n\treturn [];\r\n}\r\n/* [MS-XLS] 2.5.198.46 */\r\nvar parse_PtgElfCol = parse_PtgElfLoc;\r\n/* [MS-XLS] 2.5.198.47 */\r\nvar parse_PtgElfColS = parse_PtgElfNoop;\r\n/* [MS-XLS] 2.5.198.48 */\r\nvar parse_PtgElfColSV = parse_PtgElfNoop;\r\n/* [MS-XLS] 2.5.198.49 */\r\nvar parse_PtgElfColV = parse_PtgElfLoc;\r\n/* [MS-XLS] 2.5.198.50 */\r\nfunction parse_PtgElfLel(blob) {\r\n\tblob.l += 2;\r\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\r\n}\r\n/* [MS-XLS] 2.5.198.51 */\r\nvar parse_PtgElfRadical = parse_PtgElfLoc;\r\n/* [MS-XLS] 2.5.198.52 */\r\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\r\n/* [MS-XLS] 2.5.198.53 */\r\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\r\n/* [MS-XLS] 2.5.198.54 */\r\nvar parse_PtgElfRw = parse_PtgElfLoc;\r\n/* [MS-XLS] 2.5.198.55 */\r\nvar parse_PtgElfRwV = parse_PtgElfLoc;\r\n\r\n/* [MS-XLSB] 2.5.97.52 TODO */\r\nvar PtgListRT = [\r\n\t\"Data\",\r\n\t\"All\",\r\n\t\"Headers\",\r\n\t\"??\",\r\n\t\"?Data2\",\r\n\t\"??\",\r\n\t\"?DataHeaders\",\r\n\t\"??\",\r\n\t\"Totals\",\r\n\t\"??\",\r\n\t\"??\",\r\n\t\"??\",\r\n\t\"?DataTotals\",\r\n\t\"??\",\r\n\t\"??\",\r\n\t\"??\",\r\n\t\"?Current\"\r\n];\r\nfunction parse_PtgList(blob) {\r\n\tblob.l += 2;\r\n\tvar ixti = blob.read_shift(2);\r\n\tvar flags = blob.read_shift(2);\r\n\tvar idx = blob.read_shift(4);\r\n\tvar c = blob.read_shift(2);\r\n\tvar C = blob.read_shift(2);\r\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\r\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\r\n}\r\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\r\nfunction parse_PtgSxName(blob) {\r\n\tblob.l += 2;\r\n\treturn [blob.read_shift(4)];\r\n}\r\n\r\n/* [XLS] old spec */\r\nfunction parse_PtgSheet(blob, length, opts) {\r\n\tblob.l += 5;\r\n\tblob.l += 2;\r\n\tblob.l += (opts.biff == 2 ? 1 : 4);\r\n\treturn [\"PTGSHEET\"];\r\n}\r\nfunction parse_PtgEndSheet(blob, length, opts) {\r\n\tblob.l += (opts.biff == 2 ? 4 : 5);\r\n\treturn [\"PTGENDSHEET\"];\r\n}\r\nfunction parse_PtgMemAreaN(blob) {\r\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\r\n\tvar cce = blob.read_shift(2);\r\n\treturn [type, cce];\r\n}\r\nfunction parse_PtgMemNoMemN(blob) {\r\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\r\n\tvar cce = blob.read_shift(2);\r\n\treturn [type, cce];\r\n}\r\nfunction parse_PtgAttrNoop(blob) {\r\n\tblob.l += 4;\r\n\treturn [0, 0];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\r\nvar PtgTypes = {\r\n0x01: { n:'PtgExp', f:parse_PtgExp },\r\n0x02: { n:'PtgTbl', f:parse_PtgTbl },\r\n0x03: { n:'PtgAdd', f:parseread1 },\r\n0x04: { n:'PtgSub', f:parseread1 },\r\n0x05: { n:'PtgMul', f:parseread1 },\r\n0x06: { n:'PtgDiv', f:parseread1 },\r\n0x07: { n:'PtgPower', f:parseread1 },\r\n0x08: { n:'PtgConcat', f:parseread1 },\r\n0x09: { n:'PtgLt', f:parseread1 },\r\n0x0A: { n:'PtgLe', f:parseread1 },\r\n0x0B: { n:'PtgEq', f:parseread1 },\r\n0x0C: { n:'PtgGe', f:parseread1 },\r\n0x0D: { n:'PtgGt', f:parseread1 },\r\n0x0E: { n:'PtgNe', f:parseread1 },\r\n0x0F: { n:'PtgIsect', f:parseread1 },\r\n0x10: { n:'PtgUnion', f:parseread1 },\r\n0x11: { n:'PtgRange', f:parseread1 },\r\n0x12: { n:'PtgUplus', f:parseread1 },\r\n0x13: { n:'PtgUminus', f:parseread1 },\r\n0x14: { n:'PtgPercent', f:parseread1 },\r\n0x15: { n:'PtgParen', f:parseread1 },\r\n0x16: { n:'PtgMissArg', f:parseread1 },\r\n0x17: { n:'PtgStr', f:parse_PtgStr },\r\n0x1A: { n:'PtgSheet', f:parse_PtgSheet },\r\n0x1B: { n:'PtgEndSheet', f:parse_PtgEndSheet },\r\n0x1C: { n:'PtgErr', f:parse_PtgErr },\r\n0x1D: { n:'PtgBool', f:parse_PtgBool },\r\n0x1E: { n:'PtgInt', f:parse_PtgInt },\r\n0x1F: { n:'PtgNum', f:parse_PtgNum },\r\n0x20: { n:'PtgArray', f:parse_PtgArray },\r\n0x21: { n:'PtgFunc', f:parse_PtgFunc },\r\n0x22: { n:'PtgFuncVar', f:parse_PtgFuncVar },\r\n0x23: { n:'PtgName', f:parse_PtgName },\r\n0x24: { n:'PtgRef', f:parse_PtgRef },\r\n0x25: { n:'PtgArea', f:parse_PtgArea },\r\n0x26: { n:'PtgMemArea', f:parse_PtgMemArea },\r\n0x27: { n:'PtgMemErr', f:parse_PtgMemErr },\r\n0x28: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\r\n0x29: { n:'PtgMemFunc', f:parse_PtgMemFunc },\r\n0x2A: { n:'PtgRefErr', f:parse_PtgRefErr },\r\n0x2B: { n:'PtgAreaErr', f:parse_PtgAreaErr },\r\n0x2C: { n:'PtgRefN', f:parse_PtgRefN },\r\n0x2D: { n:'PtgAreaN', f:parse_PtgAreaN },\r\n0x2E: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\r\n0x2F: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\r\n0x39: { n:'PtgNameX', f:parse_PtgNameX },\r\n0x3A: { n:'PtgRef3d', f:parse_PtgRef3d },\r\n0x3B: { n:'PtgArea3d', f:parse_PtgArea3d },\r\n0x3C: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\r\n0x3D: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\r\n0xFF: {}\r\n};\r\n/* These are duplicated in the PtgTypes table */\r\nvar PtgDupes = {\r\n0x40: 0x20, 0x60: 0x20,\r\n0x41: 0x21, 0x61: 0x21,\r\n0x42: 0x22, 0x62: 0x22,\r\n0x43: 0x23, 0x63: 0x23,\r\n0x44: 0x24, 0x64: 0x24,\r\n0x45: 0x25, 0x65: 0x25,\r\n0x46: 0x26, 0x66: 0x26,\r\n0x47: 0x27, 0x67: 0x27,\r\n0x48: 0x28, 0x68: 0x28,\r\n0x49: 0x29, 0x69: 0x29,\r\n0x4A: 0x2A, 0x6A: 0x2A,\r\n0x4B: 0x2B, 0x6B: 0x2B,\r\n0x4C: 0x2C, 0x6C: 0x2C,\r\n0x4D: 0x2D, 0x6D: 0x2D,\r\n0x4E: 0x2E, 0x6E: 0x2E,\r\n0x4F: 0x2F, 0x6F: 0x2F,\r\n0x58: 0x22, 0x78: 0x22,\r\n0x59: 0x39, 0x79: 0x39,\r\n0x5A: 0x3A, 0x7A: 0x3A,\r\n0x5B: 0x3B, 0x7B: 0x3B,\r\n0x5C: 0x3C, 0x7C: 0x3C,\r\n0x5D: 0x3D, 0x7D: 0x3D\r\n};\r\n\r\nvar Ptg18 = {\r\n0x01: { n:'PtgElfLel', f:parse_PtgElfLel },\r\n0x02: { n:'PtgElfRw', f:parse_PtgElfRw },\r\n0x03: { n:'PtgElfCol', f:parse_PtgElfCol },\r\n0x06: { n:'PtgElfRwV', f:parse_PtgElfRwV },\r\n0x07: { n:'PtgElfColV', f:parse_PtgElfColV },\r\n0x0A: { n:'PtgElfRadical', f:parse_PtgElfRadical },\r\n0x0B: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\r\n0x0D: { n:'PtgElfColS', f:parse_PtgElfColS },\r\n0x0F: { n:'PtgElfColSV', f:parse_PtgElfColSV },\r\n0x10: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\r\n0x19: { n:'PtgList', f:parse_PtgList },\r\n0x1D: { n:'PtgSxName', f:parse_PtgSxName },\r\n0xFF: {}\r\n};\r\nvar Ptg19 = {\r\n0x00: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\r\n0x01: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\r\n0x02: { n:'PtgAttrIf', f:parse_PtgAttrIf },\r\n0x04: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\r\n0x08: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\r\n0x10: { n:'PtgAttrSum', f:parse_PtgAttrSum },\r\n0x20: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\r\n0x21: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\r\n0x40: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\r\n0x41: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\r\n0x80: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\r\n0xFF: {}\r\n};\r\n\r\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\r\nfunction parse_RgbExtra(blob, length, rgce, opts) {\r\n\tif(opts.biff < 8) return parsenoop(blob, length);\r\n\tvar target = blob.l + length;\r\n\tvar o = [];\r\n\tfor(var i = 0; i !== rgce.length; ++i) {\r\n\t\tswitch(rgce[i][0]) {\r\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\r\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\r\n\t\t\t\to.push(rgce[i][1]);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\r\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\r\n\t\t\t\to.push(rgce[i][2]);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\r\n\t\t\t\tif(opts && opts.biff == 12) {\r\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\r\n\t\t\t\t\to.push(rgce[i][1]);\r\n\t\t\t\t} break;\r\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\r\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\r\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\r\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\r\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\r\n\t\t\tdefault: break;\r\n\t\t}\r\n\t}\r\n\tlength = target - blob.l;\r\n\t/* note: this is technically an error but Excel disregards */\r\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\r\n\tif(length !== 0) o.push(parsenoop(blob, length));\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\r\nfunction parse_Rgce(blob, length, opts) {\r\n\tvar target = blob.l + length;\r\n\tvar R, id, ptgs = [];\r\n\twhile(target != blob.l) {\r\n\t\tlength = target - blob.l;\r\n\t\tid = blob[blob.l];\r\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\r\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\r\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\r\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\r\n\t}\r\n\treturn ptgs;\r\n}\r\n\r\nfunction stringify_array(f) {\r\n\tvar o = [];\r\n\tfor(var i = 0; i < f.length; ++i) {\r\n\t\tvar x = f[i], r = [];\r\n\t\tfor(var j = 0; j < x.length; ++j) {\r\n\t\t\tvar y = x[j];\r\n\t\t\tif(y) switch(y[0]) {\r\n\t\t\t\t// TODO: handle embedded quotes\r\n\t\t\t\tcase 0x02:\r\nr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\r\n\t\t\t\tdefault: r.push(y[1]);\r\n\t\t\t} else r.push(\"\");\r\n\t\t}\r\n\t\to.push(r.join(\",\"));\r\n\t}\r\n\treturn o.join(\";\");\r\n}\r\n\r\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\r\nvar PtgBinOp = {\r\n\tPtgAdd: \"+\",\r\n\tPtgConcat: \"&\",\r\n\tPtgDiv: \"/\",\r\n\tPtgEq: \"=\",\r\n\tPtgGe: \">=\",\r\n\tPtgGt: \">\",\r\n\tPtgLe: \"<=\",\r\n\tPtgLt: \"<\",\r\n\tPtgMul: \"*\",\r\n\tPtgNe: \"<>\",\r\n\tPtgPower: \"^\",\r\n\tPtgSub: \"-\"\r\n};\r\n\r\n// TODO: explore space\r\nfunction make_3d_range(start, end) {\r\n\tvar s = start.lastIndexOf(\"!\"), e = end.lastIndexOf(\"!\");\r\n\tif(s == -1 && e == -1) return start + \":\" + end;\r\n\tif(s > 0 && e > 0 && start.slice(0, s).toLowerCase() == end.slice(0, e).toLowerCase()) return start + \":\" + end.slice(e+1);\r\n\tconsole.error(\"Cannot hydrate range\", start, end);\r\n\treturn start + \":\" + end;\r\n}\r\n\r\nfunction get_ixti_raw(supbooks, ixti, opts) {\r\n\tif(!supbooks) return \"SH33TJSERR0\";\r\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\r\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\r\n\tvar XTI = supbooks.XTI[ixti];\r\n\tif(opts.biff < 8) {\r\n\t\tif(ixti > 10000) ixti-= 65536;\r\n\t\tif(ixti < 0) ixti = -ixti;\r\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\r\n\t}\r\n\tif(!XTI) return \"SH33TJSERR1\";\r\n\tvar o = \"\";\r\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\r\n\t\tcase 0x0165: /* 'BrtSupSelf' */\r\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\r\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\r\n\t\tcase 0x0166: /* 'BrtSupSame' */\r\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\r\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\r\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\r\n\t\t\t/* falls through */\r\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\r\n\t}\r\n\tswitch(supbooks[XTI[0]][0][0]) {\r\n\t\tcase 0x0401:\r\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\r\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\r\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\r\n\t\tdefault:\r\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\r\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\r\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\r\n\t}\r\n}\r\nfunction get_ixti(supbooks, ixti, opts) {\r\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\r\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\r\n}\r\nfunction stringify_formula(formula/*Array*/, range, cell, supbooks, opts) {\r\n\tvar biff = (opts && opts.biff) || 8;\r\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\r\n\tvar stack = [], e1, e2, c, ixti=0, nameidx=0, r, sname=\"\";\r\n\tif(!formula[0] || !formula[0][0]) return \"\";\r\n\tvar last_sp = -1, sp = \"\";\r\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\r\n\t\tvar f = formula[0][ff];\r\n\t\tswitch(f[0]) {\r\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\r\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\r\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\r\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\r\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\r\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\r\n\r\n\t\t\tcase 'PtgAdd': /* [MS-XLS] 2.5.198.26 */\r\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\r\n\t\t\tcase 'PtgDiv': /* [MS-XLS] 2.5.198.45 */\r\n\t\t\tcase 'PtgEq': /* [MS-XLS] 2.5.198.56 */\r\n\t\t\tcase 'PtgGe': /* [MS-XLS] 2.5.198.64 */\r\n\t\t\tcase 'PtgGt': /* [MS-XLS] 2.5.198.65 */\r\n\t\t\tcase 'PtgLe': /* [MS-XLS] 2.5.198.68 */\r\n\t\t\tcase 'PtgLt': /* [MS-XLS] 2.5.198.69 */\r\n\t\t\tcase 'PtgMul': /* [MS-XLS] 2.5.198.75 */\r\n\t\t\tcase 'PtgNe': /* [MS-XLS] 2.5.198.78 */\r\n\t\t\tcase 'PtgPower': /* [MS-XLS] 2.5.198.82 */\r\n\t\t\tcase 'PtgSub': /* [MS-XLS] 2.5.198.90 */\r\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\r\n\t\t\t\tif(last_sp >= 0) {\r\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\t// $FlowIgnore\r\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\t// $FlowIgnore\r\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tsp = \"\";\r\n\t\t\t\t\t\t\t// $FlowIgnore\r\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\te2 = e2 + sp;\r\n\t\t\t\t\tlast_sp = -1;\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\r\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\r\n\t\t\t\tstack.push(e2+\" \"+e1);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\r\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\r\n\t\t\t\tstack.push(e2+\",\"+e1);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\r\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\r\n\t\t\t\tstack.push(make_3d_range(e2,e1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\r\n\t\t\t\tbreak;\r\n\r\n\r\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\r\nc = shift_cell_xls((f[1][1]), _range, opts);\r\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\r\nc = cell ? shift_cell_xls((f[1][1]), cell, opts) : (f[1][1]);\r\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\r\nixti = f[1][1]; c = shift_cell_xls((f[1][2]), _range, opts);\r\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\r\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\r\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\r\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\r\n\t\t\t\t/* f[1] = [argc, func, type] */\r\n\t\t\t\tvar argc = (f[1][0]), func = (f[1][1]);\r\n\t\t\t\tif(!argc) argc = 0;\r\n\t\t\t\targc &= 0x7F;\r\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\r\n\t\t\t\tstack.length -= argc;\r\n\t\t\t\tif(func === 'User') func = args.shift();\r\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\r\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\r\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\r\n\t\t\t\tstack.push(f[1]); break;\r\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\r\n\t\t\t\tstack.push(String(f[1])); break;\r\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\r\n\t\t\t\t// $FlowIgnore\r\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\r\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\r\n\t\t\t\tstack.push(f[1]); break;\r\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\r\nr = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\r\n\t\t\t\tstack.push(encode_range_xls((r), opts));\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\r\nr = shift_range_xls(f[1][1], _range, opts);\r\n\t\t\t\tstack.push(encode_range_xls((r), opts));\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\r\nixti = f[1][1]; r = f[1][2];\r\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\r\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r), opts));\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\r\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\r\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\r\n\t\t\t\t/* f[1] = type, 0, nameindex */\r\n\t\t\t\tnameidx = (f[1][2]);\r\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\r\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\r\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\r\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\r\n\t\t\t\tstack.push(name);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\r\n\t\t\t\t/* f[1] = type, ixti, nameindex */\r\n\t\t\t\tvar bookidx = (f[1][1]); nameidx = (f[1][2]); var externbook;\r\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\r\n\t\t\t\tif(opts.biff <= 5) {\r\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\r\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar o = \"\";\r\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\r\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\r\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\r\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\r\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\r\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\r\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\r\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstack.push(o);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\r\n\t\t\t\tstack.push(externbook.Name);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\r\n\t\t\t\tvar lp = '(', rp = ')';\r\n\t\t\t\tif(last_sp >= 0) {\r\n\t\t\t\t\tsp = \"\";\r\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\r\n\t\t\t\t\t\t// $FlowIgnore\r\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\r\n\t\t\t\t\t\t// $FlowIgnore\r\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\r\n\t\t\t\t\t\t// $FlowIgnore\r\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\r\n\t\t\t\t\t\t// $FlowIgnore\r\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t// $FlowIgnore\r\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlast_sp = -1;\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\r\n\r\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\r\n\t\t\t\tstack.push('#REF!'); break;\r\n\r\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\r\n\t\t\t\tstack.push('#REF!'); break;\r\n\r\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\r\n\t\t\t\tc = {c:(f[1][1]),r:(f[1][0])};\r\n\t\t\t\tvar q = ({c: cell.c, r:cell.r});\r\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\r\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\r\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar fnd = false;\r\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\r\n\t\t\t\t\t\t/* TODO: should be something like range_has */\r\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\r\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\r\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\r\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\r\n\t\t\t\t\t\tfnd = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(!fnd) stack.push(f[1]);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\r\n\t\t\t\tstack.push(\"{\" + stringify_array(f[1]) + \"}\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\r\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\r\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\r\n\t\t\t\tlast_sp = ff;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\r\n\t\t\t\tstack.push(\"\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\r\n\t\t\t\tstack.push(\"#REF!\"); break;\r\n\r\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\r\n\t\t\t\tstack.push(\"#REF!\"); break;\r\n\r\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\r\n\t\t\t\t// $FlowIgnore\r\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgMemAreaN':\r\n\t\t\tcase 'PtgMemNoMemN':\r\n\t\t\tcase 'PtgAttrNoop':\r\n\t\t\tcase 'PtgSheet':\r\n\t\t\tcase 'PtgEndSheet':\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\r\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\r\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\r\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\r\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\r\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\r\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\r\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\r\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\r\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\r\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\r\n\r\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\r\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\r\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\r\n\t\t}\r\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\r\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\r\n\t\t\tf = formula[0][last_sp];\r\n\t\t\tvar _left = true;\r\n\t\t\tswitch(f[1][0]) {\r\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\r\n\t\t\t\tcase 4: _left = false;\r\n\t\t\t\t/* falls through */\r\n\t\t\t\tcase 0:\r\n\t\t\t\t\t// $FlowIgnore\r\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\r\n\t\t\t\tcase 5: _left = false;\r\n\t\t\t\t/* falls through */\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\t// $FlowIgnore\r\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tsp = \"\";\r\n\t\t\t\t\t// $FlowIgnore\r\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\r\n\t\t\t}\r\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\r\n\t\t\tlast_sp = -1;\r\n\t\t}\r\n\t}\r\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\r\n\tif(stack[0] == \"TRUE\") return true; if(stack[0] == \"FALSE\") return false;\r\n\treturn stack[0];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.1 TODO */\r\nfunction parse_ArrayParsedFormula(blob, length, opts) {\r\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\r\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\r\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\r\n\tvar rgce = parse_Rgce(blob, cce, opts);\r\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\r\n\tblob.l = target;\r\n\treturn [rgce, rgcb];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.3 TODO */\r\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\r\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\r\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\r\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\r\n\tvar rgce = parse_Rgce(blob, cce, opts);\r\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\r\n\tblob.l = target;\r\n\treturn [rgce, rgcb];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.21 */\r\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\r\n\tvar target = blob.l + length;\r\n\tvar rgce = parse_Rgce(blob, cce, opts);\r\n\tvar rgcb;\r\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\r\n\treturn [rgce, rgcb];\r\n}\r\n\r\n/* [MS-XLS] 2.5.198.118 TODO */\r\nfunction parse_SharedParsedFormula(blob, length, opts) {\r\n\tvar target = blob.l + length;\r\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\r\n\tvar rgce = parse_Rgce(blob, cce, opts);\r\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\r\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\r\n\treturn [rgce, rgcb];\r\n}\r\n\r\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\r\nfunction parse_FormulaValue(blob) {\r\n\tvar b;\r\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\r\n\tswitch(blob[blob.l]) {\r\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\r\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\r\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\r\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\r\n\t}\r\n\treturn [];\r\n}\r\nfunction write_FormulaValue(value) {\r\n\tif(value == null) {\r\n\t\t// Blank String Value\r\n\t\tvar o = new_buf(8);\r\n\t\to.write_shift(1, 0x03);\r\n\t\to.write_shift(1, 0);\r\n\t\to.write_shift(2, 0);\r\n\t\to.write_shift(2, 0);\r\n\t\to.write_shift(2, 0xFFFF);\r\n\t\treturn o;\r\n\t} else if(typeof value == \"number\") return write_Xnum(value);\r\n\treturn write_Xnum(0);\r\n}\r\n\r\n/* [MS-XLS] 2.4.127 TODO */\r\nfunction parse_Formula(blob, length, opts) {\r\n\tvar end = blob.l + length;\r\n\tvar cell = parse_XLSCell(blob, 6);\r\n\tif(opts.biff == 2) ++blob.l;\r\n\tvar val = parse_FormulaValue(blob,8);\r\n\tvar flags = blob.read_shift(1);\r\n\tif(opts.biff != 2) {\r\n\t\tblob.read_shift(1);\r\n\t\tif(opts.biff >= 5) {\r\n\t\t\t/*var chn = */blob.read_shift(4);\r\n\t\t}\r\n\t}\r\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\r\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\r\n}\r\nfunction write_Formula(cell, R, C, opts, os) {\r\n\t// Cell\r\n\tvar o1 = write_XLSCell(R, C, os);\r\n\r\n\t// FormulaValue\r\n\tvar o2 = write_FormulaValue(cell.v);\r\n\r\n\t// flags + cache\r\n\tvar o3 = new_buf(6);\r\n\tvar flags = 0x01 | 0x20;\r\n\to3.write_shift(2, flags);\r\n\to3.write_shift(4, 0);\r\n\r\n\t// CellParsedFormula\r\n\tvar bf = new_buf(cell.bf.length);\r\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\r\n\r\n\tvar out = bconcat([o1, o2, o3, bf]);\r\n\treturn out;\r\n}\r\n\r\n\r\n/* XLSB Parsed Formula records have the same shape */\r\nfunction parse_XLSBParsedFormula(data, length, opts) {\r\n\tvar cce = data.read_shift(4);\r\n\tvar rgce = parse_Rgce(data, cce, opts);\r\n\tvar cb = data.read_shift(4);\r\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\r\n\treturn [rgce, rgcb];\r\n}\r\n\r\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\r\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\r\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\r\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\r\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\r\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\r\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\r\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\r\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\r\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\r\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\r\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\r\n\r\n/* Writes a PtgNum or PtgInt */\r\nfunction write_XLSBFormulaNum(val) {\r\n\tif((val | 0) == val && val < Math.pow(2,16) && val >= 0) {\r\n\t\tvar oint = new_buf(11);\r\n\t\toint.write_shift(4, 3);\r\n\t\toint.write_shift(1, 0x1e);\r\n\t\toint.write_shift(2, val);\r\n\t\toint.write_shift(4, 0);\r\n\t\treturn oint;\r\n\t}\r\n\r\n\tvar num = new_buf(17);\r\n\tnum.write_shift(4, 11);\r\n\tnum.write_shift(1, 0x1f);\r\n\tnum.write_shift(8, val);\r\n\tnum.write_shift(4, 0);\r\n\treturn num;\r\n}\r\n/* Writes a PtgErr */\r\nfunction write_XLSBFormulaErr(val) {\r\n\tvar oint = new_buf(10);\r\n\toint.write_shift(4, 2);\r\n\toint.write_shift(1, 0x1C);\r\n\toint.write_shift(1, val);\r\n\toint.write_shift(4, 0);\r\n\treturn oint;\r\n}\r\n/* Writes a PtgBool */\r\nfunction write_XLSBFormulaBool(val) {\r\n\tvar oint = new_buf(10);\r\n\toint.write_shift(4, 2);\r\n\toint.write_shift(1, 0x1D);\r\n\toint.write_shift(1, val?1:0);\r\n\toint.write_shift(4, 0);\r\n\treturn oint;\r\n}\r\n\r\n/* Writes a PtgStr */\r\nfunction write_XLSBFormulaStr(val) {\r\n\tvar preamble = new_buf(7);\r\n\tpreamble.write_shift(4, 3 + 2 * val.length);\r\n\tpreamble.write_shift(1, 0x17);\r\n\tpreamble.write_shift(2, val.length);\r\n\r\n\tvar body = new_buf(2 * val.length);\r\n\tbody.write_shift(2 * val.length, val, \"utf16le\");\r\n\r\n\tvar postamble = new_buf(4);\r\n\tpostamble.write_shift(4, 0);\r\n\r\n\treturn bconcat([preamble, body, postamble]);\r\n}\r\n\r\n/* Writes a PtgRef */\r\nfunction write_XLSBFormulaRef(str) {\r\n\tvar cell = decode_cell(str);\r\n\tvar out = new_buf(15);\r\n\tout.write_shift(4, 7);\r\n\tout.write_shift(1, 0x04 | ((1)<<5));\r\n\tout.write_shift(4, cell.r);\r\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\r\n\tout.write_shift(4, 0);\r\n\r\n\treturn out;\r\n}\r\n\r\n/* Writes a PtgRef3d */\r\nfunction write_XLSBFormulaRef3D(str, wb) {\r\n\tvar lastbang = str.lastIndexOf(\"!\");\r\n\tvar sname = str.slice(0, lastbang);\r\n\tstr = str.slice(lastbang+1);\r\n\tvar cell = decode_cell(str);\r\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\r\n\r\n\tvar out = new_buf(17);\r\n\tout.write_shift(4, 9);\r\n\tout.write_shift(1, 0x1A | ((1)<<5));\r\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\r\n\tout.write_shift(4, cell.r);\r\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\r\n\tout.write_shift(4, 0);\r\n\r\n\treturn out;\r\n}\r\n\r\n/* Writes a PtgRefErr3d */\r\nfunction write_XLSBFormulaRefErr3D(str, wb) {\r\n\tvar lastbang = str.lastIndexOf(\"!\");\r\n\tvar sname = str.slice(0, lastbang);\r\n\tstr = str.slice(lastbang+1);\r\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\r\n\r\n\tvar out = new_buf(17);\r\n\tout.write_shift(4, 9);\r\n\tout.write_shift(1, 0x1C | ((1)<<5));\r\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\r\n\tout.write_shift(4, 0);\r\n\tout.write_shift(2, 0); // <== ColRelShort\r\n\tout.write_shift(4, 0);\r\n\r\n\treturn out;\r\n}\r\n\r\n/* Writes a single sheet range [PtgRef PtgRef PtgRange] */\r\nfunction write_XLSBFormulaRange(_str) {\r\n\tvar parts = _str.split(\":\"), str = parts[0];\r\n\r\n\tvar out = new_buf(23);\r\n\tout.write_shift(4, 15);\r\n\r\n\t/* start cell */\r\n\tstr = parts[0]; var cell = decode_cell(str);\r\n\tout.write_shift(1, 0x04 | ((1)<<5));\r\n\tout.write_shift(4, cell.r);\r\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\r\n\tout.write_shift(4, 0);\r\n\r\n\t/* end cell */\r\n\tstr = parts[1]; cell = decode_cell(str);\r\n\tout.write_shift(1, 0x04 | ((1)<<5));\r\n\tout.write_shift(4, cell.r);\r\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\r\n\tout.write_shift(4, 0);\r\n\r\n\t/* PtgRange */\r\n\tout.write_shift(1, 0x11);\r\n\r\n\tout.write_shift(4, 0);\r\n\r\n\treturn out;\r\n}\r\n\r\n/* Writes a range with explicit sheet name [PtgRef3D PtgRef3D PtgRange] */\r\nfunction write_XLSBFormulaRangeWS(_str, wb) {\r\n\tvar lastbang = _str.lastIndexOf(\"!\");\r\n\tvar sname = _str.slice(0, lastbang);\r\n\t_str = _str.slice(lastbang+1);\r\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\r\n\tvar parts = _str.split(\":\"); str = parts[0];\r\n\r\n\tvar out = new_buf(27);\r\n\tout.write_shift(4, 19);\r\n\r\n\t/* start cell */\r\n\tvar str = parts[0], cell = decode_cell(str);\r\n\tout.write_shift(1, 0x1A | ((1)<<5));\r\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\r\n\tout.write_shift(4, cell.r);\r\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\r\n\r\n\t/* end cell */\r\n\tstr = parts[1]; cell = decode_cell(str);\r\n\tout.write_shift(1, 0x1A | ((1)<<5));\r\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\r\n\tout.write_shift(4, cell.r);\r\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\r\n\r\n\t/* PtgRange */\r\n\tout.write_shift(1, 0x11);\r\n\r\n\tout.write_shift(4, 0);\r\n\r\n\treturn out;\r\n}\r\n\r\n/* Writes a range with explicit sheet name [PtgArea3d] */\r\nfunction write_XLSBFormulaArea3D(_str, wb) {\r\n\tvar lastbang = _str.lastIndexOf(\"!\");\r\n\tvar sname = _str.slice(0, lastbang);\r\n\t_str = _str.slice(lastbang+1);\r\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\r\n\tvar range = decode_range(_str);\r\n\r\n\tvar out = new_buf(23);\r\n\tout.write_shift(4, 15);\r\n\r\n\tout.write_shift(1, 0x1B | ((1)<<5));\r\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\r\n\tout.write_shift(4, range.s.r);\r\n\tout.write_shift(4, range.e.r);\r\n\tout.write_shift(2, range.s.c);\r\n\tout.write_shift(2, range.e.c);\r\n\r\n\tout.write_shift(4, 0);\r\n\r\n\treturn out;\r\n}\r\n\r\n\r\n/* General Formula */\r\nfunction write_XLSBFormula(val, wb) {\r\n\tif(typeof val == \"number\") return write_XLSBFormulaNum(val);\r\n\tif(typeof val == \"boolean\") return write_XLSBFormulaBool(val);\r\n\tif(/^#(DIV\\/0!|GETTING_DATA|N\\/A|NAME\\?|NULL!|NUM!|REF!|VALUE!)$/.test(val)) return write_XLSBFormulaErr(+RBErr[val]);\r\n\tif(val.match(/^\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRef(val);\r\n\tif(val.match(/^\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5}):\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRange(val);\r\n\tif(val.match(/^#REF!\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5}):\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaArea3D(val, wb);\r\n\tif(val.match(/^(?:'[^\\\\\\/?*\\[\\]:]*'|[^'][^\\\\\\/?*\\[\\]:'`~!@#$%^()\\-=+{}|;,<.>]*)!\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRef3D(val, wb);\r\n\tif(val.match(/^(?:'[^\\\\\\/?*\\[\\]:]*'|[^'][^\\\\\\/?*\\[\\]:'`~!@#$%^()\\-=+{}|;,<.>]*)!\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5}):\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRangeWS(val, wb);\r\n\tif(/^(?:'[^\\\\\\/?*\\[\\]:]*'|[^'][^\\\\\\/?*\\[\\]:'`~!@#$%^()\\-=+{}|;,<.>]*)!#REF!$/.test(val)) return write_XLSBFormulaRefErr3D(val, wb);\r\n\tif(/^\".*\"$/.test(val)) return write_XLSBFormulaStr(val);\r\n\tif(/^[+-]\\d+$/.test(val)) return write_XLSBFormulaNum(parseInt(val, 10));\r\n\tthrow \"Formula |\" + val + \"| not supported for XLSB\";\r\n}\r\nvar write_XLSBNameParsedFormula = write_XLSBFormula;\r\nvar Cetab = {\r\n 0: \"BEEP\",\r\n 1: \"OPEN\",\r\n 2: \"OPEN.LINKS\",\r\n 3: \"CLOSE.ALL\",\r\n 4: \"SAVE\",\r\n 5: \"SAVE.AS\",\r\n 6: \"FILE.DELETE\",\r\n 7: \"PAGE.SETUP\",\r\n 8: \"PRINT\",\r\n 9: \"PRINTER.SETUP\",\r\n 10: \"QUIT\",\r\n 11: \"NEW.WINDOW\",\r\n 12: \"ARRANGE.ALL\",\r\n 13: \"WINDOW.SIZE\",\r\n 14: \"WINDOW.MOVE\",\r\n 15: \"FULL\",\r\n 16: \"CLOSE\",\r\n 17: \"RUN\",\r\n 22: \"SET.PRINT.AREA\",\r\n 23: \"SET.PRINT.TITLES\",\r\n 24: \"SET.PAGE.BREAK\",\r\n 25: \"REMOVE.PAGE.BREAK\",\r\n 26: \"FONT\",\r\n 27: \"DISPLAY\",\r\n 28: \"PROTECT.DOCUMENT\",\r\n 29: \"PRECISION\",\r\n 30: \"A1.R1C1\",\r\n 31: \"CALCULATE.NOW\",\r\n 32: \"CALCULATION\",\r\n 34: \"DATA.FIND\",\r\n 35: \"EXTRACT\",\r\n 36: \"DATA.DELETE\",\r\n 37: \"SET.DATABASE\",\r\n 38: \"SET.CRITERIA\",\r\n 39: \"SORT\",\r\n 40: \"DATA.SERIES\",\r\n 41: \"TABLE\",\r\n 42: \"FORMAT.NUMBER\",\r\n 43: \"ALIGNMENT\",\r\n 44: \"STYLE\",\r\n 45: \"BORDER\",\r\n 46: \"CELL.PROTECTION\",\r\n 47: \"COLUMN.WIDTH\",\r\n 48: \"UNDO\",\r\n 49: \"CUT\",\r\n 50: \"COPY\",\r\n 51: \"PASTE\",\r\n 52: \"CLEAR\",\r\n 53: \"PASTE.SPECIAL\",\r\n 54: \"EDIT.DELETE\",\r\n 55: \"INSERT\",\r\n 56: \"FILL.RIGHT\",\r\n 57: \"FILL.DOWN\",\r\n 61: \"DEFINE.NAME\",\r\n 62: \"CREATE.NAMES\",\r\n 63: \"FORMULA.GOTO\",\r\n 64: \"FORMULA.FIND\",\r\n 65: \"SELECT.LAST.CELL\",\r\n 66: \"SHOW.ACTIVE.CELL\",\r\n 67: \"GALLERY.AREA\",\r\n 68: \"GALLERY.BAR\",\r\n 69: \"GALLERY.COLUMN\",\r\n 70: \"GALLERY.LINE\",\r\n 71: \"GALLERY.PIE\",\r\n 72: \"GALLERY.SCATTER\",\r\n 73: \"COMBINATION\",\r\n 74: \"PREFERRED\",\r\n 75: \"ADD.OVERLAY\",\r\n 76: \"GRIDLINES\",\r\n 77: \"SET.PREFERRED\",\r\n 78: \"AXES\",\r\n 79: \"LEGEND\",\r\n 80: \"ATTACH.TEXT\",\r\n 81: \"ADD.ARROW\",\r\n 82: \"SELECT.CHART\",\r\n 83: \"SELECT.PLOT.AREA\",\r\n 84: \"PATTERNS\",\r\n 85: \"MAIN.CHART\",\r\n 86: \"OVERLAY\",\r\n 87: \"SCALE\",\r\n 88: \"FORMAT.LEGEND\",\r\n 89: \"FORMAT.TEXT\",\r\n 90: \"EDIT.REPEAT\",\r\n 91: \"PARSE\",\r\n 92: \"JUSTIFY\",\r\n 93: \"HIDE\",\r\n 94: \"UNHIDE\",\r\n 95: \"WORKSPACE\",\r\n 96: \"FORMULA\",\r\n 97: \"FORMULA.FILL\",\r\n 98: \"FORMULA.ARRAY\",\r\n 99: \"DATA.FIND.NEXT\",\r\n 100: \"DATA.FIND.PREV\",\r\n 101: \"FORMULA.FIND.NEXT\",\r\n 102: \"FORMULA.FIND.PREV\",\r\n 103: \"ACTIVATE\",\r\n 104: \"ACTIVATE.NEXT\",\r\n 105: \"ACTIVATE.PREV\",\r\n 106: \"UNLOCKED.NEXT\",\r\n 107: \"UNLOCKED.PREV\",\r\n 108: \"COPY.PICTURE\",\r\n 109: \"SELECT\",\r\n 110: \"DELETE.NAME\",\r\n 111: \"DELETE.FORMAT\",\r\n 112: \"VLINE\",\r\n 113: \"HLINE\",\r\n 114: \"VPAGE\",\r\n 115: \"HPAGE\",\r\n 116: \"VSCROLL\",\r\n 117: \"HSCROLL\",\r\n 118: \"ALERT\",\r\n 119: \"NEW\",\r\n 120: \"CANCEL.COPY\",\r\n 121: \"SHOW.CLIPBOARD\",\r\n 122: \"MESSAGE\",\r\n 124: \"PASTE.LINK\",\r\n 125: \"APP.ACTIVATE\",\r\n 126: \"DELETE.ARROW\",\r\n 127: \"ROW.HEIGHT\",\r\n 128: \"FORMAT.MOVE\",\r\n 129: \"FORMAT.SIZE\",\r\n 130: \"FORMULA.REPLACE\",\r\n 131: \"SEND.KEYS\",\r\n 132: \"SELECT.SPECIAL\",\r\n 133: \"APPLY.NAMES\",\r\n 134: \"REPLACE.FONT\",\r\n 135: \"FREEZE.PANES\",\r\n 136: \"SHOW.INFO\",\r\n 137: \"SPLIT\",\r\n 138: \"ON.WINDOW\",\r\n 139: \"ON.DATA\",\r\n 140: \"DISABLE.INPUT\",\r\n 142: \"OUTLINE\",\r\n 143: \"LIST.NAMES\",\r\n 144: \"FILE.CLOSE\",\r\n 145: \"SAVE.WORKBOOK\",\r\n 146: \"DATA.FORM\",\r\n 147: \"COPY.CHART\",\r\n 148: \"ON.TIME\",\r\n 149: \"WAIT\",\r\n 150: \"FORMAT.FONT\",\r\n 151: \"FILL.UP\",\r\n 152: \"FILL.LEFT\",\r\n 153: \"DELETE.OVERLAY\",\r\n 155: \"SHORT.MENUS\",\r\n 159: \"SET.UPDATE.STATUS\",\r\n 161: \"COLOR.PALETTE\",\r\n 162: \"DELETE.STYLE\",\r\n 163: \"WINDOW.RESTORE\",\r\n 164: \"WINDOW.MAXIMIZE\",\r\n 166: \"CHANGE.LINK\",\r\n 167: \"CALCULATE.DOCUMENT\",\r\n 168: \"ON.KEY\",\r\n 169: \"APP.RESTORE\",\r\n 170: \"APP.MOVE\",\r\n 171: \"APP.SIZE\",\r\n 172: \"APP.MINIMIZE\",\r\n 173: \"APP.MAXIMIZE\",\r\n 174: \"BRING.TO.FRONT\",\r\n 175: \"SEND.TO.BACK\",\r\n 185: \"MAIN.CHART.TYPE\",\r\n 186: \"OVERLAY.CHART.TYPE\",\r\n 187: \"SELECT.END\",\r\n 188: \"OPEN.MAIL\",\r\n 189: \"SEND.MAIL\",\r\n 190: \"STANDARD.FONT\",\r\n 191: \"CONSOLIDATE\",\r\n 192: \"SORT.SPECIAL\",\r\n 193: \"GALLERY.3D.AREA\",\r\n 194: \"GALLERY.3D.COLUMN\",\r\n 195: \"GALLERY.3D.LINE\",\r\n 196: \"GALLERY.3D.PIE\",\r\n 197: \"VIEW.3D\",\r\n 198: \"GOAL.SEEK\",\r\n 199: \"WORKGROUP\",\r\n 200: \"FILL.GROUP\",\r\n 201: \"UPDATE.LINK\",\r\n 202: \"PROMOTE\",\r\n 203: \"DEMOTE\",\r\n 204: \"SHOW.DETAIL\",\r\n 206: \"UNGROUP\",\r\n 207: \"OBJECT.PROPERTIES\",\r\n 208: \"SAVE.NEW.OBJECT\",\r\n 209: \"SHARE\",\r\n 210: \"SHARE.NAME\",\r\n 211: \"DUPLICATE\",\r\n 212: \"APPLY.STYLE\",\r\n 213: \"ASSIGN.TO.OBJECT\",\r\n 214: \"OBJECT.PROTECTION\",\r\n 215: \"HIDE.OBJECT\",\r\n 216: \"SET.EXTRACT\",\r\n 217: \"CREATE.PUBLISHER\",\r\n 218: \"SUBSCRIBE.TO\",\r\n 219: \"ATTRIBUTES\",\r\n 220: \"SHOW.TOOLBAR\",\r\n 222: \"PRINT.PREVIEW\",\r\n 223: \"EDIT.COLOR\",\r\n 224: \"SHOW.LEVELS\",\r\n 225: \"FORMAT.MAIN\",\r\n 226: \"FORMAT.OVERLAY\",\r\n 227: \"ON.RECALC\",\r\n 228: \"EDIT.SERIES\",\r\n 229: \"DEFINE.STYLE\",\r\n 240: \"LINE.PRINT\",\r\n 243: \"ENTER.DATA\",\r\n 249: \"GALLERY.RADAR\",\r\n 250: \"MERGE.STYLES\",\r\n 251: \"EDITION.OPTIONS\",\r\n 252: \"PASTE.PICTURE\",\r\n 253: \"PASTE.PICTURE.LINK\",\r\n 254: \"SPELLING\",\r\n 256: \"ZOOM\",\r\n 259: \"INSERT.OBJECT\",\r\n 260: \"WINDOW.MINIMIZE\",\r\n 265: \"SOUND.NOTE\",\r\n 266: \"SOUND.PLAY\",\r\n 267: \"FORMAT.SHAPE\",\r\n 268: \"EXTEND.POLYGON\",\r\n 269: \"FORMAT.AUTO\",\r\n 272: \"GALLERY.3D.BAR\",\r\n 273: \"GALLERY.3D.SURFACE\",\r\n 274: \"FILL.AUTO\",\r\n 276: \"CUSTOMIZE.TOOLBAR\",\r\n 277: \"ADD.TOOL\",\r\n 278: \"EDIT.OBJECT\",\r\n 279: \"ON.DOUBLECLICK\",\r\n 280: \"ON.ENTRY\",\r\n 281: \"WORKBOOK.ADD\",\r\n 282: \"WORKBOOK.MOVE\",\r\n 283: \"WORKBOOK.COPY\",\r\n 284: \"WORKBOOK.OPTIONS\",\r\n 285: \"SAVE.WORKSPACE\",\r\n 288: \"CHART.WIZARD\",\r\n 289: \"DELETE.TOOL\",\r\n 290: \"MOVE.TOOL\",\r\n 291: \"WORKBOOK.SELECT\",\r\n 292: \"WORKBOOK.ACTIVATE\",\r\n 293: \"ASSIGN.TO.TOOL\",\r\n 295: \"COPY.TOOL\",\r\n 296: \"RESET.TOOL\",\r\n 297: \"CONSTRAIN.NUMERIC\",\r\n 298: \"PASTE.TOOL\",\r\n 302: \"WORKBOOK.NEW\",\r\n 305: \"SCENARIO.CELLS\",\r\n 306: \"SCENARIO.DELETE\",\r\n 307: \"SCENARIO.ADD\",\r\n 308: \"SCENARIO.EDIT\",\r\n 309: \"SCENARIO.SHOW\",\r\n 310: \"SCENARIO.SHOW.NEXT\",\r\n 311: \"SCENARIO.SUMMARY\",\r\n 312: \"PIVOT.TABLE.WIZARD\",\r\n 313: \"PIVOT.FIELD.PROPERTIES\",\r\n 314: \"PIVOT.FIELD\",\r\n 315: \"PIVOT.ITEM\",\r\n 316: \"PIVOT.ADD.FIELDS\",\r\n 318: \"OPTIONS.CALCULATION\",\r\n 319: \"OPTIONS.EDIT\",\r\n 320: \"OPTIONS.VIEW\",\r\n 321: \"ADDIN.MANAGER\",\r\n 322: \"MENU.EDITOR\",\r\n 323: \"ATTACH.TOOLBARS\",\r\n 324: \"VBAActivate\",\r\n 325: \"OPTIONS.CHART\",\r\n 328: \"VBA.INSERT.FILE\",\r\n 330: \"VBA.PROCEDURE.DEFINITION\",\r\n 336: \"ROUTING.SLIP\",\r\n 338: \"ROUTE.DOCUMENT\",\r\n 339: \"MAIL.LOGON\",\r\n 342: \"INSERT.PICTURE\",\r\n 343: \"EDIT.TOOL\",\r\n 344: \"GALLERY.DOUGHNUT\",\r\n 350: \"CHART.TREND\",\r\n 352: \"PIVOT.ITEM.PROPERTIES\",\r\n 354: \"WORKBOOK.INSERT\",\r\n 355: \"OPTIONS.TRANSITION\",\r\n 356: \"OPTIONS.GENERAL\",\r\n 370: \"FILTER.ADVANCED\",\r\n 373: \"MAIL.ADD.MAILER\",\r\n 374: \"MAIL.DELETE.MAILER\",\r\n 375: \"MAIL.REPLY\",\r\n 376: \"MAIL.REPLY.ALL\",\r\n 377: \"MAIL.FORWARD\",\r\n 378: \"MAIL.NEXT.LETTER\",\r\n 379: \"DATA.LABEL\",\r\n 380: \"INSERT.TITLE\",\r\n 381: \"FONT.PROPERTIES\",\r\n 382: \"MACRO.OPTIONS\",\r\n 383: \"WORKBOOK.HIDE\",\r\n 384: \"WORKBOOK.UNHIDE\",\r\n 385: \"WORKBOOK.DELETE\",\r\n 386: \"WORKBOOK.NAME\",\r\n 388: \"GALLERY.CUSTOM\",\r\n 390: \"ADD.CHART.AUTOFORMAT\",\r\n 391: \"DELETE.CHART.AUTOFORMAT\",\r\n 392: \"CHART.ADD.DATA\",\r\n 393: \"AUTO.OUTLINE\",\r\n 394: \"TAB.ORDER\",\r\n 395: \"SHOW.DIALOG\",\r\n 396: \"SELECT.ALL\",\r\n 397: \"UNGROUP.SHEETS\",\r\n 398: \"SUBTOTAL.CREATE\",\r\n 399: \"SUBTOTAL.REMOVE\",\r\n 400: \"RENAME.OBJECT\",\r\n 412: \"WORKBOOK.SCROLL\",\r\n 413: \"WORKBOOK.NEXT\",\r\n 414: \"WORKBOOK.PREV\",\r\n 415: \"WORKBOOK.TAB.SPLIT\",\r\n 416: \"FULL.SCREEN\",\r\n 417: \"WORKBOOK.PROTECT\",\r\n 420: \"SCROLLBAR.PROPERTIES\",\r\n 421: \"PIVOT.SHOW.PAGES\",\r\n 422: \"TEXT.TO.COLUMNS\",\r\n 423: \"FORMAT.CHARTTYPE\",\r\n 424: \"LINK.FORMAT\",\r\n 425: \"TRACER.DISPLAY\",\r\n 430: \"TRACER.NAVIGATE\",\r\n 431: \"TRACER.CLEAR\",\r\n 432: \"TRACER.ERROR\",\r\n 433: \"PIVOT.FIELD.GROUP\",\r\n 434: \"PIVOT.FIELD.UNGROUP\",\r\n 435: \"CHECKBOX.PROPERTIES\",\r\n 436: \"LABEL.PROPERTIES\",\r\n 437: \"LISTBOX.PROPERTIES\",\r\n 438: \"EDITBOX.PROPERTIES\",\r\n 439: \"PIVOT.REFRESH\",\r\n 440: \"LINK.COMBO\",\r\n 441: \"OPEN.TEXT\",\r\n 442: \"HIDE.DIALOG\",\r\n 443: \"SET.DIALOG.FOCUS\",\r\n 444: \"ENABLE.OBJECT\",\r\n 445: \"PUSHBUTTON.PROPERTIES\",\r\n 446: \"SET.DIALOG.DEFAULT\",\r\n 447: \"FILTER\",\r\n 448: \"FILTER.SHOW.ALL\",\r\n 449: \"CLEAR.OUTLINE\",\r\n 450: \"FUNCTION.WIZARD\",\r\n 451: \"ADD.LIST.ITEM\",\r\n 452: \"SET.LIST.ITEM\",\r\n 453: \"REMOVE.LIST.ITEM\",\r\n 454: \"SELECT.LIST.ITEM\",\r\n 455: \"SET.CONTROL.VALUE\",\r\n 456: \"SAVE.COPY.AS\",\r\n 458: \"OPTIONS.LISTS.ADD\",\r\n 459: \"OPTIONS.LISTS.DELETE\",\r\n 460: \"SERIES.AXES\",\r\n 461: \"SERIES.X\",\r\n 462: \"SERIES.Y\",\r\n 463: \"ERRORBAR.X\",\r\n 464: \"ERRORBAR.Y\",\r\n 465: \"FORMAT.CHART\",\r\n 466: \"SERIES.ORDER\",\r\n 467: \"MAIL.LOGOFF\",\r\n 468: \"CLEAR.ROUTING.SLIP\",\r\n 469: \"APP.ACTIVATE.MICROSOFT\",\r\n 470: \"MAIL.EDIT.MAILER\",\r\n 471: \"ON.SHEET\",\r\n 472: \"STANDARD.WIDTH\",\r\n 473: \"SCENARIO.MERGE\",\r\n 474: \"SUMMARY.INFO\",\r\n 475: \"FIND.FILE\",\r\n 476: \"ACTIVE.CELL.FONT\",\r\n 477: \"ENABLE.TIPWIZARD\",\r\n 478: \"VBA.MAKE.ADDIN\",\r\n 480: \"INSERTDATATABLE\",\r\n 481: \"WORKGROUP.OPTIONS\",\r\n 482: \"MAIL.SEND.MAILER\",\r\n 485: \"AUTOCORRECT\",\r\n 489: \"POST.DOCUMENT\",\r\n 491: \"PICKLIST\",\r\n 493: \"VIEW.SHOW\",\r\n 494: \"VIEW.DEFINE\",\r\n 495: \"VIEW.DELETE\",\r\n 509: \"SHEET.BACKGROUND\",\r\n 510: \"INSERT.MAP.OBJECT\",\r\n 511: \"OPTIONS.MENONO\",\r\n 517: \"MSOCHECKS\",\r\n 518: \"NORMAL\",\r\n 519: \"LAYOUT\",\r\n 520: \"RM.PRINT.AREA\",\r\n 521: \"CLEAR.PRINT.AREA\",\r\n 522: \"ADD.PRINT.AREA\",\r\n 523: \"MOVE.BRK\",\r\n 545: \"HIDECURR.NOTE\",\r\n 546: \"HIDEALL.NOTES\",\r\n 547: \"DELETE.NOTE\",\r\n 548: \"TRAVERSE.NOTES\",\r\n 549: \"ACTIVATE.NOTES\",\r\n 620: \"PROTECT.REVISIONS\",\r\n 621: \"UNPROTECT.REVISIONS\",\r\n 647: \"OPTIONS.ME\",\r\n 653: \"WEB.PUBLISH\",\r\n 667: \"NEWWEBQUERY\",\r\n 673: \"PIVOT.TABLE.CHART\",\r\n 753: \"OPTIONS.SAVE\",\r\n 755: \"OPTIONS.SPELL\",\r\n 808: \"HIDEALL.INKANNOTS\"\r\n};\r\nvar Ftab = {\r\n 0: \"COUNT\",\r\n 1: \"IF\",\r\n 2: \"ISNA\",\r\n 3: \"ISERROR\",\r\n 4: \"SUM\",\r\n 5: \"AVERAGE\",\r\n 6: \"MIN\",\r\n 7: \"MAX\",\r\n 8: \"ROW\",\r\n 9: \"COLUMN\",\r\n 10: \"NA\",\r\n 11: \"NPV\",\r\n 12: \"STDEV\",\r\n 13: \"DOLLAR\",\r\n 14: \"FIXED\",\r\n 15: \"SIN\",\r\n 16: \"COS\",\r\n 17: \"TAN\",\r\n 18: \"ATAN\",\r\n 19: \"PI\",\r\n 20: \"SQRT\",\r\n 21: \"EXP\",\r\n 22: \"LN\",\r\n 23: \"LOG10\",\r\n 24: \"ABS\",\r\n 25: \"INT\",\r\n 26: \"SIGN\",\r\n 27: \"ROUND\",\r\n 28: \"LOOKUP\",\r\n 29: \"INDEX\",\r\n 30: \"REPT\",\r\n 31: \"MID\",\r\n 32: \"LEN\",\r\n 33: \"VALUE\",\r\n 34: \"TRUE\",\r\n 35: \"FALSE\",\r\n 36: \"AND\",\r\n 37: \"OR\",\r\n 38: \"NOT\",\r\n 39: \"MOD\",\r\n 40: \"DCOUNT\",\r\n 41: \"DSUM\",\r\n 42: \"DAVERAGE\",\r\n 43: \"DMIN\",\r\n 44: \"DMAX\",\r\n 45: \"DSTDEV\",\r\n 46: \"VAR\",\r\n 47: \"DVAR\",\r\n 48: \"TEXT\",\r\n 49: \"LINEST\",\r\n 50: \"TREND\",\r\n 51: \"LOGEST\",\r\n 52: \"GROWTH\",\r\n 53: \"GOTO\",\r\n 54: \"HALT\",\r\n 55: \"RETURN\",\r\n 56: \"PV\",\r\n 57: \"FV\",\r\n 58: \"NPER\",\r\n 59: \"PMT\",\r\n 60: \"RATE\",\r\n 61: \"MIRR\",\r\n 62: \"IRR\",\r\n 63: \"RAND\",\r\n 64: \"MATCH\",\r\n 65: \"DATE\",\r\n 66: \"TIME\",\r\n 67: \"DAY\",\r\n 68: \"MONTH\",\r\n 69: \"YEAR\",\r\n 70: \"WEEKDAY\",\r\n 71: \"HOUR\",\r\n 72: \"MINUTE\",\r\n 73: \"SECOND\",\r\n 74: \"NOW\",\r\n 75: \"AREAS\",\r\n 76: \"ROWS\",\r\n 77: \"COLUMNS\",\r\n 78: \"OFFSET\",\r\n 79: \"ABSREF\",\r\n 80: \"RELREF\",\r\n 81: \"ARGUMENT\",\r\n 82: \"SEARCH\",\r\n 83: \"TRANSPOSE\",\r\n 84: \"ERROR\",\r\n 85: \"STEP\",\r\n 86: \"TYPE\",\r\n 87: \"ECHO\",\r\n 88: \"SET.NAME\",\r\n 89: \"CALLER\",\r\n 90: \"DEREF\",\r\n 91: \"WINDOWS\",\r\n 92: \"SERIES\",\r\n 93: \"DOCUMENTS\",\r\n 94: \"ACTIVE.CELL\",\r\n 95: \"SELECTION\",\r\n 96: \"RESULT\",\r\n 97: \"ATAN2\",\r\n 98: \"ASIN\",\r\n 99: \"ACOS\",\r\n 100: \"CHOOSE\",\r\n 101: \"HLOOKUP\",\r\n 102: \"VLOOKUP\",\r\n 103: \"LINKS\",\r\n 104: \"INPUT\",\r\n 105: \"ISREF\",\r\n 106: \"GET.FORMULA\",\r\n 107: \"GET.NAME\",\r\n 108: \"SET.VALUE\",\r\n 109: \"LOG\",\r\n 110: \"EXEC\",\r\n 111: \"CHAR\",\r\n 112: \"LOWER\",\r\n 113: \"UPPER\",\r\n 114: \"PROPER\",\r\n 115: \"LEFT\",\r\n 116: \"RIGHT\",\r\n 117: \"EXACT\",\r\n 118: \"TRIM\",\r\n 119: \"REPLACE\",\r\n 120: \"SUBSTITUTE\",\r\n 121: \"CODE\",\r\n 122: \"NAMES\",\r\n 123: \"DIRECTORY\",\r\n 124: \"FIND\",\r\n 125: \"CELL\",\r\n 126: \"ISERR\",\r\n 127: \"ISTEXT\",\r\n 128: \"ISNUMBER\",\r\n 129: \"ISBLANK\",\r\n 130: \"T\",\r\n 131: \"N\",\r\n 132: \"FOPEN\",\r\n 133: \"FCLOSE\",\r\n 134: \"FSIZE\",\r\n 135: \"FREADLN\",\r\n 136: \"FREAD\",\r\n 137: \"FWRITELN\",\r\n 138: \"FWRITE\",\r\n 139: \"FPOS\",\r\n 140: \"DATEVALUE\",\r\n 141: \"TIMEVALUE\",\r\n 142: \"SLN\",\r\n 143: \"SYD\",\r\n 144: \"DDB\",\r\n 145: \"GET.DEF\",\r\n 146: \"REFTEXT\",\r\n 147: \"TEXTREF\",\r\n 148: \"INDIRECT\",\r\n 149: \"REGISTER\",\r\n 150: \"CALL\",\r\n 151: \"ADD.BAR\",\r\n 152: \"ADD.MENU\",\r\n 153: \"ADD.COMMAND\",\r\n 154: \"ENABLE.COMMAND\",\r\n 155: \"CHECK.COMMAND\",\r\n 156: \"RENAME.COMMAND\",\r\n 157: \"SHOW.BAR\",\r\n 158: \"DELETE.MENU\",\r\n 159: \"DELETE.COMMAND\",\r\n 160: \"GET.CHART.ITEM\",\r\n 161: \"DIALOG.BOX\",\r\n 162: \"CLEAN\",\r\n 163: \"MDETERM\",\r\n 164: \"MINVERSE\",\r\n 165: \"MMULT\",\r\n 166: \"FILES\",\r\n 167: \"IPMT\",\r\n 168: \"PPMT\",\r\n 169: \"COUNTA\",\r\n 170: \"CANCEL.KEY\",\r\n 171: \"FOR\",\r\n 172: \"WHILE\",\r\n 173: \"BREAK\",\r\n 174: \"NEXT\",\r\n 175: \"INITIATE\",\r\n 176: \"REQUEST\",\r\n 177: \"POKE\",\r\n 178: \"EXECUTE\",\r\n 179: \"TERMINATE\",\r\n 180: \"RESTART\",\r\n 181: \"HELP\",\r\n 182: \"GET.BAR\",\r\n 183: \"PRODUCT\",\r\n 184: \"FACT\",\r\n 185: \"GET.CELL\",\r\n 186: \"GET.WORKSPACE\",\r\n 187: \"GET.WINDOW\",\r\n 188: \"GET.DOCUMENT\",\r\n 189: \"DPRODUCT\",\r\n 190: \"ISNONTEXT\",\r\n 191: \"GET.NOTE\",\r\n 192: \"NOTE\",\r\n 193: \"STDEVP\",\r\n 194: \"VARP\",\r\n 195: \"DSTDEVP\",\r\n 196: \"DVARP\",\r\n 197: \"TRUNC\",\r\n 198: \"ISLOGICAL\",\r\n 199: \"DCOUNTA\",\r\n 200: \"DELETE.BAR\",\r\n 201: \"UNREGISTER\",\r\n 204: \"USDOLLAR\",\r\n 205: \"FINDB\",\r\n 206: \"SEARCHB\",\r\n 207: \"REPLACEB\",\r\n 208: \"LEFTB\",\r\n 209: \"RIGHTB\",\r\n 210: \"MIDB\",\r\n 211: \"LENB\",\r\n 212: \"ROUNDUP\",\r\n 213: \"ROUNDDOWN\",\r\n 214: \"ASC\",\r\n 215: \"DBCS\",\r\n 216: \"RANK\",\r\n 219: \"ADDRESS\",\r\n 220: \"DAYS360\",\r\n 221: \"TODAY\",\r\n 222: \"VDB\",\r\n 223: \"ELSE\",\r\n 224: \"ELSE.IF\",\r\n 225: \"END.IF\",\r\n 226: \"FOR.CELL\",\r\n 227: \"MEDIAN\",\r\n 228: \"SUMPRODUCT\",\r\n 229: \"SINH\",\r\n 230: \"COSH\",\r\n 231: \"TANH\",\r\n 232: \"ASINH\",\r\n 233: \"ACOSH\",\r\n 234: \"ATANH\",\r\n 235: \"DGET\",\r\n 236: \"CREATE.OBJECT\",\r\n 237: \"VOLATILE\",\r\n 238: \"LAST.ERROR\",\r\n 239: \"CUSTOM.UNDO\",\r\n 240: \"CUSTOM.REPEAT\",\r\n 241: \"FORMULA.CONVERT\",\r\n 242: \"GET.LINK.INFO\",\r\n 243: \"TEXT.BOX\",\r\n 244: \"INFO\",\r\n 245: \"GROUP\",\r\n 246: \"GET.OBJECT\",\r\n 247: \"DB\",\r\n 248: \"PAUSE\",\r\n 251: \"RESUME\",\r\n 252: \"FREQUENCY\",\r\n 253: \"ADD.TOOLBAR\",\r\n 254: \"DELETE.TOOLBAR\",\r\n 255: \"User\",\r\n 256: \"RESET.TOOLBAR\",\r\n 257: \"EVALUATE\",\r\n 258: \"GET.TOOLBAR\",\r\n 259: \"GET.TOOL\",\r\n 260: \"SPELLING.CHECK\",\r\n 261: \"ERROR.TYPE\",\r\n 262: \"APP.TITLE\",\r\n 263: \"WINDOW.TITLE\",\r\n 264: \"SAVE.TOOLBAR\",\r\n 265: \"ENABLE.TOOL\",\r\n 266: \"PRESS.TOOL\",\r\n 267: \"REGISTER.ID\",\r\n 268: \"GET.WORKBOOK\",\r\n 269: \"AVEDEV\",\r\n 270: \"BETADIST\",\r\n 271: \"GAMMALN\",\r\n 272: \"BETAINV\",\r\n 273: \"BINOMDIST\",\r\n 274: \"CHIDIST\",\r\n 275: \"CHIINV\",\r\n 276: \"COMBIN\",\r\n 277: \"CONFIDENCE\",\r\n 278: \"CRITBINOM\",\r\n 279: \"EVEN\",\r\n 280: \"EXPONDIST\",\r\n 281: \"FDIST\",\r\n 282: \"FINV\",\r\n 283: \"FISHER\",\r\n 284: \"FISHERINV\",\r\n 285: \"FLOOR\",\r\n 286: \"GAMMADIST\",\r\n 287: \"GAMMAINV\",\r\n 288: \"CEILING\",\r\n 289: \"HYPGEOMDIST\",\r\n 290: \"LOGNORMDIST\",\r\n 291: \"LOGINV\",\r\n 292: \"NEGBINOMDIST\",\r\n 293: \"NORMDIST\",\r\n 294: \"NORMSDIST\",\r\n 295: \"NORMINV\",\r\n 296: \"NORMSINV\",\r\n 297: \"STANDARDIZE\",\r\n 298: \"ODD\",\r\n 299: \"PERMUT\",\r\n 300: \"POISSON\",\r\n 301: \"TDIST\",\r\n 302: \"WEIBULL\",\r\n 303: \"SUMXMY2\",\r\n 304: \"SUMX2MY2\",\r\n 305: \"SUMX2PY2\",\r\n 306: \"CHITEST\",\r\n 307: \"CORREL\",\r\n 308: \"COVAR\",\r\n 309: \"FORECAST\",\r\n 310: \"FTEST\",\r\n 311: \"INTERCEPT\",\r\n 312: \"PEARSON\",\r\n 313: \"RSQ\",\r\n 314: \"STEYX\",\r\n 315: \"SLOPE\",\r\n 316: \"TTEST\",\r\n 317: \"PROB\",\r\n 318: \"DEVSQ\",\r\n 319: \"GEOMEAN\",\r\n 320: \"HARMEAN\",\r\n 321: \"SUMSQ\",\r\n 322: \"KURT\",\r\n 323: \"SKEW\",\r\n 324: \"ZTEST\",\r\n 325: \"LARGE\",\r\n 326: \"SMALL\",\r\n 327: \"QUARTILE\",\r\n 328: \"PERCENTILE\",\r\n 329: \"PERCENTRANK\",\r\n 330: \"MODE\",\r\n 331: \"TRIMMEAN\",\r\n 332: \"TINV\",\r\n 334: \"MOVIE.COMMAND\",\r\n 335: \"GET.MOVIE\",\r\n 336: \"CONCATENATE\",\r\n 337: \"POWER\",\r\n 338: \"PIVOT.ADD.DATA\",\r\n 339: \"GET.PIVOT.TABLE\",\r\n 340: \"GET.PIVOT.FIELD\",\r\n 341: \"GET.PIVOT.ITEM\",\r\n 342: \"RADIANS\",\r\n 343: \"DEGREES\",\r\n 344: \"SUBTOTAL\",\r\n 345: \"SUMIF\",\r\n 346: \"COUNTIF\",\r\n 347: \"COUNTBLANK\",\r\n 348: \"SCENARIO.GET\",\r\n 349: \"OPTIONS.LISTS.GET\",\r\n 350: \"ISPMT\",\r\n 351: \"DATEDIF\",\r\n 352: \"DATESTRING\",\r\n 353: \"NUMBERSTRING\",\r\n 354: \"ROMAN\",\r\n 355: \"OPEN.DIALOG\",\r\n 356: \"SAVE.DIALOG\",\r\n 357: \"VIEW.GET\",\r\n 358: \"GETPIVOTDATA\",\r\n 359: \"HYPERLINK\",\r\n 360: \"PHONETIC\",\r\n 361: \"AVERAGEA\",\r\n 362: \"MAXA\",\r\n 363: \"MINA\",\r\n 364: \"STDEVPA\",\r\n 365: \"VARPA\",\r\n 366: \"STDEVA\",\r\n 367: \"VARA\",\r\n 368: \"BAHTTEXT\",\r\n 369: \"THAIDAYOFWEEK\",\r\n 370: \"THAIDIGIT\",\r\n 371: \"THAIMONTHOFYEAR\",\r\n 372: \"THAINUMSOUND\",\r\n 373: \"THAINUMSTRING\",\r\n 374: \"THAISTRINGLENGTH\",\r\n 375: \"ISTHAIDIGIT\",\r\n 376: \"ROUNDBAHTDOWN\",\r\n 377: \"ROUNDBAHTUP\",\r\n 378: \"THAIYEAR\",\r\n 379: \"RTD\",\r\n 380: \"CUBEVALUE\",\r\n 381: \"CUBEMEMBER\",\r\n 382: \"CUBEMEMBERPROPERTY\",\r\n 383: \"CUBERANKEDMEMBER\",\r\n 384: \"HEX2BIN\",\r\n 385: \"HEX2DEC\",\r\n 386: \"HEX2OCT\",\r\n 387: \"DEC2BIN\",\r\n 388: \"DEC2HEX\",\r\n 389: \"DEC2OCT\",\r\n 390: \"OCT2BIN\",\r\n 391: \"OCT2HEX\",\r\n 392: \"OCT2DEC\",\r\n 393: \"BIN2DEC\",\r\n 394: \"BIN2OCT\",\r\n 395: \"BIN2HEX\",\r\n 396: \"IMSUB\",\r\n 397: \"IMDIV\",\r\n 398: \"IMPOWER\",\r\n 399: \"IMABS\",\r\n 400: \"IMSQRT\",\r\n 401: \"IMLN\",\r\n 402: \"IMLOG2\",\r\n 403: \"IMLOG10\",\r\n 404: \"IMSIN\",\r\n 405: \"IMCOS\",\r\n 406: \"IMEXP\",\r\n 407: \"IMARGUMENT\",\r\n 408: \"IMCONJUGATE\",\r\n 409: \"IMAGINARY\",\r\n 410: \"IMREAL\",\r\n 411: \"COMPLEX\",\r\n 412: \"IMSUM\",\r\n 413: \"IMPRODUCT\",\r\n 414: \"SERIESSUM\",\r\n 415: \"FACTDOUBLE\",\r\n 416: \"SQRTPI\",\r\n 417: \"QUOTIENT\",\r\n 418: \"DELTA\",\r\n 419: \"GESTEP\",\r\n 420: \"ISEVEN\",\r\n 421: \"ISODD\",\r\n 422: \"MROUND\",\r\n 423: \"ERF\",\r\n 424: \"ERFC\",\r\n 425: \"BESSELJ\",\r\n 426: \"BESSELK\",\r\n 427: \"BESSELY\",\r\n 428: \"BESSELI\",\r\n 429: \"XIRR\",\r\n 430: \"XNPV\",\r\n 431: \"PRICEMAT\",\r\n 432: \"YIELDMAT\",\r\n 433: \"INTRATE\",\r\n 434: \"RECEIVED\",\r\n 435: \"DISC\",\r\n 436: \"PRICEDISC\",\r\n 437: \"YIELDDISC\",\r\n 438: \"TBILLEQ\",\r\n 439: \"TBILLPRICE\",\r\n 440: \"TBILLYIELD\",\r\n 441: \"PRICE\",\r\n 442: \"YIELD\",\r\n 443: \"DOLLARDE\",\r\n 444: \"DOLLARFR\",\r\n 445: \"NOMINAL\",\r\n 446: \"EFFECT\",\r\n 447: \"CUMPRINC\",\r\n 448: \"CUMIPMT\",\r\n 449: \"EDATE\",\r\n 450: \"EOMONTH\",\r\n 451: \"YEARFRAC\",\r\n 452: \"COUPDAYBS\",\r\n 453: \"COUPDAYS\",\r\n 454: \"COUPDAYSNC\",\r\n 455: \"COUPNCD\",\r\n 456: \"COUPNUM\",\r\n 457: \"COUPPCD\",\r\n 458: \"DURATION\",\r\n 459: \"MDURATION\",\r\n 460: \"ODDLPRICE\",\r\n 461: \"ODDLYIELD\",\r\n 462: \"ODDFPRICE\",\r\n 463: \"ODDFYIELD\",\r\n 464: \"RANDBETWEEN\",\r\n 465: \"WEEKNUM\",\r\n 466: \"AMORDEGRC\",\r\n 467: \"AMORLINC\",\r\n 468: \"CONVERT\",\r\n 724: \"SHEETJS\",\r\n 469: \"ACCRINT\",\r\n 470: \"ACCRINTM\",\r\n 471: \"WORKDAY\",\r\n 472: \"NETWORKDAYS\",\r\n 473: \"GCD\",\r\n 474: \"MULTINOMIAL\",\r\n 475: \"LCM\",\r\n 476: \"FVSCHEDULE\",\r\n 477: \"CUBEKPIMEMBER\",\r\n 478: \"CUBESET\",\r\n 479: \"CUBESETCOUNT\",\r\n 480: \"IFERROR\",\r\n 481: \"COUNTIFS\",\r\n 482: \"SUMIFS\",\r\n 483: \"AVERAGEIF\",\r\n 484: \"AVERAGEIFS\"\r\n};\r\nvar FtabArgc = {\r\n 2: 1,\r\n 3: 1,\r\n 10: 0,\r\n 15: 1,\r\n 16: 1,\r\n 17: 1,\r\n 18: 1,\r\n 19: 0,\r\n 20: 1,\r\n 21: 1,\r\n 22: 1,\r\n 23: 1,\r\n 24: 1,\r\n 25: 1,\r\n 26: 1,\r\n 27: 2,\r\n 30: 2,\r\n 31: 3,\r\n 32: 1,\r\n 33: 1,\r\n 34: 0,\r\n 35: 0,\r\n 38: 1,\r\n 39: 2,\r\n 40: 3,\r\n 41: 3,\r\n 42: 3,\r\n 43: 3,\r\n 44: 3,\r\n 45: 3,\r\n 47: 3,\r\n 48: 2,\r\n 53: 1,\r\n 61: 3,\r\n 63: 0,\r\n 65: 3,\r\n 66: 3,\r\n 67: 1,\r\n 68: 1,\r\n 69: 1,\r\n 70: 1,\r\n 71: 1,\r\n 72: 1,\r\n 73: 1,\r\n 74: 0,\r\n 75: 1,\r\n 76: 1,\r\n 77: 1,\r\n 79: 2,\r\n 80: 2,\r\n 83: 1,\r\n 85: 0,\r\n 86: 1,\r\n 89: 0,\r\n 90: 1,\r\n 94: 0,\r\n 95: 0,\r\n 97: 2,\r\n 98: 1,\r\n 99: 1,\r\n 101: 3,\r\n 102: 3,\r\n 105: 1,\r\n 106: 1,\r\n 108: 2,\r\n 111: 1,\r\n 112: 1,\r\n 113: 1,\r\n 114: 1,\r\n 117: 2,\r\n 118: 1,\r\n 119: 4,\r\n 121: 1,\r\n 126: 1,\r\n 127: 1,\r\n 128: 1,\r\n 129: 1,\r\n 130: 1,\r\n 131: 1,\r\n 133: 1,\r\n 134: 1,\r\n 135: 1,\r\n 136: 2,\r\n 137: 2,\r\n 138: 2,\r\n 140: 1,\r\n 141: 1,\r\n 142: 3,\r\n 143: 4,\r\n 144: 4,\r\n 161: 1,\r\n 162: 1,\r\n 163: 1,\r\n 164: 1,\r\n 165: 2,\r\n 172: 1,\r\n 175: 2,\r\n 176: 2,\r\n 177: 3,\r\n 178: 2,\r\n 179: 1,\r\n 184: 1,\r\n 186: 1,\r\n 189: 3,\r\n 190: 1,\r\n 195: 3,\r\n 196: 3,\r\n 197: 1,\r\n 198: 1,\r\n 199: 3,\r\n 201: 1,\r\n 207: 4,\r\n 210: 3,\r\n 211: 1,\r\n 212: 2,\r\n 213: 2,\r\n 214: 1,\r\n 215: 1,\r\n 225: 0,\r\n 229: 1,\r\n 230: 1,\r\n 231: 1,\r\n 232: 1,\r\n 233: 1,\r\n 234: 1,\r\n 235: 3,\r\n 244: 1,\r\n 247: 4,\r\n 252: 2,\r\n 257: 1,\r\n 261: 1,\r\n 271: 1,\r\n 273: 4,\r\n 274: 2,\r\n 275: 2,\r\n 276: 2,\r\n 277: 3,\r\n 278: 3,\r\n 279: 1,\r\n 280: 3,\r\n 281: 3,\r\n 282: 3,\r\n 283: 1,\r\n 284: 1,\r\n 285: 2,\r\n 286: 4,\r\n 287: 3,\r\n 288: 2,\r\n 289: 4,\r\n 290: 3,\r\n 291: 3,\r\n 292: 3,\r\n 293: 4,\r\n 294: 1,\r\n 295: 3,\r\n 296: 1,\r\n 297: 3,\r\n 298: 1,\r\n 299: 2,\r\n 300: 3,\r\n 301: 3,\r\n 302: 4,\r\n 303: 2,\r\n 304: 2,\r\n 305: 2,\r\n 306: 2,\r\n 307: 2,\r\n 308: 2,\r\n 309: 3,\r\n 310: 2,\r\n 311: 2,\r\n 312: 2,\r\n 313: 2,\r\n 314: 2,\r\n 315: 2,\r\n 316: 4,\r\n 325: 2,\r\n 326: 2,\r\n 327: 2,\r\n 328: 2,\r\n 331: 2,\r\n 332: 2,\r\n 337: 2,\r\n 342: 1,\r\n 343: 1,\r\n 346: 2,\r\n 347: 1,\r\n 350: 4,\r\n 351: 3,\r\n 352: 1,\r\n 353: 2,\r\n 360: 1,\r\n 368: 1,\r\n 369: 1,\r\n 370: 1,\r\n 371: 1,\r\n 372: 1,\r\n 373: 1,\r\n 374: 1,\r\n 375: 1,\r\n 376: 1,\r\n 377: 1,\r\n 378: 1,\r\n 382: 3,\r\n 385: 1,\r\n 392: 1,\r\n 393: 1,\r\n 396: 2,\r\n 397: 2,\r\n 398: 2,\r\n 399: 1,\r\n 400: 1,\r\n 401: 1,\r\n 402: 1,\r\n 403: 1,\r\n 404: 1,\r\n 405: 1,\r\n 406: 1,\r\n 407: 1,\r\n 408: 1,\r\n 409: 1,\r\n 410: 1,\r\n 414: 4,\r\n 415: 1,\r\n 416: 1,\r\n 417: 2,\r\n 420: 1,\r\n 421: 1,\r\n 422: 2,\r\n 424: 1,\r\n 425: 2,\r\n 426: 2,\r\n 427: 2,\r\n 428: 2,\r\n 430: 3,\r\n 438: 3,\r\n 439: 3,\r\n 440: 3,\r\n 443: 2,\r\n 444: 2,\r\n 445: 2,\r\n 446: 2,\r\n 447: 6,\r\n 448: 6,\r\n 449: 2,\r\n 450: 2,\r\n 464: 2,\r\n 468: 3,\r\n 476: 2,\r\n 479: 1,\r\n 480: 2,\r\n 65535: 0\r\n};\r\n/* Part 3 TODO: actually parse formulae */\r\nfunction ods_to_csf_formula(f) {\r\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\r\n\t/* 5.2 Basic Expressions */\r\n\tif(f.charCodeAt(0) == 61) {\r\n\t\tf = f.slice(1);\r\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\r\n\t}\r\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\r\n\t/* Part 3 Section 5.8 References */\r\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\r\n\tf = f.replace(/\\$'([^']|'')+'/g, function($$) { return $$.slice(1); });\r\n\tf = f.replace(/\\$([^\\]\\. #$]+)/g, function($$, $1) { return ($1).match(/^([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])?(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})?$/) ? $$ : $1; });\r\n\t/* TODO: something other than this */\r\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\r\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\r\n}\r\n\r\nfunction csf_to_ods_formula(f) {\r\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\r\n\t/* TODO: something other than this */\r\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\r\n}\r\n\r\nfunction ods_to_csf_3D(r) {\r\n\tr = r.replace(/\\$'([^']|'')+'/g, function($$) { return $$.slice(1); });\r\n\tr = r.replace(/\\$([^\\]\\. #$]+)/g, function($$, $1) { return ($1).match(/^([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])?(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})?$/) ? $$ : $1; });\r\n\tvar a = r.split(\":\");\r\n\tvar s = a[0].split(\".\")[0];\r\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\r\n}\r\n\r\nfunction csf_to_ods_3D(r) {\r\n\treturn r.replace(/!/,\".\");\r\n}\r\n\r\nvar strs = {}; // shared strings\r\nvar _ssfopts = {}; // spreadsheet formatting options\r\n\r\n\r\n/*global Map */\r\nvar browser_has_Map = typeof Map !== 'undefined';\r\n\r\nfunction get_sst_id(sst, str, rev) {\r\n\tvar i = 0, len = sst.length;\r\n\tif(rev) {\r\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\r\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\r\n\t\t\tfor(; i < revarr.length; ++i) {\r\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\r\n\t\t\t}\r\n\t\t}\r\n\t} else for(; i < len; ++i) {\r\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\r\n\t}\r\n\tsst[len] = ({t:str}); sst.Count ++; sst.Unique ++;\r\n\tif(rev) {\r\n\t\tif(browser_has_Map) {\r\n\t\t\tif(!rev.has(str)) rev.set(str, []);\r\n\t\t\trev.get(str).push(len);\r\n\t\t} else {\r\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\r\n\t\t\trev[str].push(len);\r\n\t\t}\r\n\t}\r\n\treturn len;\r\n}\r\n\r\nfunction col_obj_w(C, col) {\r\n\tvar p = ({min:C+1,max:C+1});\r\n\t/* wch (chars), wpx (pixels) */\r\n\tvar wch = -1;\r\n\tif(col.MDW) MDW = col.MDW;\r\n\tif(col.width != null) p.customWidth = 1;\r\n\telse if(col.wpx != null) wch = px2char(col.wpx);\r\n\telse if(col.wch != null) wch = col.wch;\r\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\r\n\telse if(col.width != null) p.width = col.width;\r\n\tif(col.hidden) p.hidden = true;\r\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\r\n\treturn p;\r\n}\r\n\r\nfunction default_margins(margins, mode) {\r\n\tif(!margins) return;\r\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\r\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\r\n\tif(margins.left == null) margins.left = defs[0];\r\n\tif(margins.right == null) margins.right = defs[1];\r\n\tif(margins.top == null) margins.top = defs[2];\r\n\tif(margins.bottom == null) margins.bottom = defs[3];\r\n\tif(margins.header == null) margins.header = defs[4];\r\n\tif(margins.footer == null) margins.footer = defs[5];\r\n}\r\n\r\nfunction get_cell_style(styles, cell, opts) {\r\n if (typeof style_builder != 'undefined') {\r\n if (/^\\d+$/.exec(cell.s)) { return cell.s} // if its already an integer index, let it be\r\n if (cell.s && (cell.s == +cell.s)) { return cell.s} // if its already an integer index, let it be\r\n var s = cell.s || {};\r\n if (cell.z) s.numFmt = cell.z;\r\n return style_builder.addStyle(s);\r\n } else {\r\n var z = opts.revssf[cell.z != null ? cell.z : \"General\"];\r\n var i = 0x3c, len = styles.length;\r\n if(z == null && opts.ssf) {\r\n for(; i < 0x188; ++i) if(opts.ssf[i] == null) {\r\n SSF__load(cell.z, i);\r\n // $FlowIgnore\r\n opts.ssf[i] = cell.z;\r\n opts.revssf[cell.z] = z = i;\r\n break;\r\n }\r\n }\r\n for(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\r\n styles[len] = {\r\n numFmtId:z,\r\n fontId:0,\r\n fillId:0,\r\n borderId:0,\r\n xfId:0,\r\n applyNumberFormat:1\r\n };\r\n return len;\r\n }\r\n}\r\n\r\nfunction safe_format(p, fmtid, fillid, opts, themes, styles) {\r\n\ttry {\r\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\r\n\t} catch(e) { if(opts.WTF) throw e; }\r\n\tif(p.t === 'z' && !opts.cellStyles) return;\r\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\r\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\r\n\t\tif(table_fmt[fmtid] == null) SSF__load(SSFImplicit[fmtid] || \"General\", fmtid);\r\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\r\n\t\telse if(fmtid === 0) {\r\n\t\t\tif(p.t === 'n') {\r\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\r\n\t\t\t\telse p.w = SSF_general_num(p.v);\r\n\t\t\t}\r\n\t\t\telse if(p.t === 'd') {\r\n\t\t\t\tvar dd = datenum(p.v);\r\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\r\n\t\t\t\telse p.w = SSF_general_num(dd);\r\n\t\t\t}\r\n\t\t\telse if(p.v === undefined) return \"\";\r\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\r\n\t\t}\r\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\r\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\r\n\t} catch(e) { if(opts.WTF) throw e; }\r\n\tif(!opts.cellStyles) return;\r\n\tif(fillid != null) try {\r\n\t\tp.s = styles.Fills[fillid];\r\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\r\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\r\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\r\n\t\t}\r\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\r\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\r\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\r\n\t\t}\r\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\r\n}\r\n\r\nfunction check_ws(ws, sname, i) {\r\n\tif(ws && ws['!ref']) {\r\n\t\tvar range = safe_decode_range(ws['!ref']);\r\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\r\n\t}\r\n}\r\nfunction parse_ws_xml_dim(ws, s) {\r\n\tvar d = safe_decode_range(s);\r\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\r\n}\r\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\r\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\r\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\r\nvar dimregex = /\"(\\w*:\\w*)\"/;\r\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\r\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\r\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\r\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\r\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\r\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\r\n\r\n/* 18.3 Worksheets */\r\nfunction parse_ws_xml(data, opts, idx, rels, wb, themes, styles) {\r\n\tif(!data) return data;\r\n\tif(!rels) rels = {'!id':{}};\r\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\r\n\r\n\t/* 18.3.1.99 worksheet CT_Worksheet */\r\n\tvar s = opts.dense ? ([]) : ({});\r\n\tvar refguess = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} });\r\n\r\n\tvar data1 = \"\", data2 = \"\";\r\n\tvar mtch = data.match(sheetdataregex);\r\n\tif(mtch) {\r\n\t\tdata1 = data.slice(0, mtch.index);\r\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\r\n\t} else data1 = data2 = data;\r\n\r\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\r\n\tvar sheetPr = data1.match(sheetprregex);\r\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\r\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\r\n\r\n\t/* 18.3.1.35 dimension CT_SheetDimension */\r\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\r\n\tif(ridx > 0) {\r\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\r\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\r\n\t}\r\n\r\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\r\n\tvar svs = data1.match(svsregex);\r\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\r\n\r\n\t/* 18.3.1.17 cols CT_Cols */\r\n\tvar columns = [];\r\n\tif(opts.cellStyles) {\r\n\t\t/* 18.3.1.13 col CT_Col */\r\n\t\tvar cols = data1.match(colregex);\r\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\r\n\t}\r\n\r\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\r\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\r\n\r\n\t/* 18.3.1.2 autoFilter CT_AutoFilter */\r\n\tvar afilter = data2.match(afregex);\r\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\r\n\r\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\r\n\tvar merges = [];\r\n\tvar _merge = data2.match(mergecregex);\r\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\r\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\r\n\r\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\r\n\tvar hlink = data2.match(hlinkregex);\r\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\r\n\r\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\r\n\tvar margins = data2.match(marginregex);\r\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\r\n\r\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\r\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\r\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\r\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\r\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\r\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\r\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\r\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\r\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\r\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\r\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\r\n\t\t}\r\n\t}\r\n\tif(columns.length > 0) s[\"!cols\"] = columns;\r\n\tif(merges.length > 0) s[\"!merges\"] = merges;\r\n\treturn s;\r\n}\r\n\r\nfunction write_ws_xml_merges(merges) {\r\n\tif(merges.length === 0) return \"\";\r\n\tvar o = '';\r\n\tfor(var i = 0; i != merges.length; ++i) o += '';\r\n\treturn o + '';\r\n}\r\n\r\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\r\nfunction parse_ws_xml_sheetpr(sheetPr, s, wb, idx) {\r\n\tvar data = parsexmltag(sheetPr);\r\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\r\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\r\n}\r\nfunction parse_ws_xml_sheetpr2(sheetPr, body, s, wb, idx) {\r\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\r\n}\r\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\r\n\tvar needed = false;\r\n\tvar props = {}, payload = null;\r\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\r\n\t\tvar cname = wb.SheetNames[idx];\r\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\r\n\t\tneeded = true;\r\n\t\tprops.codeName = utf8write(escapexml(cname));\r\n\t}\r\n\r\n\tif(ws && ws[\"!outline\"]) {\r\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\r\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\r\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\r\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\r\n\t}\r\n\r\n\tif(!needed && !payload) return;\r\n\to[o.length] = (writextag('sheetPr', payload, props));\r\n}\r\n\r\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\r\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\r\nvar sheetprot_deftrue = [\r\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\r\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\r\n\t\"deleteColumns\", \"deleteRows\",\r\n\t\"sort\", \"autoFilter\", \"pivotTables\"\r\n];\r\nfunction write_ws_xml_protection(sp) {\r\n\t// algorithmName, hashValue, saltValue, spinCount\r\n\tvar o = ({sheet:1});\r\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\r\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\r\n\t/* TODO: algorithm */\r\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\r\n\treturn writextag('sheetProtection', null, o);\r\n}\r\n\r\nfunction parse_ws_xml_hlinks(s, data, rels) {\r\n\tvar dense = Array.isArray(s);\r\n\tfor(var i = 0; i != data.length; ++i) {\r\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\r\n\t\tif(!val.ref) return;\r\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\r\n\t\tif(rel) {\r\n\t\t\tval.Target = rel.Target;\r\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\r\n\t\t} else {\r\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\r\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\r\n\t\t}\r\n\t\tval.Rel = rel;\r\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\r\n\t\tvar rng = safe_decode_range(val.ref);\r\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\r\n\t\t\tvar addr = encode_cell({c:C,r:R});\r\n\t\t\tif(dense) {\r\n\t\t\t\tif(!s[R]) s[R] = [];\r\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\r\n\t\t\t\ts[R][C].l = val;\r\n\t\t\t} else {\r\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\r\n\t\t\t\ts[addr].l = val;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction parse_ws_xml_margins(margin) {\r\n\tvar o = {};\r\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\r\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\r\n\t});\r\n\treturn o;\r\n}\r\nfunction write_ws_xml_margins(margin) {\r\n\tdefault_margins(margin);\r\n\treturn writextag('pageMargins', null, margin);\r\n}\r\n\r\nfunction parse_ws_xml_cols(columns, cols) {\r\n\tvar seencol = false;\r\n\tfor(var coli = 0; coli != cols.length; ++coli) {\r\n\t\tvar coll = parsexmltag(cols[coli], true);\r\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\r\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\r\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\r\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\r\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\r\n\t\tprocess_col(coll);\r\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\r\n\t}\r\n}\r\nfunction write_ws_xml_cols(ws, cols) {\r\n\tvar o = [\"\"], col;\r\n\tfor(var i = 0; i != cols.length; ++i) {\r\n\t\tif(!(col = cols[i])) continue;\r\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\r\n\t}\r\n\to[o.length] = \"\";\r\n\treturn o.join(\"\");\r\n}\r\n\r\nfunction parse_ws_xml_autofilter(data) {\r\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\r\n\treturn o;\r\n}\r\nfunction write_ws_xml_autofilter(data, ws, wb, idx) {\r\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\r\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]});\r\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\r\n\tvar names = wb.Workbook.Names;\r\n\tvar range = decode_range(ref);\r\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\r\n\tfor(var i = 0; i < names.length; ++i) {\r\n\t\tvar name = names[i];\r\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\r\n\t\tif(name.Sheet != idx) continue;\r\n\t\tname.Ref = formula_quote_sheet_name(wb.SheetNames[idx]) + \"!\" + fix_range(ref); break;\r\n\t}\r\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\r\n\treturn writextag(\"autoFilter\", null, {ref:ref});\r\n}\r\n\r\n/* 18.3.1.88 sheetViews CT_SheetViews */\r\n/* 18.3.1.87 sheetView CT_SheetView */\r\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/g;\r\nfunction parse_ws_xml_sheetviews(data, wb) {\r\n\tif(!wb.Views) wb.Views = [{}];\r\n\t(data.match(sviewregex)||[]).forEach(function(r, i) {\r\n\t\tvar tag = parsexmltag(r);\r\n\t\t// $FlowIgnore\r\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\r\n\t\t// $FlowIgnore\r\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\r\n\t\t// $FlowIgnore\r\n\t\tif(tag.rightToLeft && parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\r\n\t});\r\n}\r\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb) {\r\n\tvar sview = ({workbookViewId:\"0\"});\r\n\t// $FlowIgnore\r\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\r\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\r\n}\r\n\r\nfunction write_ws_xml_cell(cell, ref, ws, opts) {\r\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\r\n\tif((cell.v === undefined || cell.t === \"z\" && !(opts||{}).sheetStubs) && typeof cell.f !== \"string\" && typeof cell.z == \"undefined\") return \"\";\r\n\tvar vv = \"\";\r\n\tvar oldt = cell.t, oldv = cell.v;\r\n\tif(cell.t !== \"z\") switch(cell.t) {\r\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\r\n\t\tcase 'n': vv = ''+cell.v; break;\r\n\t\tcase 'e': vv = BErr[cell.v]; break;\r\n\t\tcase 'd':\r\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\r\n\t\t\telse {\r\n\t\t\t\tcell = dup(cell);\r\n\t\t\t\tcell.t = 'n';\r\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\r\n\t\t\t}\r\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\r\n\t\t\tbreak;\r\n\t\tdefault: vv = cell.v; break;\r\n\t}\r\n\tvar v = (cell.t == \"z\" || cell.v == null)? \"\" : writetag('v', escapexml(vv)), o = ({r:ref});\r\n\t/* TODO: cell style */\r\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\r\n\tif(os !== 0) o.s = os;\r\n\tswitch(cell.t) {\r\n\t\tcase 'n': break;\r\n\t\tcase 'd': o.t = \"d\"; break;\r\n\t\tcase 'b': o.t = \"b\"; break;\r\n\t\tcase 'e': o.t = \"e\"; break;\r\n\t\tcase 'z': break;\r\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\r\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\r\n\t\t\tif(opts && opts.bookSST) {\r\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\r\n\t\t\t\to.t = \"s\"; break;\r\n\t\t\t}\r\n\t\t\telse o.t = \"str\"; break;\r\n\t}\r\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\r\n\tif(typeof cell.f == \"string\" && cell.f) {\r\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\r\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\r\n\t}\r\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\r\n\tif(cell.D) o.cm = 1;\r\n\treturn writextag('c', v, o);\r\n}\r\n\r\nvar parse_ws_xml_data = (function() {\r\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\r\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\r\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\r\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\r\n\r\nreturn function parse_ws_xml_data(sdata, s, opts, guess, themes, styles) {\r\n\tvar ri = 0, x = \"\", cells = [], cref = [], idx=0, i=0, cc=0, d=\"\", p;\r\n\tvar tag, tagr = 0, tagc = 0;\r\n\tvar sstr, ftag;\r\n\tvar fmtid = 0, fillid = 0;\r\n\tvar do_format = Array.isArray(styles.CellXf), cf;\r\n\tvar arrayf = [];\r\n\tvar sharedf = [];\r\n\tvar dense = Array.isArray(s);\r\n\tvar rows = [], rowobj = {}, rowrite = false;\r\n\tvar sheetStubs = !!opts.sheetStubs;\r\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\r\n\t\tx = marr[mt].trim();\r\n\t\tvar xlen = x.length;\r\n\t\tif(xlen === 0) continue;\r\n\r\n\t\t/* 18.3.1.73 row CT_Row */\r\n\t\tvar rstarti = 0;\r\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\r\n\t\t\tcase \">\" /*62*/:\r\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\r\n\t\t\t\tif(opts && opts.cellStyles) {\r\n\t\t\t\t\t// TODO: avoid duplication\r\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\r\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\r\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\r\n\t\t\t\t\trowobj = {}; rowrite = false;\r\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\r\n\t\t\t\t\tif(tag.hidden && parsexmlbool(tag.hidden)) { rowrite = true; rowobj.hidden = true; }\r\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\r\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\r\n\t\t}\r\n\t\tif(rstarti >= ri) break;\r\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\r\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\r\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\r\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\r\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\r\n\r\n\t\tif(opts && opts.cellStyles) {\r\n\t\t\trowobj = {}; rowrite = false;\r\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\r\n\t\t\tif(tag.hidden && parsexmlbool(tag.hidden)) { rowrite = true; rowobj.hidden = true; }\r\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\r\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\r\n\t\t}\r\n\r\n\t\t/* 18.3.1.4 c CT_Cell */\r\n\t\tcells = x.slice(ri).split(cellregex);\r\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\r\n\t\tcells = cells.slice(rslice);\r\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\r\n\t\t\tx = cells[ri].trim();\r\n\t\t\tif(x.length === 0) continue;\r\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\r\n\t\t\tx = \"\":\"\") + x;\r\n\t\t\tif(cref != null && cref.length === 2) {\r\n\t\t\t\tidx = 0; d=cref[1];\r\n\t\t\t\tfor(i=0; i != d.length; ++i) {\r\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\r\n\t\t\t\t\tidx = 26*idx + cc;\r\n\t\t\t\t}\r\n\t\t\t\t--idx;\r\n\t\t\t\ttagc = idx;\r\n\t\t\t} else ++tagc;\r\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\r\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\r\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\r\n\t\t\td = x.slice(i);\r\n\t\t\tp = ({t:\"\"});\r\n\r\n\t\t\tif((cref=d.match(match_v))!= null && cref[1] !== '') p.v=unescapexml(cref[1]);\r\n\t\t\tif(opts.cellFormula) {\r\n\t\t\t\tif((cref=d.match(match_f))!= null && cref[1] !== '') {\r\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\r\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1]), true);\r\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\r\n\t\t\t\t\tif(cref[0].indexOf('t=\"array\"') > -1) {\r\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\r\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\r\n\t\t\t\t\t} else if(cref[0].indexOf('t=\"shared\"') > -1) {\r\n\t\t\t\t\t\t// TODO: parse formula\r\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\r\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\r\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\r\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if((cref=d.match(/]*\\/>/))) {\r\n\t\t\t\t\tftag = parsexmltag(cref[0]);\r\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\r\n\t\t\t\t}\r\n\t\t\t\t/* TODO: factor out contains logic */\r\n\t\t\t\tvar _tag = decode_cell(tag.r);\r\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\r\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\r\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\r\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\r\n\t\t\t}\r\n\r\n\t\t\tif(tag.t == null && p.v === undefined) {\r\n\t\t\t\tif(p.f || p.F) {\r\n\t\t\t\t\tp.v = 0; p.t = \"n\";\r\n\t\t\t\t} else if(!sheetStubs) continue;\r\n\t\t\t\telse p.t = \"z\";\r\n\t\t\t}\r\n\t\t\telse p.t = tag.t || \"n\";\r\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\r\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\r\n\t\t\t/* 18.18.11 t ST_CellType */\r\n\t\t\tswitch(p.t) {\r\n\t\t\t\tcase 'n':\r\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\r\n\t\t\t\t\t\tif(!sheetStubs) continue;\r\n\t\t\t\t\t\tp.t = 'z';\r\n\t\t\t\t\t} else p.v = parseFloat(p.v);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 's':\r\n\t\t\t\t\tif(typeof p.v == 'undefined') {\r\n\t\t\t\t\t\tif(!sheetStubs) continue;\r\n\t\t\t\t\t\tp.t = 'z';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\r\n\t\t\t\t\t\tp.v = sstr.t;\r\n\t\t\t\t\t\tp.r = sstr.r;\r\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'str':\r\n\t\t\t\t\tp.t = \"s\";\r\n\t\t\t\t\tp.v = (p.v!=null) ? unescapexml(utf8read(p.v), true) : '';\r\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'inlineStr':\r\n\t\t\t\t\tcref = d.match(isregex);\r\n\t\t\t\t\tp.t = 's';\r\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\r\n\t\t\t\t\t\tp.v = sstr.t;\r\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\r\n\t\t\t\t\t} else p.v = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\r\n\t\t\t\tcase 'd':\r\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\r\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t/* error string in .w, number in .v */\r\n\t\t\t\tcase 'e':\r\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\r\n\t\t\t\t\tp.v = RBErr[p.v]; break;\r\n\t\t\t}\r\n\t\t\t/* formatting */\r\n\t\t\tfmtid = fillid = 0;\r\n\t\t\tcf = null;\r\n\t\t\tif(do_format && tag.s !== undefined) {\r\n\t\t\t\tcf = styles.CellXf[tag.s];\r\n\t\t\t\tif(cf != null) {\r\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\r\n\t\t\t\t\tif(opts.cellStyles) {\r\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\r\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\r\n\t\t\tif(tag.cm && opts.xlmeta) {\r\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\r\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\r\n\t\t\t}\r\n\t\t\tif(dense) {\r\n\t\t\t\tvar _r = decode_cell(tag.r);\r\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\r\n\t\t\t\ts[_r.r][_r.c] = p;\r\n\t\t\t} else s[tag.r] = p;\r\n\t\t}\r\n\t}\r\n\tif(rows.length > 0) s['!rows'] = rows;\r\n}; })();\r\n\r\nfunction write_ws_xml_data(ws, opts, idx, wb) {\r\n\tvar o = [], r = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols = [], R=0, C=0, rows = ws['!rows'];\r\n\tvar dense = Array.isArray(ws);\r\n\tvar params = ({r:rr}), row, height = -1;\r\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\r\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\r\n\t\tr = [];\r\n\t\trr = encode_row(R);\r\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\r\n\t\t\tref = cols[C] + rr;\r\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\r\n\t\t\tif(_cell === undefined) continue;\r\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\r\n\t\t}\r\n\t\tif(r.length > 0 || (rows && rows[R])) {\r\n\t\t\tparams = ({r:rr});\r\n\t\t\tif(rows && rows[R]) {\r\n\t\t\t\trow = rows[R];\r\n\t\t\t\tif(row.hidden) params.hidden = 1;\r\n\t\t\t\theight = -1;\r\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\r\n\t\t\t\telse if(row.hpt) height = row.hpt;\r\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\r\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\r\n\t\t\t}\r\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\r\n\t\t}\r\n\t}\r\n\tif(rows) for(; R < rows.length; ++R) {\r\n\t\tif(rows && rows[R]) {\r\n\t\t\tparams = ({r:R+1});\r\n\t\t\trow = rows[R];\r\n\t\t\tif(row.hidden) params.hidden = 1;\r\n\t\t\theight = -1;\r\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\r\n\t\t\telse if (row.hpt) height = row.hpt;\r\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\r\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\r\n\t\t\to[o.length] = (writextag('row', \"\", params));\r\n\t\t}\r\n\t}\r\n\treturn o.join(\"\");\r\n}\r\n\r\nfunction write_ws_xml(idx, opts, wb, rels) {\r\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\r\n\t\t'xmlns': XMLNS_main[0],\r\n\t\t'xmlns:r': XMLNS.r\r\n\t})];\r\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\r\n\tvar ws = wb.Sheets[s];\r\n\tif(ws == null) ws = {};\r\n\tvar ref = ws['!ref'] || 'A1';\r\n\tvar range = safe_decode_range(ref);\r\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\r\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\r\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\r\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\r\n\t\tref = encode_range(range);\r\n\t}\r\n\tif(!rels) rels = {};\r\n\tws['!comments'] = [];\r\n\tvar _drawing = [];\r\n\r\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\r\n\r\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\r\n\r\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\r\n\r\n\t/* TODO: store in WB, process styles */\r\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\r\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\r\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\r\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\r\n\t}));\r\n\r\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\r\n\r\n\to[sidx = o.length] = '';\r\n\tws['!links'] = [];\r\n\tif(ws['!ref'] != null) {\r\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\r\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\r\n\t}\r\n\tif(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\r\n\r\n\t/* sheetCalcPr */\r\n\r\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\r\n\r\n\t/* protectedRanges */\r\n\t/* scenarios */\r\n\r\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\r\n\r\n\t/* sortState */\r\n\t/* dataConsolidate */\r\n\t/* customSheetViews */\r\n\r\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\r\n\r\n\t/* phoneticPr */\r\n\t/* conditionalFormatting */\r\n\t/* dataValidations */\r\n\r\n\tvar relc = -1, rel, rId = -1;\r\n\tif(ws['!links'].length > 0) {\r\n\t\to[o.length] = \"\";\r\nws['!links'].forEach(function(l) {\r\n\t\t\tif(!l[1].Target) return;\r\n\t\t\trel = ({\"ref\":l[0]});\r\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\r\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\r\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\r\n\t\t\t}\r\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\r\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\r\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\r\n\t\t});\r\n\t\to[o.length] = \"\";\r\n\t}\r\n\tdelete ws['!links'];\r\n\r\n\t/* printOptions */\r\n\r\n\tif(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);\r\n\r\n\t/* pageSetup */\r\n\t/* headerFooter */\r\n\t/* rowBreaks */\r\n\t/* colBreaks */\r\n\t/* customProperties */\r\n\t/* cellWatches */\r\n\r\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\r\n\r\n\t/* smartTags */\r\n\r\n\tif(_drawing.length > 0) {\r\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\r\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\r\n\t\tws['!drawing'] = _drawing;\r\n\t}\r\n\r\n\tif(ws['!comments'].length > 0) {\r\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\r\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\r\n\t\tws['!legacy'] = rId;\r\n\t}\r\n\r\n\t/* legacyDrawingHF */\r\n\t/* picture */\r\n\t/* oleObjects */\r\n\t/* controls */\r\n\t/* webPublishItems */\r\n\t/* tableParts */\r\n\t/* extLst */\r\n\r\n\t/** 2022-08-15 导出图片 */\r\n\tvar images = ws['!images'] || [];\r\n\tif (images.length) o[o.length] = '';\r\n\r\n\tif(o.length>1) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\r\n\treturn o.join(\"\");\r\n}\r\n\r\n/** 2022-08-15 导出图片 */\r\nfunction write_ws_xml_view_pane(pane) {\r\n\tvar p = {\r\n\t\tstate: pane.state === 'split' || pane.state === 'frozen' || pane.state === 'frozenSplit' ? pane.state : 'split',\r\n\t\txSplit: pane.xSplit || 0,\r\n\t\tySplit: pane.ySplit || 0\r\n\t};\r\n\r\n\t// If frozen pane, defaults to the cell in first unfrozen column and first unfrozen row\r\n\tif (p.state !== 'split') {\r\n\t\tp.topLeftCell = pane.topLeftCell || encode_cell({ c: p.xSplit, r: p.ySplit });\r\n\t}\r\n\telse if (pane.topLeftCell !== undefined) {\r\n\t\tp.topLeftCell = pane.topLeftCell;\r\n\t}\r\n\r\n\tif (pane.activePane !== undefined) p.activePane = pane.activePane;\r\n\r\n\treturn writextag('pane', null, p);\r\n}\r\n\r\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\r\nfunction parse_BrtRowHdr(data, length) {\r\n\tvar z = ({});\r\n\tvar tgt = data.l + length;\r\n\tz.r = data.read_shift(4);\r\n\tdata.l += 4; // TODO: ixfe\r\n\tvar miyRw = data.read_shift(2);\r\n\tdata.l += 1; // TODO: top/bot padding\r\n\tvar flags = data.read_shift(1);\r\n\tdata.l = tgt;\r\n\tif(flags & 0x07) z.level = flags & 0x07;\r\n\tif(flags & 0x10) z.hidden = true;\r\n\tif(flags & 0x20) z.hpt = miyRw / 20;\r\n\treturn z;\r\n}\r\nfunction write_BrtRowHdr(R, range, ws) {\r\n\tvar o = new_buf(17+8*16);\r\n\tvar row = (ws['!rows']||[])[R]||{};\r\n\to.write_shift(4, R);\r\n\r\n\to.write_shift(4, 0); /* TODO: ixfe */\r\n\r\n\tvar miyRw = 0x0140;\r\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\r\n\telse if(row.hpt) miyRw = row.hpt * 20;\r\n\to.write_shift(2, miyRw);\r\n\r\n\to.write_shift(1, 0); /* top/bot padding */\r\n\r\n\tvar flags = 0x0;\r\n\tif(row.level) flags |= row.level;\r\n\tif(row.hidden) flags |= 0x10;\r\n\tif(row.hpx || row.hpt) flags |= 0x20;\r\n\to.write_shift(1, flags);\r\n\r\n\to.write_shift(1, 0); /* phonetic guide */\r\n\r\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\r\n\tvar ncolspan = 0, lcs = o.l;\r\n\to.l += 4;\r\n\r\n\tvar caddr = {r:R, c:0};\r\n\tfor(var i = 0; i < 16; ++i) {\r\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\r\n\t\tvar first = -1, last = -1;\r\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\r\n\t\t\tcaddr.c = j;\r\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\r\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\r\n\t\t}\r\n\t\tif(first < 0) continue;\r\n\t\t++ncolspan;\r\n\t\to.write_shift(4, first);\r\n\t\to.write_shift(4, last);\r\n\t}\r\n\r\n\tvar l = o.l;\r\n\to.l = lcs;\r\n\to.write_shift(4, ncolspan);\r\n\to.l = l;\r\n\r\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\r\n}\r\nfunction write_row_header(ba, ws, range, R) {\r\n\tvar o = write_BrtRowHdr(R, range, ws);\r\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\r\n}\r\n\r\n/* [MS-XLSB] 2.4.820 BrtWsDim */\r\nvar parse_BrtWsDim = parse_UncheckedRfX;\r\nvar write_BrtWsDim = write_UncheckedRfX;\r\n\r\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\r\nfunction parse_BrtWsFmtInfo() {\r\n}\r\n//function write_BrtWsFmtInfo(ws, o) { }\r\n\r\n/* [MS-XLSB] 2.4.823 BrtWsProp */\r\nfunction parse_BrtWsProp(data, length) {\r\n\tvar z = {};\r\n\tvar f = data[data.l]; ++data.l;\r\n\tz.above = !(f & 0x40);\r\n\tz.left = !(f & 0x80);\r\n\t/* TODO: pull flags */\r\n\tdata.l += 18;\r\n\tz.name = parse_XLSBCodeName(data, length - 19);\r\n\treturn z;\r\n}\r\nfunction write_BrtWsProp(str, outl, o) {\r\n\tif(o == null) o = new_buf(84+4*str.length);\r\n\tvar f = 0xC0;\r\n\tif(outl) {\r\n\t\tif(outl.above) f &= ~0x40;\r\n\t\tif(outl.left) f &= ~0x80;\r\n\t}\r\n\to.write_shift(1, f);\r\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\r\n\twrite_BrtColor({auto:1}, o);\r\n\to.write_shift(-4,-1);\r\n\to.write_shift(-4,-1);\r\n\twrite_XLSBCodeName(str, o);\r\n\treturn o.slice(0, o.l);\r\n}\r\n\r\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\r\nfunction parse_BrtCellBlank(data) {\r\n\tvar cell = parse_XLSBCell(data);\r\n\treturn [cell];\r\n}\r\nfunction write_BrtCellBlank(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(8);\r\n\treturn write_XLSBCell(ncell, o);\r\n}\r\nfunction parse_BrtShortBlank(data) {\r\n\tvar cell = parse_XLSBShortCell(data);\r\n\treturn [cell];\r\n}\r\nfunction write_BrtShortBlank(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(4);\r\n\treturn write_XLSBShortCell(ncell, o);\r\n}\r\n\r\n/* [MS-XLSB] 2.4.307 BrtCellBool */\r\nfunction parse_BrtCellBool(data) {\r\n\tvar cell = parse_XLSBCell(data);\r\n\tvar fBool = data.read_shift(1);\r\n\treturn [cell, fBool, 'b'];\r\n}\r\nfunction write_BrtCellBool(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(9);\r\n\twrite_XLSBCell(ncell, o);\r\n\to.write_shift(1, cell.v ? 1 : 0);\r\n\treturn o;\r\n}\r\nfunction parse_BrtShortBool(data) {\r\n\tvar cell = parse_XLSBShortCell(data);\r\n\tvar fBool = data.read_shift(1);\r\n\treturn [cell, fBool, 'b'];\r\n}\r\nfunction write_BrtShortBool(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(5);\r\n\twrite_XLSBShortCell(ncell, o);\r\n\to.write_shift(1, cell.v ? 1 : 0);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.308 BrtCellError */\r\nfunction parse_BrtCellError(data) {\r\n\tvar cell = parse_XLSBCell(data);\r\n\tvar bError = data.read_shift(1);\r\n\treturn [cell, bError, 'e'];\r\n}\r\nfunction write_BrtCellError(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(9);\r\n\twrite_XLSBCell(ncell, o);\r\n\to.write_shift(1, cell.v);\r\n\treturn o;\r\n}\r\nfunction parse_BrtShortError(data) {\r\n\tvar cell = parse_XLSBShortCell(data);\r\n\tvar bError = data.read_shift(1);\r\n\treturn [cell, bError, 'e'];\r\n}\r\nfunction write_BrtShortError(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(8);\r\n\twrite_XLSBShortCell(ncell, o);\r\n\to.write_shift(1, cell.v);\r\n\to.write_shift(2, 0);\r\n\to.write_shift(1, 0);\r\n\treturn o;\r\n}\r\n\r\n\r\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\r\nfunction parse_BrtCellIsst(data) {\r\n\tvar cell = parse_XLSBCell(data);\r\n\tvar isst = data.read_shift(4);\r\n\treturn [cell, isst, 's'];\r\n}\r\nfunction write_BrtCellIsst(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(12);\r\n\twrite_XLSBCell(ncell, o);\r\n\to.write_shift(4, ncell.v);\r\n\treturn o;\r\n}\r\nfunction parse_BrtShortIsst(data) {\r\n\tvar cell = parse_XLSBShortCell(data);\r\n\tvar isst = data.read_shift(4);\r\n\treturn [cell, isst, 's'];\r\n}\r\nfunction write_BrtShortIsst(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(8);\r\n\twrite_XLSBShortCell(ncell, o);\r\n\to.write_shift(4, ncell.v);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.313 BrtCellReal */\r\nfunction parse_BrtCellReal(data) {\r\n\tvar cell = parse_XLSBCell(data);\r\n\tvar value = parse_Xnum(data);\r\n\treturn [cell, value, 'n'];\r\n}\r\nfunction write_BrtCellReal(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(16);\r\n\twrite_XLSBCell(ncell, o);\r\n\twrite_Xnum(cell.v, o);\r\n\treturn o;\r\n}\r\nfunction parse_BrtShortReal(data) {\r\n\tvar cell = parse_XLSBShortCell(data);\r\n\tvar value = parse_Xnum(data);\r\n\treturn [cell, value, 'n'];\r\n}\r\nfunction write_BrtShortReal(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(12);\r\n\twrite_XLSBShortCell(ncell, o);\r\n\twrite_Xnum(cell.v, o);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.314 BrtCellRk */\r\nfunction parse_BrtCellRk(data) {\r\n\tvar cell = parse_XLSBCell(data);\r\n\tvar value = parse_RkNumber(data);\r\n\treturn [cell, value, 'n'];\r\n}\r\nfunction write_BrtCellRk(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(12);\r\n\twrite_XLSBCell(ncell, o);\r\n\twrite_RkNumber(cell.v, o);\r\n\treturn o;\r\n}\r\nfunction parse_BrtShortRk(data) {\r\n\tvar cell = parse_XLSBShortCell(data);\r\n\tvar value = parse_RkNumber(data);\r\n\treturn [cell, value, 'n'];\r\n}\r\nfunction write_BrtShortRk(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(8);\r\n\twrite_XLSBShortCell(ncell, o);\r\n\twrite_RkNumber(cell.v, o);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.323 BrtCellRString */\r\nfunction parse_BrtCellRString(data) {\r\n\tvar cell = parse_XLSBCell(data);\r\n\tvar value = parse_RichStr(data);\r\n\treturn [cell, value, 'is'];\r\n}\r\n\r\n/* [MS-XLSB] 2.4.317 BrtCellSt */\r\nfunction parse_BrtCellSt(data) {\r\n\tvar cell = parse_XLSBCell(data);\r\n\tvar value = parse_XLWideString(data);\r\n\treturn [cell, value, 'str'];\r\n}\r\nfunction write_BrtCellSt(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\r\n\twrite_XLSBCell(ncell, o);\r\n\twrite_XLWideString(cell.v, o);\r\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\r\n}\r\nfunction parse_BrtShortSt(data) {\r\n\tvar cell = parse_XLSBShortCell(data);\r\n\tvar value = parse_XLWideString(data);\r\n\treturn [cell, value, 'str'];\r\n}\r\nfunction write_BrtShortSt(cell, ncell, o) {\r\n\tif(o == null) o = new_buf(8 + 4 * cell.v.length);\r\n\twrite_XLSBShortCell(ncell, o);\r\n\twrite_XLWideString(cell.v, o);\r\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\r\nfunction parse_BrtFmlaBool(data, length, opts) {\r\n\tvar end = data.l + length;\r\n\tvar cell = parse_XLSBCell(data);\r\n\tcell.r = opts['!row'];\r\n\tvar value = data.read_shift(1);\r\n\tvar o = [cell, value, 'b'];\r\n\tif(opts.cellFormula) {\r\n\t\tdata.l += 2;\r\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\r\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\r\n\t}\r\n\telse data.l = end;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\r\nfunction parse_BrtFmlaError(data, length, opts) {\r\n\tvar end = data.l + length;\r\n\tvar cell = parse_XLSBCell(data);\r\n\tcell.r = opts['!row'];\r\n\tvar value = data.read_shift(1);\r\n\tvar o = [cell, value, 'e'];\r\n\tif(opts.cellFormula) {\r\n\t\tdata.l += 2;\r\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\r\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\r\n\t}\r\n\telse data.l = end;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\r\nfunction parse_BrtFmlaNum(data, length, opts) {\r\n\tvar end = data.l + length;\r\n\tvar cell = parse_XLSBCell(data);\r\n\tcell.r = opts['!row'];\r\n\tvar value = parse_Xnum(data);\r\n\tvar o = [cell, value, 'n'];\r\n\tif(opts.cellFormula) {\r\n\t\tdata.l += 2;\r\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\r\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\r\n\t}\r\n\telse data.l = end;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\r\nfunction parse_BrtFmlaString(data, length, opts) {\r\n\tvar end = data.l + length;\r\n\tvar cell = parse_XLSBCell(data);\r\n\tcell.r = opts['!row'];\r\n\tvar value = parse_XLWideString(data);\r\n\tvar o = [cell, value, 'str'];\r\n\tif(opts.cellFormula) {\r\n\t\tdata.l += 2;\r\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\r\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\r\n\t}\r\n\telse data.l = end;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\r\nvar parse_BrtMergeCell = parse_UncheckedRfX;\r\nvar write_BrtMergeCell = write_UncheckedRfX;\r\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\r\nfunction write_BrtBeginMergeCells(cnt, o) {\r\n\tif(o == null) o = new_buf(4);\r\n\to.write_shift(4, cnt);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.662 BrtHLink */\r\nfunction parse_BrtHLink(data, length) {\r\n\tvar end = data.l + length;\r\n\tvar rfx = parse_UncheckedRfX(data, 16);\r\n\tvar relId = parse_XLNullableWideString(data);\r\n\tvar loc = parse_XLWideString(data);\r\n\tvar tooltip = parse_XLWideString(data);\r\n\tvar display = parse_XLWideString(data);\r\n\tdata.l = end;\r\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display});\r\n\tif(tooltip) o.Tooltip = tooltip;\r\n\treturn o;\r\n}\r\nfunction write_BrtHLink(l, rId) {\r\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\r\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\r\n\twrite_RelID(\"rId\" + rId, o);\r\n\tvar locidx = l[1].Target.indexOf(\"#\");\r\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\r\n\twrite_XLWideString(loc || \"\", o);\r\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\r\n\twrite_XLWideString(\"\", o);\r\n\treturn o.slice(0, o.l);\r\n}\r\n\r\n/* [MS-XLSB] 2.4.692 BrtPane */\r\nfunction parse_BrtPane(/*data, length, opts*/) {\r\n}\r\n\r\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\r\nfunction parse_BrtArrFmla(data, length, opts) {\r\n\tvar end = data.l + length;\r\n\tvar rfx = parse_RfX(data, 16);\r\n\tvar fAlwaysCalc = data.read_shift(1);\r\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\r\n\tif(opts.cellFormula) {\r\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\r\n\t\to[1] = formula;\r\n\t} else data.l = end;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\r\nfunction parse_BrtShrFmla(data, length, opts) {\r\n\tvar end = data.l + length;\r\n\tvar rfx = parse_UncheckedRfX(data, 16);\r\n\tvar o = [rfx];\r\n\tif(opts.cellFormula) {\r\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\r\n\t\to[1] = formula;\r\n\t\tdata.l = end;\r\n\t} else data.l = end;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.323 BrtColInfo */\r\n/* TODO: once XLS ColInfo is set, combine the functions */\r\nfunction write_BrtColInfo(C, col, o) {\r\n\tif(o == null) o = new_buf(18);\r\n\tvar p = col_obj_w(C, col);\r\n\to.write_shift(-4, C);\r\n\to.write_shift(-4, C);\r\n\to.write_shift(4, (p.width || 10) * 256);\r\n\to.write_shift(4, 0/*ixfe*/); // style\r\n\tvar flags = 0;\r\n\tif(col.hidden) flags |= 0x01;\r\n\tif(typeof p.width == 'number') flags |= 0x02;\r\n\tif(col.level) flags |= (col.level << 8);\r\n\to.write_shift(2, flags); // bit flag\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.678 BrtMargins */\r\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\r\nfunction parse_BrtMargins(data) {\r\n\tvar margins = ({});\r\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\r\n\treturn margins;\r\n}\r\nfunction write_BrtMargins(margins, o) {\r\n\tif(o == null) o = new_buf(6*8);\r\n\tdefault_margins(margins);\r\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins)[k], o); });\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\r\nfunction parse_BrtBeginWsView(data) {\r\n\tvar f = data.read_shift(2);\r\n\tdata.l += 28;\r\n\treturn { RTL: f & 0x20 };\r\n}\r\nfunction write_BrtBeginWsView(ws, Workbook, o) {\r\n\tif(o == null) o = new_buf(30);\r\n\tvar f = 0x39c;\r\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\r\n\to.write_shift(2, f); // bit flag\r\n\to.write_shift(4, 0);\r\n\to.write_shift(4, 0); // view first row\r\n\to.write_shift(4, 0); // view first col\r\n\to.write_shift(1, 0); // gridline color ICV\r\n\to.write_shift(1, 0);\r\n\to.write_shift(2, 0);\r\n\to.write_shift(2, 100); // zoom scale\r\n\to.write_shift(2, 0);\r\n\to.write_shift(2, 0);\r\n\to.write_shift(2, 0);\r\n\to.write_shift(4, 0); // workbook view id\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\r\nfunction write_BrtCellIgnoreEC(ref) {\r\n\tvar o = new_buf(24);\r\n\to.write_shift(4, 4);\r\n\to.write_shift(4, 1);\r\n\twrite_UncheckedRfX(ref, o);\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\r\nfunction write_BrtSheetProtection(sp, o) {\r\n\tif(o == null) o = new_buf(16*4+2);\r\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\r\n\to.write_shift(4, 1); // this record should not be written if no protection\r\n\t[\r\n\t\t[\"objects\", false], // fObjects\r\n\t\t[\"scenarios\", false], // fScenarios\r\n\t\t[\"formatCells\", true], // fFormatCells\r\n\t\t[\"formatColumns\", true], // fFormatColumns\r\n\t\t[\"formatRows\", true], // fFormatRows\r\n\t\t[\"insertColumns\", true], // fInsertColumns\r\n\t\t[\"insertRows\", true], // fInsertRows\r\n\t\t[\"insertHyperlinks\", true], // fInsertHyperlinks\r\n\t\t[\"deleteColumns\", true], // fDeleteColumns\r\n\t\t[\"deleteRows\", true], // fDeleteRows\r\n\t\t[\"selectLockedCells\", false], // fSelLockedCells\r\n\t\t[\"sort\", true], // fSort\r\n\t\t[\"autoFilter\", true], // fAutoFilter\r\n\t\t[\"pivotTables\", true], // fPivotTables\r\n\t\t[\"selectUnlockedCells\", false] // fSelUnlockedCells\r\n\t].forEach(function(n) {\r\nif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\r\n\t\telse o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\r\n\t});\r\n\treturn o;\r\n}\r\n\r\nfunction parse_BrtDVal(/*data, length, opts*/) {\r\n}\r\nfunction parse_BrtDVal14(/*data, length, opts*/) {\r\n}\r\n/* [MS-XLSB] 2.1.7.61 Worksheet */\r\nfunction parse_ws_bin(data, _opts, idx, rels, wb, themes, styles) {\r\n\tif(!data) return data;\r\n\tvar opts = _opts || {};\r\n\tif(!rels) rels = {'!id':{}};\r\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\r\n\tvar s = (opts.dense ? [] : {});\r\n\r\n\tvar ref;\r\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\r\n\r\n\tvar state = [];\r\n\tvar pass = false, end = false;\r\n\tvar row, p, cf, R, C, addr, sstr, rr, cell;\r\n\tvar merges = [];\r\n\topts.biff = 12;\r\n\topts['!row'] = 0;\r\n\r\n\tvar ai = 0, af = false;\r\n\r\n\tvar arrayf = [];\r\n\tvar sharedf = {};\r\n\tvar supbooks = opts.supbooks || wb.supbooks || ([[]]);\r\n\tsupbooks.sharedf = sharedf;\r\n\tsupbooks.arrayf = arrayf;\r\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\r\n\tif(!opts.supbooks) {\r\n\t\topts.supbooks = supbooks;\r\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\r\n\t}\r\n\r\n\tvar colinfo = [], rowinfo = [];\r\n\tvar seencol = false;\r\n\r\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\r\n\r\n\tvar cm, vm;\r\n\r\n\trecordhopper(data, function ws_parse(val, RR, RT) {\r\n\t\tif(end) return;\r\n\t\tswitch(RT) {\r\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\r\n\t\t\t\tref = val; break;\r\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\r\n\t\t\t\trow = val;\r\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\r\n\t\t\t\trr = encode_row(R = row.r);\r\n\t\t\t\topts['!row'] = row.r;\r\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\r\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\r\n\t\t\t\t\trowinfo[val.r] = val;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\r\n\t\t\tcase 0x0003: /* 'BrtCellError' */\r\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\r\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\r\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\r\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\r\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\r\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\r\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\r\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\r\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\r\n\t\t\tcase 0x000E: /* 'BrtShortError' */\r\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\r\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\r\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\r\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\r\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\r\n\t\t\t\tp = ({t:val[2]});\r\n\t\t\t\tswitch(val[2]) {\r\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\r\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\r\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\r\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\r\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\r\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\r\n\t\t\t\t}\r\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\r\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\r\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\r\n\t\t\t\telse s[encode_col(C) + rr] = p;\r\n\t\t\t\tif(opts.cellFormula) {\r\n\t\t\t\t\taf = false;\r\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\r\n\t\t\t\t\t\tvar aii = arrayf[ai];\r\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\r\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\r\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\r\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\r\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\r\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\r\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\r\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\r\n\t\t\t\t}\r\n\t\t\t\tif(cm) {\r\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\r\n\t\t\t\t\tcm = void 0;\r\n\t\t\t\t}\r\n\t\t\t\tif(vm) vm = void 0;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\r\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\r\n\t\t\t\tif(!opts.sheetStubs || pass) break;\r\n\t\t\t\tp = ({t:'z',v:void 0});\r\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\r\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\r\n\t\t\t\telse s[encode_col(C) + rr] = p;\r\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\r\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\r\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\r\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\r\n\t\t\t\tif(cm) {\r\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\r\n\t\t\t\t\tcm = void 0;\r\n\t\t\t\t}\r\n\t\t\t\tif(vm) vm = void 0;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\r\n\t\t\t\tmerges.push(val); break;\r\n\r\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\r\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\r\n\t\t\t} break;\r\n\r\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\r\n\t\t\t\tvar rel = rels['!id'][val.relId];\r\n\t\t\t\tif(rel) {\r\n\t\t\t\t\tval.Target = rel.Target;\r\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\r\n\t\t\t\t\tval.Rel = rel;\r\n\t\t\t\t} else if(val.relId == '') {\r\n\t\t\t\t\tval.Target = \"#\" + val.loc;\r\n\t\t\t\t}\r\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\r\n\t\t\t\t\tif(opts.dense) {\r\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\r\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\r\n\t\t\t\t\t\ts[R][C].l = val;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\r\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\r\n\t\t\t\t\t\ts[addr].l = val;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\r\n\t\t\t\tif(!opts.cellFormula) break;\r\n\t\t\t\tarrayf.push(val);\r\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr]));\r\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\r\n\t\t\t\tcell.F = encode_range(val[0]);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\r\n\t\t\t\tif(!opts.cellFormula) break;\r\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\r\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\r\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t/* identical to 'ColInfo' in XLS */\r\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\r\n\t\t\t\tif(!opts.cellStyles) break;\r\n\t\t\t\twhile(val.e >= val.s) {\r\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\r\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\r\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\r\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\r\n\t\t\t\ts['!margins'] = val;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\r\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\r\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\r\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\r\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\r\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\r\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0040: /* 'BrtDVal' */\r\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0097: /* 'BrtPane' */\r\n\t\t\t\tbreak;\r\n\t\t\tcase 0x0098: /* 'BrtSel' */\r\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\r\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\r\n\t\t\tcase 0x0271: /* 'BrtBigName' */\r\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\r\n\t\t\tcase 0x018C: /* 'BrtBrk' */\r\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\r\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\r\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\r\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\r\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\r\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\r\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\r\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\r\n\t\t\tcase 0x0234: /* 'BrtColor' */\r\n\t\t\tcase 0x041F: /* 'BrtColor14' */\r\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\r\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\r\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\r\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\r\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\r\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\r\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\r\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\r\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\r\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\r\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\r\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\r\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\r\n\t\t\tcase 0x0295: /* 'BrtListPart' */\r\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\r\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\r\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\r\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\r\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\r\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\r\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\r\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\r\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\r\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\r\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\r\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\r\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\r\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\r\n\t\t\tcase 0x01AC: /* 'BrtTable' */\r\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\r\n\t\t\tcase 0x0C00: /* 'BrtUid' */\r\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\r\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\r\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\r\n\t\t\t\tpass = true; break;\r\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\r\n\t\t\t\tpass = false; break;\r\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\r\n\t\t\t\tstate.push(RT); pass = true; break;\r\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\r\n\t\t\t\tstate.pop(); pass = false; break;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tif(RR.T){/* empty */}\r\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\r\n\t\t}\r\n\t}, opts);\r\n\r\n\tdelete opts.supbooks;\r\n\tdelete opts['!row'];\r\n\r\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\r\n\tif(opts.sheetRows && s[\"!ref\"]) {\r\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\r\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\r\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\r\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\r\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\r\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\r\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\r\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\r\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\r\n\t\t}\r\n\t}\r\n\tif(merges.length > 0) s[\"!merges\"] = merges;\r\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\r\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\r\n\treturn s;\r\n}\r\n\r\n/* TODO: something useful -- this is a stub */\r\nfunction write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen) {\r\n\tvar o = ({r:R, c:C});\r\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\r\n\tif(cell.v === undefined) return false;\r\n\tvar vv = \"\";\r\n\tswitch(cell.t) {\r\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\r\n\t\tcase 'd': // no BrtCellDate :(\r\n\t\t\tcell = dup(cell);\r\n\t\t\tcell.z = cell.z || table_fmt[14];\r\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\r\n\t\t\tbreak;\r\n\t\t/* falls through */\r\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\r\n\t\tdefault: vv = cell.v; break;\r\n\t}\r\n\t/* TODO: cell style */\r\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\r\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\r\n\tswitch(cell.t) {\r\n\t\tcase 's': case 'str':\r\n\t\t\tif(opts.bookSST) {\r\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v), opts.revStrings);\r\n\t\t\t\to.t = \"s\"; o.v = vv;\r\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\r\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\r\n\t\t\t} else {\r\n\t\t\t\to.t = \"str\";\r\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\r\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\tcase 'n':\r\n\t\t\t/* TODO: determine threshold for Real vs RK */\r\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\r\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\r\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\r\n\t\t\t} else {\r\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\r\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\r\n\t\t\t} return true;\r\n\t\tcase 'b':\r\n\t\t\to.t = \"b\";\r\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\r\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\r\n\t\t\treturn true;\r\n\t\tcase 'e':\r\n\t\t\to.t = \"e\";\r\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\r\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\r\n\t\t\treturn true;\r\n\t}\r\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\r\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\r\n\treturn true;\r\n}\r\n\r\nfunction write_CELLTABLE(ba, ws, idx, opts) {\r\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols = [];\r\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\r\n\tvar dense = Array.isArray(ws);\r\n\tvar cap = range.e.r;\r\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\r\n\tfor(var R = range.s.r; R <= cap; ++R) {\r\n\t\trr = encode_row(R);\r\n\t\t/* [ACCELLTABLE] */\r\n\t\t/* BrtRowHdr */\r\n\t\twrite_row_header(ba, ws, range, R);\r\n\t\tvar last_seen = false;\r\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\r\n\t\t\t/* *16384CELL */\r\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\r\n\t\t\tref = cols[C] + rr;\r\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\r\n\t\t\tif(!cell) { last_seen = false; continue; }\r\n\t\t\t/* write cell */\r\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\r\n\t\t}\r\n\t}\r\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\r\n}\r\n\r\nfunction write_MERGECELLS(ba, ws) {\r\n\tif(!ws || !ws['!merges']) return;\r\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\r\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\r\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\r\n}\r\n\r\nfunction write_COLINFOS(ba, ws) {\r\n\tif(!ws || !ws['!cols']) return;\r\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\r\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\r\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\r\n}\r\n\r\nfunction write_IGNOREECS(ba, ws) {\r\n\tif(!ws || !ws['!ref']) return;\r\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\r\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\r\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\r\n}\r\n\r\nfunction write_HLINKS(ba, ws, rels) {\r\n\t/* *BrtHLink */\r\n\tws['!links'].forEach(function(l) {\r\n\t\tif(!l[1].Target) return;\r\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\r\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\r\n\t});\r\n\tdelete ws['!links'];\r\n}\r\nfunction write_LEGACYDRAWING(ba, ws, idx, rels) {\r\n\t/* [BrtLegacyDrawing] */\r\n\tif(ws['!comments'].length > 0) {\r\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\r\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\r\n\t\tws['!legacy'] = rId;\r\n\t}\r\n}\r\n\r\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\r\n\tif(!ws['!autofilter']) return;\r\n\tvar data = ws['!autofilter'];\r\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\r\n\r\n\t/* Update FilterDatabase defined name for the worksheet */\r\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]});\r\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\r\n\tvar names = wb.Workbook.Names;\r\n\tvar range = decode_range(ref);\r\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\r\n\tfor(var i = 0; i < names.length; ++i) {\r\n\t\tvar name = names[i];\r\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\r\n\t\tif(name.Sheet != idx) continue;\r\n\t\tname.Ref = formula_quote_sheet_name(wb.SheetNames[idx]) + \"!\" + fix_range(ref); break;\r\n\t}\r\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: formula_quote_sheet_name(wb.SheetNames[idx]) + \"!\" + fix_range(ref) });\r\n\r\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\r\n\t/* *FILTERCOLUMN */\r\n\t/* [SORTSTATE] */\r\n\t/* BrtEndAFilter */\r\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\r\n}\r\n\r\nfunction write_WSVIEWS2(ba, ws, Workbook) {\r\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\r\n\t{ /* 1*WSVIEW2 */\r\n\t\t/* [ACUID] */\r\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\r\n\t\t/* [BrtPane] */\r\n\t\t/* *4BrtSel */\r\n\t\t/* *4SXSELECT */\r\n\t\t/* *FRT */\r\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\r\n\t}\r\n\t/* *FRT */\r\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\r\n}\r\n\r\nfunction write_WSFMTINFO() {\r\n\t/* [ACWSFMTINFO] */\r\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\r\n}\r\n\r\nfunction write_SHEETPROTECT(ba, ws) {\r\n\tif(!ws['!protect']) return;\r\n\t/* [BrtSheetProtectionIso] */\r\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\r\n}\r\n\r\nfunction write_ws_bin(idx, opts, wb, rels) {\r\n\tvar ba = buf_array();\r\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\r\n\tvar c = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\r\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\r\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\r\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\r\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\r\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\r\n\t}\r\n\tws['!links'] = [];\r\n\t/* passed back to write_zip and removed there */\r\n\tws['!comments'] = [];\r\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\r\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\r\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\r\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\r\n\twrite_WSFMTINFO(ba, ws);\r\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\r\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\r\n\t/* [BrtSheetCalcProp] */\r\n\twrite_SHEETPROTECT(ba, ws);\r\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\r\n\t/* [SCENMAN] */\r\n\twrite_AUTOFILTER(ba, ws, wb, idx);\r\n\t/* [SORTSTATE] */\r\n\t/* [DCON] */\r\n\t/* [USERSHVIEWS] */\r\n\twrite_MERGECELLS(ba, ws);\r\n\t/* [BrtPhoneticInfo] */\r\n\t/* *CONDITIONALFORMATTING */\r\n\t/* [DVALS] */\r\n\twrite_HLINKS(ba, ws, rels);\r\n\t/* [BrtPrintOptions] */\r\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\r\n\t/* [BrtPageSetup] */\r\n\t/* [HEADERFOOTER] */\r\n\t/* [RWBRK] */\r\n\t/* [COLBRK] */\r\n\t/* *BrtBigName */\r\n\t/* [CELLWATCHES] */\r\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\r\n\t/* [SMARTTAGS] */\r\n\t/* [BrtDrawing] */\r\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\r\n\t/* [BrtLegacyDrawingHF] */\r\n\t/* [BrtBkHim] */\r\n\t/* [OLEOBJECTS] */\r\n\t/* [ACTIVEXCONTROLS] */\r\n\t/* [WEBPUBITEMS] */\r\n\t/* [LISTPARTS] */\r\n\t/* FRTWORKSHEET */\r\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\r\n\treturn ba.end();\r\n}\r\nfunction parse_Cache(data) {\r\n\tvar col = [];\r\n\tvar num = data.match(/^/);\r\n\tvar f;\r\n\r\n\t/* 21.2.2.150 pt CT_NumVal */\r\n\t(data.match(/(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\r\n\t\tvar q = pt.match(/(.*)<\\/c:v><\\/c:pt>/);\r\n\t\tif(!q) return;\r\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\r\n\t});\r\n\r\n\t/* 21.2.2.71 formatCode CT_Xstring */\r\n\tvar nf = unescapexml((data.match(/([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\r\n\r\n\t(data.match(/(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\r\n\r\n\treturn [col, nf, f];\r\n}\r\n\r\n/* 21.2 DrawingML - Charts */\r\nfunction parse_chart(data, name, opts, rels, wb, csheet) {\r\n\tvar cs = ((csheet || {\"!type\":\"chart\"}));\r\n\tif(!data) return csheet;\r\n\t/* 21.2.2.27 chart CT_Chart */\r\n\r\n\tvar C = 0, R = 0, col = \"A\";\r\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\r\n\r\n\t/* 21.2.2.120 numCache CT_NumData */\r\n\t(data.match(/[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\r\n\t\tvar cache = parse_Cache(nc);\r\n\t\trefguess.s.r = refguess.s.c = 0;\r\n\t\trefguess.e.c = C;\r\n\t\tcol = encode_col(C);\r\n\t\tcache[0].forEach(function(n,i) {\r\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\r\n\t\t\tR = i;\r\n\t\t});\r\n\t\tif(refguess.e.r < R) refguess.e.r = R;\r\n\t\t++C;\r\n\t});\r\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\r\n\treturn cs;\r\n}\r\n/* 18.3 Worksheets also covers Chartsheets */\r\nfunction parse_cs_xml(data, opts, idx, rels, wb) {\r\n\tif(!data) return data;\r\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\r\n\tif(!rels) rels = {'!id':{}};\r\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"});\r\n\tvar m;\r\n\r\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\r\n\tvar sheetPr = data.match(sheetprregex);\r\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\r\n\r\n\t/* 18.3.1.36 drawing CT_Drawing */\r\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\r\n\r\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\r\n\treturn s;\r\n}\r\n\r\n\r\n// function write_cs_xml(idx, opts, wb, rels) {\r\n// \tvar o = [XML_HEADER, writextag('chartsheet', null, {\r\n// \t\t'xmlns': XMLNS_main[0],\r\n// \t\t'xmlns:r': XMLNS.r\r\n// \t})];\r\n// \to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\r\n// \tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\r\n// \tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\r\n// \treturn o.join(\"\");\r\n// }\r\n\r\n/** 2022-08-15 导出图片,好像没用到,被注释了 */\r\nfunction write_cs_xml(idx, opts, wb, rels) {\r\n\tvar o = [XML_HEADER, CS_XML_ROOT];\r\n\to[o.length] = writextag(\"drawing\", null, { \"r:id\": \"rId1\" });\r\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx + 1) + \".xml\", RELS.DRAW);\r\n\tif (o.length > 2) {\r\n\t\to[o.length] = ('');\r\n\t\to[1] = o[1].replace(\"/>\", \">\");\r\n\t}\r\n\treturn o.join(\"\");\r\n}\r\n\r\n/* [MS-XLSB] 2.4.331 BrtCsProp */\r\nfunction parse_BrtCsProp(data, length) {\r\n\tdata.l += 10;\r\n\tvar name = parse_XLWideString(data, length - 10);\r\n\treturn { name: name };\r\n}\r\n\r\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\r\nfunction parse_cs_bin(data, opts, idx, rels, wb) {\r\n\tif(!data) return data;\r\n\tif(!rels) rels = {'!id':{}};\r\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\r\n\tvar state = [];\r\n\tvar pass = false;\r\n\trecordhopper(data, function cs_parse(val, R, RT) {\r\n\t\tswitch(RT) {\r\n\r\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\r\n\t\t\t\ts['!rel'] = val; break;\r\n\r\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\r\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\r\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\r\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\r\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\r\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\r\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\r\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\r\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\r\n\t\t\tcase 0x0C00: /* 'BrtUid' */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\r\n\t\t\t\tpass = true; break;\r\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\r\n\t\t\t\tpass = false; break;\r\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\r\n\t\t\t\tstate.push(RT); break;\r\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\r\n\t\t\t\tstate.pop(); break;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tif(R.T > 0) state.push(RT);\r\n\t\t\t\telse if(R.T < 0) state.pop();\r\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\r\n\t\t}\r\n\t}, opts);\r\n\r\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\r\n\treturn s;\r\n}\r\n//function write_cs_bin() {\r\n//\tvar ba = buf_array();\r\n//\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\r\n//\t/* [BrtCsProp] */\r\n//\t/* CSVIEWS */\r\n//\t/* [[BrtCsProtectionIso] BrtCsProtection] */\r\n//\t/* [USERCSVIEWS] */\r\n//\t/* [BrtMargins] */\r\n//\t/* [BrtCsPageSetup] */\r\n//\t/* [HEADERFOOTER] */\r\n//\t/* BrtDrawing */\r\n//\t/* [BrtLegacyDrawing] */\r\n//\t/* [BrtLegacyDrawingHF] */\r\n//\t/* [BrtBkHim] */\r\n//\t/* [WEBPUBITEMS] */\r\n//\t/* FRTCHARTSHEET */\r\n//\twrite_record(ba, 0x0082 /* BrtEndSheet */);\r\n//\treturn ba.end();\r\n//}\r\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\r\nvar WBPropsDef = [\r\n\t['allowRefreshQuery', false, \"bool\"],\r\n\t['autoCompressPictures', true, \"bool\"],\r\n\t['backupFile', false, \"bool\"],\r\n\t['checkCompatibility', false, \"bool\"],\r\n\t['CodeName', ''],\r\n\t['date1904', false, \"bool\"],\r\n\t['defaultThemeVersion', 0, \"int\"],\r\n\t['filterPrivacy', false, \"bool\"],\r\n\t['hidePivotFieldList', false, \"bool\"],\r\n\t['promptedSolutions', false, \"bool\"],\r\n\t['publishItems', false, \"bool\"],\r\n\t['refreshAllConnections', false, \"bool\"],\r\n\t['saveExternalLinkValues', true, \"bool\"],\r\n\t['showBorderUnselectedTables', true, \"bool\"],\r\n\t['showInkAnnotation', true, \"bool\"],\r\n\t['showObjects', 'all'],\r\n\t['showPivotChartFilter', false, \"bool\"],\r\n\t['updateLinks', 'userSet']\r\n];\r\n\r\n/* 18.2.30 (CT_BookView) Defaults */\r\nvar WBViewDef = [\r\n\t['activeTab', 0, \"int\"],\r\n\t['autoFilterDateGrouping', true, \"bool\"],\r\n\t['firstSheet', 0, \"int\"],\r\n\t['minimized', false, \"bool\"],\r\n\t['showHorizontalScroll', true, \"bool\"],\r\n\t['showSheetTabs', true, \"bool\"],\r\n\t['showVerticalScroll', true, \"bool\"],\r\n\t['tabRatio', 600, \"int\"],\r\n\t['visibility', 'visible']\r\n\t//window{Height,Width}, {x,y}Window\r\n];\r\n\r\n/* 18.2.19 (CT_Sheet) Defaults */\r\nvar SheetDef = [\r\n\t//['state', 'visible']\r\n];\r\n\r\n/* 18.2.2 (CT_CalcPr) Defaults */\r\nvar CalcPrDef = [\r\n\t['calcCompleted', 'true'],\r\n\t['calcMode', 'auto'],\r\n\t['calcOnSave', 'true'],\r\n\t['concurrentCalc', 'true'],\r\n\t['fullCalcOnLoad', 'false'],\r\n\t['fullPrecision', 'true'],\r\n\t['iterate', 'false'],\r\n\t['iterateCount', '100'],\r\n\t['iterateDelta', '0.001'],\r\n\t['refMode', 'A1']\r\n];\r\n\r\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\r\n/*var CustomWBViewDef = [\r\n\t['autoUpdate', 'false'],\r\n\t['changesSavedWin', 'false'],\r\n\t['includeHiddenRowCol', 'true'],\r\n\t['includePrintSettings', 'true'],\r\n\t['maximized', 'false'],\r\n\t['minimized', 'false'],\r\n\t['onlySync', 'false'],\r\n\t['personalView', 'false'],\r\n\t['showComments', 'commIndicator'],\r\n\t['showFormulaBar', 'true'],\r\n\t['showHorizontalScroll', 'true'],\r\n\t['showObjects', 'all'],\r\n\t['showSheetTabs', 'true'],\r\n\t['showStatusbar', 'true'],\r\n\t['showVerticalScroll', 'true'],\r\n\t['tabRatio', '600'],\r\n\t['xWindow', '0'],\r\n\t['yWindow', '0']\r\n];*/\r\n\r\nfunction push_defaults_array(target, defaults) {\r\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\r\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\r\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\r\n\t\t\telse switch(z[2]) {\r\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\r\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\nfunction push_defaults(target, defaults) {\r\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\r\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\r\n\t\telse switch(z[2]) {\r\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\r\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction parse_wb_defaults(wb) {\r\n\tpush_defaults(wb.WBProps, WBPropsDef);\r\n\tpush_defaults(wb.CalcPr, CalcPrDef);\r\n\r\n\tpush_defaults_array(wb.WBView, WBViewDef);\r\n\tpush_defaults_array(wb.Sheets, SheetDef);\r\n\r\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\r\n}\r\n\r\nfunction safe1904(wb) {\r\n\t/* TODO: store date1904 somewhere else */\r\n\tif(!wb.Workbook) return \"false\";\r\n\tif(!wb.Workbook.WBProps) return \"false\";\r\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\r\n}\r\n\r\nvar badchars = \":][*?\\/\\\\\".split(\"\");\r\nfunction check_ws_name(n, safe) {\r\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\r\n\tvar _good = true;\r\n\tbadchars.forEach(function(c) {\r\n\t\tif(n.indexOf(c) == -1) return;\r\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\r\n\t\t_good = false;\r\n\t});\r\n\treturn _good;\r\n}\r\nfunction check_wb_names(N, S, codes) {\r\n\tN.forEach(function(n,i) {\r\n\t\tcheck_ws_name(n);\r\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\r\n\t\tif(codes) {\r\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\r\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\r\n\t\t}\r\n\t});\r\n}\r\nfunction check_wb(wb) {\r\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\r\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\r\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\r\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\r\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\r\n\twb.SheetNames.forEach(function(n, i) {\r\n\t\tvar ws = wb.Sheets[n];\r\n\t\tif(!ws || !ws[\"!autofilter\"]) return;\r\n\t\tvar DN;\r\n\t\tif(!wb.Workbook) wb.Workbook = {};\r\n\t\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\r\n\t\twb.Workbook.Names.forEach(function(dn) { if(dn.Name == \"_xlnm._FilterDatabase\" && dn.Sheet == i) DN = dn; });\r\n\t\tvar nn = formula_quote_sheet_name(n) + \"!\" + fix_range(ws[\"!autofilter\"].ref);\r\n\t\tif(DN) DN.Ref = nn;\r\n\t\telse wb.Workbook.Names.push({Name: \"_xlnm._FilterDatabase\", Sheet: i, Ref: nn});\r\n\t});\r\n\t/* TODO: validate workbook */\r\n}\r\n/* 18.2 Workbook */\r\nvar wbnsregex = /<\\w+:workbook/;\r\nfunction parse_wb_xml(data, opts) {\r\n\tif(!data) throw new Error(\"Could not find file\");\r\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" };\r\n\tvar pass = false, xmlns = \"xmlns\";\r\n\tvar dname = {}, dnstart = 0;\r\n\tdata.replace(tagregex, function xml_wb(x, idx) {\r\n\t\tvar y = parsexmltag(x);\r\n\t\tswitch(strip_ns(y[0])) {\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\r\n\t\t\tcase '': case '': break;\r\n\r\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\r\n\t\t\tcase '':\r\n\t\t\t\tWBPropsDef.forEach(function(w) {\r\n\t\t\t\t\tif(y[w[0]] == null) return;\r\n\t\t\t\t\tswitch(w[2]) {\r\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\r\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\r\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\r\n\t\t\t\tbreak;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\r\n\t\t\tcase '': case '': break;\r\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\r\n\t\t\tcase '': delete y[0]; wb.WBView.push(y); break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\r\n\t\t\tcase '': case '': break; // aggregate sheet\r\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\r\n\t\t\tcase '': break;\r\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\r\n\t\t\tcase '': case '': break;\r\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\r\n\t\t\tcase '': break;\r\n\t\t\tcase '': case '': pass=false; break;\r\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\r\n\t\t\tcase '': {\r\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\r\n\t\t\t\twb.Names.push(dname);\r\n\t\t\t} break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\r\n\t\t\tcase '': delete y[0]; wb.CalcPr = y; break;\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\r\n\t\t\tcase '': case '': case '': break;\r\n\r\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\r\n\t\t\tcase '': case '': case '': break;\r\n\r\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\r\n\t\t\tcase '': case '': break;\r\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\r\n\t\t\tcase '': break;\r\n\r\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\r\n\t\t\tcase '': case '': break;\r\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\r\n\t\t\tcase '': case '': case '': break;\r\n\t\t\t/* 18.2.7 ext CT_Extension + */\r\n\t\t\tcase '': pass=false; break;\r\n\r\n\t\t\t/* Others */\r\n\t\t\tcase '': pass=true; break;\r\n\t\t\tcase '': pass=false; break;\r\n\r\n\t\t\t/* TODO */\r\n\t\t\tcase ' 0);\r\n\r\n\t/* fileVersion */\r\n\t/* fileSharing */\r\n\r\n\tvar workbookPr = ({codeName:\"ThisWorkbook\"});\r\n\tif(wb.Workbook && wb.Workbook.WBProps) {\r\n\t\tWBPropsDef.forEach(function(x) {\r\nif((wb.Workbook.WBProps[x[0]]) == null) return;\r\n\t\t\tif((wb.Workbook.WBProps[x[0]]) == x[1]) return;\r\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]);\r\n\t\t});\r\nif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\r\n\t}\r\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\r\n\r\n\t/* workbookProtection */\r\n\r\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\r\n\tvar i = 0;\r\n\r\n\t/* bookViews only written if first worksheet is hidden */\r\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\r\n\t\to[o.length] = \"\";\r\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\r\n\t\t\tif(!sheets[i]) break;\r\n\t\t\tif(!sheets[i].Hidden) break;\r\n\t\t}\r\n\t\tif(i == wb.SheetNames.length) i = 0;\r\n\t\to[o.length] = '';\r\n\t\to[o.length] = \"\";\r\n\t}\r\n\r\n\to[o.length] = \"\";\r\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\r\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))});\r\n\t\tsht.sheetId = \"\"+(i+1);\r\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\r\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\r\n\t\t\tcase 1: sht.state = \"hidden\"; break;\r\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\r\n\t\t}\r\n\t\to[o.length] = (writextag('sheet',null,sht));\r\n\t}\r\n\to[o.length] = \"\";\r\n\r\n\t/* functionGroups */\r\n\t/* externalReferences */\r\n\r\n\tif(write_names) {\r\n\t\to[o.length] = \"\";\r\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\r\n\t\t\tvar d = {name:n.Name};\r\n\t\t\tif(n.Comment) d.comment = n.Comment;\r\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\r\n\t\t\tif(n.Hidden) d.hidden = \"1\";\r\n\t\t\tif(!n.Ref) return;\r\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\r\n\t\t});\r\n\t\to[o.length] = \"\";\r\n\t}\r\n\r\n\t/* calcPr */\r\n\t/* oleSize */\r\n\t/* customWorkbookViews */\r\n\t/* pivotCaches */\r\n\t/* smartTagPr */\r\n\t/* smartTagTypes */\r\n\t/* webPublishing */\r\n\t/* fileRecoveryPr */\r\n\t/* webPublishObjects */\r\n\t/* extLst */\r\n\r\n\tif(o.length>2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\r\n\treturn o.join(\"\");\r\n}\r\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\r\nfunction parse_BrtBundleSh(data, length) {\r\n\tvar z = {};\r\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\r\n\tz.iTabID = data.read_shift(4);\r\n\tz.strRelID = parse_RelID(data,length-8);\r\n\tz.name = parse_XLWideString(data);\r\n\treturn z;\r\n}\r\nfunction write_BrtBundleSh(data, o) {\r\n\tif(!o) o = new_buf(127);\r\n\to.write_shift(4, data.Hidden);\r\n\to.write_shift(4, data.iTabID);\r\n\twrite_RelID(data.strRelID, o);\r\n\twrite_XLWideString(data.name.slice(0,31), o);\r\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.815 BrtWbProp */\r\nfunction parse_BrtWbProp(data, length) {\r\n\tvar o = ({});\r\n\tvar flags = data.read_shift(4);\r\n\to.defaultThemeVersion = data.read_shift(4);\r\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\r\n\tif(strName.length > 0) o.CodeName = strName;\r\n\to.autoCompressPictures = !!(flags & 0x10000);\r\n\to.backupFile = !!(flags & 0x40);\r\n\to.checkCompatibility = !!(flags & 0x1000);\r\n\to.date1904 = !!(flags & 0x01);\r\n\to.filterPrivacy = !!(flags & 0x08);\r\n\to.hidePivotFieldList = !!(flags & 0x400);\r\n\to.promptedSolutions = !!(flags & 0x10);\r\n\to.publishItems = !!(flags & 0x800);\r\n\to.refreshAllConnections = !!(flags & 0x40000);\r\n\to.saveExternalLinkValues = !!(flags & 0x80);\r\n\to.showBorderUnselectedTables = !!(flags & 0x04);\r\n\to.showInkAnnotation = !!(flags & 0x20);\r\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\r\n\to.showPivotChartFilter = !!(flags & 0x8000);\r\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\r\n\treturn o;\r\n}\r\nfunction write_BrtWbProp(data, o) {\r\n\tif(!o) o = new_buf(72);\r\n\tvar flags = 0;\r\n\tif(data) {\r\n\t\t/* TODO: mirror parse_BrtWbProp fields */\r\n\t\tif(data.date1904) flags |= 0x01;\r\n\t\tif(data.filterPrivacy) flags |= 0x08;\r\n\t}\r\n\to.write_shift(4, flags);\r\n\to.write_shift(4, 0);\r\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\r\n\treturn o.slice(0, o.l);\r\n}\r\n\r\nfunction parse_BrtFRTArchID$(data, length) {\r\n\tvar o = {};\r\n\tdata.read_shift(4);\r\n\to.ArchID = data.read_shift(4);\r\n\tdata.l += length - 8;\r\n\treturn o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.687 BrtName */\r\nfunction parse_BrtName(data, length, opts) {\r\n\tvar end = data.l + length;\r\n\tvar flags = data.read_shift(4);\r\n\tdata.l += 1; //var chKey = data.read_shift(1);\r\n\tvar itab = data.read_shift(4);\r\n\tvar name = parse_XLNameWideString(data);\r\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\r\n\tvar comment = parse_XLNullableWideString(data);\r\n\tif(flags & 0x20) name = \"_xlnm.\" + name;\r\n\t//if(0 /* fProc */) {\r\n\t\t// unusedstring1: XLNullableWideString\r\n\t\t// description: XLNullableWideString\r\n\t\t// helpTopic: XLNullableWideString\r\n\t\t// unusedstring2: XLNullableWideString\r\n\t//}\r\n\tdata.l = end;\r\n\tvar out = ({Name:name, Ptg:formula, Flags: flags});\r\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\r\n\tif(comment) out.Comment = comment;\r\n\treturn out;\r\n}\r\nfunction write_BrtName(name, wb) {\r\n\tvar o = new_buf(9);\r\n\tvar flags = 0;\r\n\tvar dname = name.Name;\r\n\tif(XLSLblBuiltIn.indexOf(dname) > -1) { flags |= 0x20; dname = dname.slice(6); }\r\n\to.write_shift(4, flags); // flags\r\n\to.write_shift(1, 0); // chKey\r\n\to.write_shift(4, name.Sheet == null ? 0xFFFFFFFF : name.Sheet);\r\n\r\n\tvar arr = [\r\n\t\to,\r\n\t\twrite_XLWideString(dname),\r\n\t\twrite_XLSBNameParsedFormula(name.Ref, wb)\r\n\t];\r\n\tif(name.Comment) arr.push(write_XLNullableWideString(name.Comment));\r\n\telse {\r\n\t\tvar x = new_buf(4);\r\n\t\tx.write_shift(4, 0xFFFFFFFF);\r\n\t\tarr.push(x);\r\n\t}\r\n\r\n\t// if macro (flags & 0x0F):\r\n\t// write_shift(4, 0xFFFFFFFF);\r\n\t// write_XLNullableWideString(description)\r\n\t// write_XLNullableWideString(helpTopic)\r\n\t// write_shift(4, 0xFFFFFFFF);\r\n\r\n\treturn bconcat(arr);\r\n}\r\n\r\n/* [MS-XLSB] 2.1.7.61 Workbook */\r\nfunction parse_wb_bin(data, opts) {\r\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\r\n\tvar state = [];\r\n\tvar pass = false;\r\n\r\n\tif(!opts) opts = {};\r\n\topts.biff = 12;\r\n\r\n\tvar Names = [];\r\n\tvar supbooks = ([[]]);\r\n\tsupbooks.SheetNames = [];\r\n\tsupbooks.XTI = [];\r\n\r\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\r\n\r\n\trecordhopper(data, function hopper_wb(val, R, RT) {\r\n\t\tswitch(RT) {\r\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\r\n\t\t\t\tsupbooks.SheetNames.push(val.name);\r\n\t\t\t\twb.Sheets.push(val); break;\r\n\r\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\r\n\t\t\t\twb.WBProps = val; break;\r\n\r\n\t\t\tcase 0x0027: /* 'BrtName' */\r\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\r\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\r\n\t\t\t\tdelete opts.SID;\r\n\t\t\t\tdelete val.Ptg;\r\n\t\t\t\tNames.push(val);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\r\n\r\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\r\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\r\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\r\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\r\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\r\n\t\t\t\telse supbooks.push([RT, val]);\r\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\r\n\t\t\t\tbreak;\r\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\r\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\r\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\r\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\r\n\t\t\tcase 0x009E: /* 'BrtBookView' */\r\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\r\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\r\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\r\n\t\t\tcase 0x0C00: /* 'BrtUid' */\r\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\r\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\r\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\r\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\r\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\r\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\r\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\r\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\r\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\r\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\r\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\r\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\r\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\r\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\r\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\r\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\r\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\r\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\r\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\r\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\r\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\r\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\r\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\r\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\r\n\t\t\t\tstate.push(RT); pass = true; break;\r\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\r\n\t\t\t\tstate.pop(); pass = false; break;\r\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\r\n\t\t\t\tstate.push(RT); pass = true; break;\r\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\r\n\t\t\t\tstate.pop(); pass = false; break;\r\n\r\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tif(R.T){/* empty */}\r\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\r\n\t\t}\r\n\t}, opts);\r\n\r\n\tparse_wb_defaults(wb);\r\n\r\n\t// $FlowIgnore\r\n\twb.Names = Names;\r\n\r\n\t(wb).supbooks = supbooks;\r\n\treturn wb;\r\n}\r\n\r\nfunction write_BUNDLESHS(ba, wb) {\r\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\r\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\r\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\r\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\r\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\r\n\t}\r\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\r\n}\r\n\r\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\r\nfunction write_BrtFileVersion(data, o) {\r\n\tif(!o) o = new_buf(127);\r\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\r\n\twrite_XLWideString(\"SheetJS\", o);\r\n\twrite_XLWideString(XLSX.version, o);\r\n\twrite_XLWideString(XLSX.version, o);\r\n\twrite_XLWideString(\"7262\", o);\r\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\r\n}\r\n\r\n/* [MS-XLSB] 2.4.301 BrtBookView */\r\nfunction write_BrtBookView(idx, o) {\r\n\tif(!o) o = new_buf(29);\r\n\to.write_shift(-4, 0);\r\n\to.write_shift(-4, 460);\r\n\to.write_shift(4, 28800);\r\n\to.write_shift(4, 17600);\r\n\to.write_shift(4, 500);\r\n\to.write_shift(4, idx);\r\n\to.write_shift(4, idx);\r\n\tvar flags = 0x78;\r\n\to.write_shift(1, flags);\r\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\r\n}\r\n\r\nfunction write_BOOKVIEWS(ba, wb) {\r\n\t/* required if hidden tab appears before visible tab */\r\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\r\n\tvar sheets = wb.Workbook.Sheets;\r\n\tvar i = 0, vistab = -1, hidden = -1;\r\n\tfor(; i < sheets.length; ++i) {\r\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\r\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\r\n\t}\r\n\tif(hidden > vistab) return;\r\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\r\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\r\n\t/* 1*(BrtBookView *FRT) */\r\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\r\n}\r\n\r\nfunction write_BRTNAMES(ba, wb) {\r\n\tif(!wb.Workbook || !wb.Workbook.Names) return;\r\n\twb.Workbook.Names.forEach(function(name) { try {\r\n\t\tif(name.Flags & 0x0e) return; // TODO: macro name write\r\n\t\twrite_record(ba, 0x0027 /* BrtName */, write_BrtName(name, wb));\r\n\t} catch(e) {\r\n\t\tconsole.error(\"Could not serialize defined name \" + JSON.stringify(name));\r\n\t} });\r\n}\r\n\r\nfunction write_SELF_EXTERNS_xlsb(wb) {\r\n\tvar L = wb.SheetNames.length;\r\n\tvar o = new_buf(12 * L + 28);\r\n\to.write_shift(4, L + 2);\r\n\to.write_shift(4, 0); o.write_shift(4, -2); o.write_shift(4, -2); // workbook-level reference\r\n\to.write_shift(4, 0); o.write_shift(4, -1); o.write_shift(4, -1); // #REF!...\r\n\tfor(var i = 0; i < L; ++i) {\r\n\t\to.write_shift(4, 0); o.write_shift(4, i); o.write_shift(4, i);\r\n\t}\r\n\treturn o;\r\n}\r\nfunction write_EXTERNALS_xlsb(ba, wb) {\r\n\twrite_record(ba, 0x0161 /* BrtBeginExternals */);\r\n\twrite_record(ba, 0x0165 /* BrtSupSelf */);\r\n\twrite_record(ba, 0x016A /* BrtExternSheet */, write_SELF_EXTERNS_xlsb(wb, 0));\r\n\twrite_record(ba, 0x0162 /* BrtEndExternals */);\r\n}\r\n\r\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\r\n/*function write_BrtCalcProp(data, o) {\r\n\tif(!o) o = new_buf(26);\r\n\to.write_shift(4,0); // force recalc\r\n\to.write_shift(4,1);\r\n\to.write_shift(4,0);\r\n\twrite_Xnum(0, o);\r\n\to.write_shift(-4, 1023);\r\n\to.write_shift(1, 0x33);\r\n\to.write_shift(1, 0x00);\r\n\treturn o;\r\n}*/\r\n\r\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\r\n/*function write_BrtFileRecover(data, o) {\r\n\tif(!o) o = new_buf(1);\r\n\to.write_shift(1,0);\r\n\treturn o;\r\n}*/\r\n\r\n/* [MS-XLSB] 2.1.7.61 Workbook */\r\nfunction write_wb_bin(wb, opts) {\r\n\tvar ba = buf_array();\r\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\r\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\r\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\r\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\r\n\t/* [ACABSPATH] */\r\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\r\n\twrite_BOOKVIEWS(ba, wb, opts);\r\n\twrite_BUNDLESHS(ba, wb, opts);\r\n\t/* [FNGROUP] */\r\n\twrite_EXTERNALS_xlsb(ba, wb);\r\n\tif((wb.Workbook||{}).Names) write_BRTNAMES(ba, wb);\r\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\r\n\t/* [BrtOleSize] */\r\n\t/* *(BrtUserBookView *FRT) */\r\n\t/* [PIVOTCACHEIDS] */\r\n\t/* [BrtWbFactoid] */\r\n\t/* [SMARTTAGTYPES] */\r\n\t/* [BrtWebOpt] */\r\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\r\n\t/* [WEBPUBITEMS] */\r\n\t/* [CRERRS] */\r\n\t/* FRTWORKBOOK */\r\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\r\n\r\n\treturn ba.end();\r\n}\r\nfunction parse_wb(data, name, opts) {\r\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data), opts);\r\n\treturn parse_wb_xml((data), opts);\r\n}\r\n\r\nfunction parse_ws(data, name, idx, opts, rels, wb, themes, styles) {\r\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data), opts, idx, rels, wb, themes, styles);\r\n\treturn parse_ws_xml((data), opts, idx, rels, wb, themes, styles);\r\n}\r\n\r\nfunction parse_cs(data, name, idx, opts, rels, wb, themes, styles) {\r\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data), opts, idx, rels, wb, themes, styles);\r\n\treturn parse_cs_xml((data), opts, idx, rels, wb, themes, styles);\r\n}\r\n\r\nfunction parse_ms(data, name, idx, opts, rels, wb, themes, styles) {\r\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data), opts, idx, rels, wb, themes, styles);\r\n\treturn parse_ms_xml((data), opts, idx, rels, wb, themes, styles);\r\n}\r\n\r\nfunction parse_ds(data, name, idx, opts, rels, wb, themes, styles) {\r\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data), opts, idx, rels, wb, themes, styles);\r\n\treturn parse_ds_xml((data), opts, idx, rels, wb, themes, styles);\r\n}\r\n\r\nfunction parse_sty(data, name, themes, opts) {\r\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data), themes, opts);\r\n\treturn parse_sty_xml((data), themes, opts);\r\n}\r\n\r\nfunction parse_sst(data, name, opts) {\r\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data), opts);\r\n\treturn parse_sst_xml((data), opts);\r\n}\r\n\r\nfunction parse_cmnt(data, name, opts) {\r\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data), opts);\r\n\treturn parse_comments_xml((data), opts);\r\n}\r\n\r\nfunction parse_cc(data, name, opts) {\r\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data), name, opts);\r\n\treturn parse_cc_xml((data), name, opts);\r\n}\r\n\r\nfunction parse_xlink(data, rel, name, opts) {\r\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data), rel, name, opts);\r\n\treturn parse_xlink_xml((data), rel, name, opts);\r\n}\r\n\r\nfunction parse_xlmeta(data, name, opts) {\r\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data), name, opts);\r\n\treturn parse_xlmeta_xml((data), name, opts);\r\n}\r\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\r\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\r\nfunction xlml_parsexmltag(tag, skip_root) {\r\n\tvar words = tag.split(/\\s+/);\r\n\tvar z = ([]); if(!skip_root) z[0] = words[0];\r\n\tif(words.length === 1) return z;\r\n\tvar m = tag.match(attregexg2), y, j, w, i;\r\n\tif(m) for(i = 0; i != m.length; ++i) {\r\n\t\ty = m[i].match(attregex2);\r\nif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\r\n\t\telse {\r\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\r\n\t\t\telse w = y[1].slice(j+1);\r\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\r\n\t\t}\r\n\t}\r\n\treturn z;\r\n}\r\nfunction xlml_parsexmltagobj(tag) {\r\n\tvar words = tag.split(/\\s+/);\r\n\tvar z = {};\r\n\tif(words.length === 1) return z;\r\n\tvar m = tag.match(attregexg2), y, j, w, i;\r\n\tif(m) for(i = 0; i != m.length; ++i) {\r\n\t\ty = m[i].match(attregex2);\r\nif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\r\n\t\telse {\r\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\r\n\t\t\telse w = y[1].slice(j+1);\r\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\r\n\t\t}\r\n\t}\r\n\treturn z;\r\n}\r\n\r\n// ----\r\n\r\n/* map from xlml named formats to SSF TODO: localize */\r\nvar XLMLFormatMap;\r\n\r\nfunction xlml_format(format, value) {\r\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\r\n\tif(fmt === \"General\") return SSF_general(value);\r\n\treturn SSF_format(fmt, value);\r\n}\r\n\r\nfunction xlml_set_custprop(Custprops, key, cp, val) {\r\n\tvar oval = val;\r\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\r\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\r\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\r\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\r\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\r\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\r\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\r\n\t}\r\n\tCustprops[unescapexml(key)] = oval;\r\n}\r\n\r\nfunction safe_format_xlml(cell, nf, o) {\r\n\tif(cell.t === 'z') return;\r\n\tif(!o || o.cellText !== false) try {\r\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\r\n\t\telse if(nf === \"General\") {\r\n\t\t\tif(cell.t === 'n') {\r\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\r\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\r\n\t\t\t}\r\n\t\t\telse cell.w = SSF_general(cell.v);\r\n\t\t}\r\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\r\n\t} catch(e) { if(o.WTF) throw e; }\r\n\ttry {\r\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\r\n\t\tif(o.cellNF) cell.z = z;\r\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\r\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\r\n\t\t}\r\n\t} catch(e) { if(o.WTF) throw e; }\r\n}\r\n\r\nfunction process_style_xlml(styles, stag, opts) {\r\n\tif(opts.cellStyles) {\r\n\t\tif(stag.Interior) {\r\n\t\t\tvar I = stag.Interior;\r\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\r\n\t\t}\r\n\t}\r\n\tstyles[stag.ID] = stag;\r\n}\r\n\r\n/* TODO: there must exist some form of OSP-blessed spec */\r\nfunction parse_xlml_data(xml, ss, data, cell, base, styles, csty, row, arrayf, o) {\r\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\r\n\tvar interiors = [];\r\n\tvar i = 0;\r\n\tif(sid === undefined && row) sid = row.StyleID;\r\n\tif(sid === undefined && csty) sid = csty.StyleID;\r\n\twhile(styles[sid] !== undefined) {\r\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\r\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\r\n\t\tif(!styles[sid].Parent) break;\r\n\t\tsid = styles[sid].Parent;\r\n\t}\r\n\tswitch(data.Type) {\r\n\t\tcase 'Boolean':\r\n\t\t\tcell.t = 'b';\r\n\t\t\tcell.v = parsexmlbool(xml);\r\n\t\t\tbreak;\r\n\t\tcase 'String':\r\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\r\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\r\n\t\t\tbreak;\r\n\t\tcase 'DateTime':\r\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\r\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\r\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\r\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\r\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\r\n\t\t\t/* falls through */\r\n\t\tcase 'Number':\r\n\t\t\tif(cell.v === undefined) cell.v=+xml;\r\n\t\t\tif(!cell.t) cell.t = 'n';\r\n\t\t\tbreak;\r\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\r\n\t\tdefault:\r\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\r\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\r\n\t\t\tbreak;\r\n\t}\r\n\tsafe_format_xlml(cell, nf, o);\r\n\tif(o.cellFormula !== false) {\r\n\t\tif(cell.Formula) {\r\n\t\t\tvar fstr = unescapexml(cell.Formula);\r\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\r\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\r\n\t\t\tcell.f = rc_to_a1(fstr, base);\r\n\t\t\tdelete cell.Formula;\r\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\r\n\t\t\telse if(cell.ArrayRange) {\r\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\r\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\r\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\r\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\r\n\t\t\t\t\t\tcell.F = arrayf[i][1];\r\n\t\t}\r\n\t}\r\n\tif(o.cellStyles) {\r\n\t\tinteriors.forEach(function(x) {\r\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\r\n\t\t});\r\n\t\tcell.s = S;\r\n\t}\r\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\r\n}\r\n\r\nfunction xlml_prefix_dname(dname) {\r\n\treturn XLSLblBuiltIn.indexOf(\"_xlnm.\" + dname) > -1 ? \"_xlnm.\" + dname : dname;\r\n}\r\n\r\nfunction xlml_clean_comment(comment) {\r\n\tcomment.t = comment.v || \"\";\r\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\r\n\tcomment.v = comment.w = comment.ixfe = undefined;\r\n}\r\n\r\n/* TODO: Everything */\r\nfunction parse_xlml_xml(d, _opts) {\r\n\tvar opts = _opts || {};\r\n\tmake_ssf();\r\n\tvar str = debom(xlml_normalize(d));\r\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\r\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\r\n\t\telse str = utf8read(str);\r\n\t}\r\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\r\n\topening = opening.replace(/\".*?\"/g, \"\");\r\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\r\n\tif(opening.indexOf(\"= 0) ishtml = true; });\r\n\tif(ishtml) return html_to_workbook(str, opts);\r\n\r\n\tXLMLFormatMap = ({\r\n\t\t\"General Number\": \"General\",\r\n\t\t\"General Date\": table_fmt[22],\r\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\r\n\t\t\"Medium Date\": table_fmt[15],\r\n\t\t\"Short Date\": table_fmt[14],\r\n\t\t\"Long Time\": table_fmt[19],\r\n\t\t\"Medium Time\": table_fmt[18],\r\n\t\t\"Short Time\": table_fmt[20],\r\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\r\n\t\t\"Fixed\": table_fmt[2],\r\n\t\t\"Standard\": table_fmt[4],\r\n\t\t\"Percent\": table_fmt[10],\r\n\t\t\"Scientific\": table_fmt[11],\r\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\r\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\r\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\r\n\t});\r\n\r\n\r\n\tvar Rn;\r\n\tvar state = [], tmp;\r\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\r\n\tvar sheets = {}, sheetnames = [], cursheet = (opts.dense ? [] : {}), sheetname = \"\";\r\n\tvar cell = ({}), row = {};// eslint-disable-line no-unused-vars\r\n\tvar dtag = xlml_parsexmltag(''), didx = 0;\r\n\tvar c = 0, r = 0;\r\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\r\n\tvar styles = {}, stag = {};\r\n\tvar ss = \"\", fidx = 0;\r\n\tvar merges = [];\r\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\r\n\tvar comments = [], comment = ({});\r\n\tvar cstys = [], csty, seencol = false;\r\n\tvar arrayf = [];\r\n\tvar rowinfo = [], rowobj = {}, cc = 0, rr = 0;\r\n\tvar Workbook = ({ Sheets:[], WBProps:{date1904:false} }), wsprops = {};\r\n\txlmlregex.lastIndex = 0;\r\n\tstr = str.replace(//mg,\"\");\r\n\tvar raw_Rn3 = \"\";\r\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\r\n\t\tcase 'data' /*case 'Data'*/:\r\n\t\t\tif(raw_Rn3 == \"data\") {\r\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\r\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(state[state.length-1][1]) break;\r\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\r\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\r\n\t\t\tbreak;\r\n\t\tcase 'cell' /*case 'Cell'*/:\r\n\t\t\tif(Rn[1]==='/'){\r\n\t\t\t\tif(comments.length > 0) cell.c = comments;\r\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== void 0) {\r\n\t\t\t\t\tif(opts.dense) {\r\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\r\n\t\t\t\t\t\tcursheet[r][c] = cell;\r\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\r\n\t\t\t\t}\r\n\t\t\t\tif(cell.HRef) {\r\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)});\r\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\r\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\r\n\t\t\t\t}\r\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\r\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\r\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\r\n\t\t\t\t\tif(cc > c || rr > r) merges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\r\n\t\t\t\t}\r\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\r\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\r\nfor(var cma = c; cma <= cc; ++cma) {\r\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\r\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\r\n\t\t\t\t\t\t\t\tif(opts.dense) {\r\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\r\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\r\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tc = cc + 1;\r\n\t\t\t\t}\r\n\t\t\t\telse ++c;\r\n\t\t\t} else {\r\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\r\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\r\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\r\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\r\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\r\n\t\t\t\tcomments = [];\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'row' /*case 'Row'*/:\r\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\r\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\r\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\r\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\r\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\r\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\r\n\t\t\t\t}\r\n\t\t\t\tc = 0; ++r;\r\n\t\t\t} else {\r\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\r\n\t\t\t\tif(row.Index) r = +row.Index - 1;\r\n\t\t\t\trowobj = {};\r\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\r\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\r\n\t\t\t\t\trowinfo[r] = rowobj;\r\n\t\t\t\t}\r\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\r\n\t\t\tif(Rn[1]==='/'){\r\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\r\n\t\t\t\tsheetnames.push(sheetname);\r\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\r\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\r\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\r\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\r\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\r\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\r\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\r\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\r\n\t\t\t\tsheets[sheetname] = cursheet;\r\n\t\t\t} else {\r\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\r\n\t\t\t\tr = c = 0;\r\n\t\t\t\tstate.push([Rn[3], false]);\r\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\r\n\t\t\t\tsheetname = unescapexml(tmp.Name);\r\n\t\t\t\tcursheet = (opts.dense ? [] : {});\r\n\t\t\t\tmerges = [];\r\n\t\t\t\tarrayf = [];\r\n\t\t\t\trowinfo = [];\r\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\r\n\t\t\t\tWorkbook.Sheets.push(wsprops);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'table' /*case 'Table'*/:\r\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\r\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\r\n\t\t\telse {\r\n\t\t\t\tstate.push([Rn[3], false]);\r\n\t\t\t\tcstys = []; seencol = false;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'style' /*case 'Style'*/:\r\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\r\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\r\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\r\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\r\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\r\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF__load(stag.nf, ssfidx); break; }\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'column' /*case 'Column'*/:\r\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\r\n\t\t\tif(Rn[1]==='/') break;\r\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\r\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\r\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\r\n\t\t\tif(!seencol && csty.wpx > 10) {\r\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\r\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\r\n\t\t\t}\r\n\t\t\tif(seencol) process_col(csty);\r\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\r\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\r\n\t\t\tif(Rn[1]==='/') break;\r\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\r\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\r\n\t\t\tvar _DefinedName = ({\r\n\t\t\t\tName: xlml_prefix_dname(_NamedRange.Name),\r\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\r\n\t\t\t});\r\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\r\nWorkbook.Names.push(_DefinedName);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\r\n\t\tcase 'b' /*case 'B'*/: break;\r\n\t\tcase 'i' /*case 'I'*/: break;\r\n\t\tcase 'u' /*case 'U'*/: break;\r\n\t\tcase 's' /*case 'S'*/: break;\r\n\t\tcase 'em' /*case 'EM'*/: break;\r\n\t\tcase 'h2' /*case 'H2'*/: break;\r\n\t\tcase 'h3' /*case 'H3'*/: break;\r\n\t\tcase 'sub' /*case 'Sub'*/: break;\r\n\t\tcase 'sup' /*case 'Sup'*/: break;\r\n\t\tcase 'span' /*case 'Span'*/: break;\r\n\t\tcase 'alignment' /*case 'Alignment'*/:\r\n\t\t\tbreak;\r\n\t\tcase 'borders' /*case 'Borders'*/: break;\r\n\t\tcase 'border' /*case 'Border'*/: break;\r\n\t\tcase 'font' /*case 'Font'*/:\r\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\r\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\r\n\t\t\telse fidx = Rn.index + Rn[0].length;\r\n\t\t\tbreak;\r\n\t\tcase 'interior' /*case 'Interior'*/:\r\n\t\t\tif(!opts.cellStyles) break;\r\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\r\n\t\t\tbreak;\r\n\t\tcase 'protection' /*case 'Protection'*/: break;\r\n\r\n\t\tcase 'author' /*case 'Author'*/:\r\n\t\tcase 'title' /*case 'Title'*/:\r\n\t\tcase 'description' /*case 'Description'*/:\r\n\t\tcase 'created' /*case 'Created'*/:\r\n\t\tcase 'keywords' /*case 'Keywords'*/:\r\n\t\tcase 'subject' /*case 'Subject'*/:\r\n\t\tcase 'category' /*case 'Category'*/:\r\n\t\tcase 'company' /*case 'Company'*/:\r\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\r\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\r\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\r\n\t\tcase 'version' /*case 'Version'*/:\r\n\t\tcase 'revision' /*case 'Revision'*/:\r\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\r\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\r\n\t\tcase 'manager' /*case 'Manager'*/:\r\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\r\n\t\tcase 'identifier' /*case 'Identifier'*/:\r\n\t\tcase 'language' /*case 'Language'*/:\r\n\t\tcase 'appname' /*case 'AppName'*/:\r\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\r\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\r\n\t\t\telse pidx = Rn.index + Rn[0].length;\r\n\t\t\tbreak;\r\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\r\n\r\n\t\tcase 'styles' /*case 'Styles'*/:\r\n\t\tcase 'workbook' /*case 'Workbook'*/:\r\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\r\n\t\t\telse state.push([Rn[3], false]);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'comment' /*case 'Comment'*/:\r\n\t\t\tif(Rn[1]==='/'){\r\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\r\n\t\t\t\txlml_clean_comment(comment);\r\n\t\t\t\tcomments.push(comment);\r\n\t\t\t} else {\r\n\t\t\t\tstate.push([Rn[3], false]);\r\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\r\n\t\t\t\tcomment = ({a:tmp.Author});\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\r\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\r\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\r\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\r\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\r\n\t\t\t\tstate.push([Rn[3], true]);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'name' /*case 'Name'*/: break;\r\n\r\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\r\n\t\t\tif(Rn[1]==='/'){\r\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\r\n\t\t\t} else {\r\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\r\n\t\t\tbreak;\r\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\r\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\r\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\r\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\r\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\r\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\r\n\t\tcase 'names' /*case 'Names'*/:\r\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\r\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\r\n\t\tcase 'querytable' /*case 'QueryTable'*/:\r\n\t\tcase 'sorting' /*case 'Sorting'*/:\r\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\r\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\r\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\r\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\r\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\r\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\r\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\r\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\r\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'null' /*case 'Null'*/: break;\r\n\r\n\t\tdefault:\r\n\t\t\t/* FODS file root is */\r\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\r\n\t\t\t/* UOS file root is */\r\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\r\n\r\n\t\t\tvar seen = true;\r\n\t\t\tswitch(state[state.length-1][0]) {\r\n\t\t\t\t/* OfficeDocumentSettings */\r\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\r\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\r\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\r\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\r\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\r\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\r\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\r\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\r\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\r\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\r\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\r\n\t\t\t\t\tdefault: seen = false;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\t/* ComponentOptions */\r\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\r\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\r\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\r\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\r\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\r\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\r\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\r\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\r\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\r\n\t\t\t\t\tdefault: seen = false;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\t/* ExcelWorkbook */\r\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\r\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\r\nWorkbook.WBProps.date1904 = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\r\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\r\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\r\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\r\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\r\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\r\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\r\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\r\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\r\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\r\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\r\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\r\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\r\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\r\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\r\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\r\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\r\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\r\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\r\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\r\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\r\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\r\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\r\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\r\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\r\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\r\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\r\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\r\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\r\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\r\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\r\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\r\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\r\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\r\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\r\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\r\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\r\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\r\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\r\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\r\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\r\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\r\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\r\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\r\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\r\n\t\t\t\t\tdefault: seen = false;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\t/* WorkbookOptions */\r\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\r\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\r\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\r\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\r\n\t\t\t\t\tdefault: seen = false;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\t/* WorksheetOptions */\r\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\r\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\r\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\r\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\r\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\r\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\r\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\r\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\r\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\r\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\r\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\r\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\r\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\r\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\r\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\r\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\r\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\r\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\r\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\r\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\r\n\r\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\r\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\r\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\r\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\r\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\r\n\r\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\r\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\r\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\r\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\r\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\r\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\r\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\r\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\r\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\r\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\r\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\r\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\r\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\r\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\r\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\r\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\r\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\r\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\r\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\r\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\r\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\r\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\r\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\r\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\r\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\r\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\r\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\r\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\r\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\r\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\r\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\r\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\r\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\r\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\r\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\r\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\r\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\r\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\r\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\r\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\r\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\r\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\r\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\r\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\r\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\r\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\r\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\r\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\r\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\r\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\r\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\r\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\r\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\r\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\r\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\r\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\r\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\r\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\r\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\r\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\r\n\t\t\t\t\tdefault: seen = false;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\t/* PivotTable */\r\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\r\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\r\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\r\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\r\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\r\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\r\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\r\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\r\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\r\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\r\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\r\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\r\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\r\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\r\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\r\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\r\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\r\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\r\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\r\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\r\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\r\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\r\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\r\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\r\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\r\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\r\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\r\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\r\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\r\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\r\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\r\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\r\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\r\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\r\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\r\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\r\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\r\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\r\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\r\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\r\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\r\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\r\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\r\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\r\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\r\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\r\n\t\t\t\t\tdefault: seen = false;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\t/* PageBreaks */\r\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\r\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\r\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\r\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\r\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\r\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\r\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\r\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\r\n\t\t\t\t\tdefault: seen = false;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\t/* AutoFilter */\r\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\r\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\r\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\r\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\r\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\r\n\t\t\t\t\tdefault: seen = false;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\t/* QueryTable */\r\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\r\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\r\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\r\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\r\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\r\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\r\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\r\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\r\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\r\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\r\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\r\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\r\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\r\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\r\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\r\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\r\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\r\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\r\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\r\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\r\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\r\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\r\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\r\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\r\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\r\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\r\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\r\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\r\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\r\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\r\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\r\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\r\n\t\t\t\t\tdefault: seen = false;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\r\n\t\t\t\tswitch(Rn[3]) {\r\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\r\n\r\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\r\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\r\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\r\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\r\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\r\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\r\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\r\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\r\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\r\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\r\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\r\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\r\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\r\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\r\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\r\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\r\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\r\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\r\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\r\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\r\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\r\n\r\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\r\n\t\t\t\t\tdefault: seen = false;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\r\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\r\n\t\t\t\tswitch(Rn[3]) {\r\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\r\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\r\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\r\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\r\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\r\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\r\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\r\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\r\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\r\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\r\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\r\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\r\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\r\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\r\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\r\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\r\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\r\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\r\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\r\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\r\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\r\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\r\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\r\n\t\t\t\t\tdefault: seen = false;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\t/* MapInfo (schema) */\r\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\r\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\r\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\r\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\r\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\r\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\r\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\r\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\r\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\r\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\r\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\r\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\r\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\r\n\t\t\t\t\tcase 'element' /*case 'element'*/:\r\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\r\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\r\n\t\t\t\t\tcase 'all' /*case 'all'*/:\r\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\r\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\r\n\r\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\r\n\t\t\t\t\tdefault: seen = false;\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\t/* SmartTags (can be anything) */\r\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\r\n\r\n\t\t\t\tdefault: seen = false; break;\r\n\t\t\t}\r\n\t\t\tif(seen) break;\r\n\t\t\t/* CustomDocumentProperties */\r\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\r\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\r\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\r\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\r\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\r\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\r\n\t}\r\n\tvar out = ({});\r\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\r\n\tout.SheetNames = sheetnames;\r\n\tout.Workbook = Workbook;\r\n\tout.SSF = dup(table_fmt);\r\n\tout.Props = Props;\r\n\tout.Custprops = Custprops;\r\n\tout.bookType = \"xlml\";\r\n\treturn out;\r\n}\r\n\r\nfunction parse_xlml(data, opts) {\r\n\tfix_read_opts(opts=opts||{});\r\n\tswitch(opts.type||\"base64\") {\r\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\r\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\r\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\r\n\t}\r\n}\r\n\r\n/* TODO */\r\nfunction write_props_xlml(wb, opts) {\r\n\tvar o = [];\r\n\t/* DocumentProperties */\r\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\r\n\t/* CustomDocumentProperties */\r\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\r\n\treturn o.join(\"\");\r\n}\r\n/* TODO */\r\nfunction write_wb_xlml(wb) {\r\n\t/* OfficeDocumentSettings */\r\n\t/* ExcelWorkbook */\r\n\tif((((wb||{}).Workbook||{}).WBProps||{}).date1904) return '';\r\n\treturn \"\";\r\n}\r\n/* TODO */\r\nfunction write_sty_xlml(wb, opts) {\r\n\t/* Styles */\r\n\tvar styles = [''];\r\n\topts.cellXfs.forEach(function(xf, id) {\r\n\t\tvar payload = [];\r\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\r\n\r\n\t\tvar o = {\"ss:ID\": \"s\" + (21+id)};\r\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\r\n\t});\r\n\treturn writextag(\"Styles\", styles.join(\"\"));\r\n}\r\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name.slice(0,6) == \"_xlnm.\" ? n.Name.slice(6) : n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\r\nfunction write_names_xlml(wb) {\r\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\r\nvar names = wb.Workbook.Names;\r\n\tvar out = [];\r\n\tfor(var i = 0; i < names.length; ++i) {\r\n\t\tvar n = names[i];\r\n\t\tif(n.Sheet != null) continue;\r\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\r\n\t\tout.push(write_name_xlml(n));\r\n\t}\r\n\treturn writextag(\"Names\", out.join(\"\"));\r\n}\r\nfunction write_ws_xlml_names(ws, opts, idx, wb) {\r\n\tif(!ws) return \"\";\r\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\r\nvar names = wb.Workbook.Names;\r\n\tvar out = [];\r\n\tfor(var i = 0; i < names.length; ++i) {\r\n\t\tvar n = names[i];\r\n\t\tif(n.Sheet != idx) continue;\r\n\t\t/*switch(n.Name) {\r\n\t\t\tcase \"_\": continue;\r\n\t\t}*/\r\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\r\n\t\tout.push(write_name_xlml(n));\r\n\t}\r\n\treturn out.join(\"\");\r\n}\r\n/* WorksheetOptions */\r\nfunction write_ws_xlml_wsopts(ws, opts, idx, wb) {\r\n\tif(!ws) return \"\";\r\n\tvar o = [];\r\n\t/* NOTE: spec technically allows any order, but stick with implied order */\r\n\r\n\t/* FitToPage */\r\n\t/* DoNotDisplayColHeaders */\r\n\t/* DoNotDisplayRowHeaders */\r\n\t/* ViewableRange */\r\n\t/* Selection */\r\n\t/* GridlineColor */\r\n\t/* Name */\r\n\t/* ExcelWorksheetType */\r\n\t/* IntlMacro */\r\n\t/* Unsynced */\r\n\t/* Selected */\r\n\t/* CodeName */\r\n\r\n\tif(ws['!margins']) {\r\n\t\to.push(\"\");\r\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\r\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\r\n\t\to.push(writextag(\"PageMargins\", null, {\r\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\r\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\r\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\r\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\r\n\t\t}));\r\n\t\to.push(\"\");\r\n\t}\r\n\r\n\t/* PageSetup */\r\n\t/* DisplayPageBreak */\r\n\t/* TransitionExpressionEvaluation */\r\n\t/* TransitionFormulaEntry */\r\n\t/* Print */\r\n\t/* Zoom */\r\n\t/* PageLayoutZoom */\r\n\t/* PageBreakZoom */\r\n\t/* ShowPageBreakZoom */\r\n\t/* DefaultRowHeight */\r\n\t/* DefaultColumnWidth */\r\n\t/* StandardWidth */\r\n\r\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\r\n\t\t/* Visible */\r\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\r\n\t\telse {\r\n\t\t\t/* Selected */\r\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\r\n\t\t\tif(i == idx) o.push(\"\");\r\n\t\t}\r\n\t}\r\n\r\n\t/* LeftColumnVisible */\r\n\r\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"\");\r\n\r\n\t/* GridlineColorIndex */\r\n\t/* DisplayFormulas */\r\n\t/* DoNotDisplayGridlines */\r\n\t/* DoNotDisplayHeadings */\r\n\t/* DoNotDisplayOutline */\r\n\t/* ApplyAutomaticOutlineStyles */\r\n\t/* NoSummaryRowsBelowDetail */\r\n\t/* NoSummaryColumnsRightDetail */\r\n\t/* DoNotDisplayZeros */\r\n\t/* ActiveRow */\r\n\t/* ActiveColumn */\r\n\t/* FilterOn */\r\n\t/* RangeSelection */\r\n\t/* TopRowVisible */\r\n\t/* TopRowBottomPane */\r\n\t/* LeftColumnRightPane */\r\n\t/* ActivePane */\r\n\t/* SplitHorizontal */\r\n\t/* SplitVertical */\r\n\t/* FreezePanes */\r\n\t/* FrozenNoSplit */\r\n\t/* TabColorIndex */\r\n\t/* Panes */\r\n\r\n\t/* NOTE: Password not supported in XLML Format */\r\n\tif(ws['!protect']) {\r\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\r\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\r\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\r\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\r\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\r\n\t[\r\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\r\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\r\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\r\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\r\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\r\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\r\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\r\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\r\n\t\t[ \"sort\", \"AllowSort\" ],\r\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\r\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\r\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\r\n\t}\r\n\r\n\tif(o.length == 0) return \"\";\r\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\r\n}\r\nfunction write_ws_xlml_comment(comments) {\r\n\treturn comments.map(function(c) {\r\n\t\t// TODO: formatted text\r\n\t\tvar t = xlml_unfixstr(c.t||\"\");\r\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\r\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\r\n\t}).join(\"\");\r\n}\r\nfunction write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr){\r\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\r\n\r\n\tvar attr = {};\r\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\r\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\r\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\r\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\r\n\t}\r\n\r\n\tif(cell.l && cell.l.Target) {\r\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\r\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\r\n\t}\r\n\r\n\tif(ws['!merges']) {\r\n\t\tvar marr = ws['!merges'];\r\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\r\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\r\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\r\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\r\n\t\t}\r\n\t}\r\n\r\n\tvar t = \"\", p = \"\";\r\n\tswitch(cell.t) {\r\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\r\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\r\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\r\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\r\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\r\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\r\n\t}\r\n\t/* TODO: cell style */\r\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\r\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\r\n\tattr[\"ss:Index\"] = addr.c + 1;\r\n\tvar _v = (cell.v != null ? p : \"\");\r\n\tvar m = cell.t == 'z' ? \"\" : ('' + _v + '');\r\n\r\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\r\n\r\n\treturn writextag(\"Cell\", m, attr);\r\n}\r\nfunction write_ws_xlml_row(R, row) {\r\n\tvar o = '';\r\n}\r\n/* TODO */\r\nfunction write_ws_xlml_table(ws, opts, idx, wb) {\r\n\tif(!ws['!ref']) return \"\";\r\n\tvar range = safe_decode_range(ws['!ref']);\r\n\tvar marr = ws['!merges'] || [], mi = 0;\r\n\tvar o = [];\r\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\r\n\t\tprocess_col(n);\r\n\t\tvar w = !!n.width;\r\n\t\tvar p = col_obj_w(i, n);\r\n\t\tvar k = {\"ss:Index\":i+1};\r\n\t\tif(w) k['ss:Width'] = width2px(p.width);\r\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\r\n\t\to.push(writextag(\"Column\",null,k));\r\n\t});\r\n\tvar dense = Array.isArray(ws);\r\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\r\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\r\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\r\n\t\t\tvar skip = false;\r\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\r\n\t\t\t\tif(marr[mi].s.c > C) continue;\r\n\t\t\t\tif(marr[mi].s.r > R) continue;\r\n\t\t\t\tif(marr[mi].e.c < C) continue;\r\n\t\t\t\tif(marr[mi].e.r < R) continue;\r\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(skip) continue;\r\n\t\t\tvar addr = {r:R,c:C};\r\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\r\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\r\n\t\t}\r\n\t\trow.push(\"\");\r\n\t\tif(row.length > 2) o.push(row.join(\"\"));\r\n\t}\r\n\treturn o.join(\"\");\r\n}\r\nfunction write_ws_xlml(idx, opts, wb) {\r\n\tvar o = [];\r\n\tvar s = wb.SheetNames[idx];\r\n\tvar ws = wb.Sheets[s];\r\n\r\n\tvar t = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\r\n\tif(t.length > 0) o.push(\"\" + t + \"\");\r\n\r\n\t/* Table */\r\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\r\n\tif(t.length > 0) o.push(\"
\" + t + \"
\");\r\n\r\n\t/* WorksheetOptions */\r\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\r\n\r\n\tif(ws[\"!autofilter\"]) o.push('');\r\n\r\n\treturn o.join(\"\");\r\n}\r\nfunction write_xlml(wb, opts) {\r\n\tif(!opts) opts = {};\r\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\r\n\tif(wb.SSF) {\r\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\r\n\t\t// $FlowIgnore\r\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\r\n\t\topts.ssf = wb.SSF;\r\n\t\topts.cellXfs = [];\r\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\r\n\t}\r\n\tvar d = [];\r\n\td.push(write_props_xlml(wb, opts));\r\n\td.push(write_wb_xlml(wb, opts));\r\n\td.push(\"\");\r\n\td.push(\"\");\r\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\r\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\r\n\td[2] = write_sty_xlml(wb, opts);\r\n\td[3] = write_names_xlml(wb, opts);\r\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\r\n\t\t'xmlns': XLMLNS.ss,\r\n\t\t'xmlns:o': XLMLNS.o,\r\n\t\t'xmlns:x': XLMLNS.x,\r\n\t\t'xmlns:ss': XLMLNS.ss,\r\n\t\t'xmlns:dt': XLMLNS.dt,\r\n\t\t'xmlns:html': XLMLNS.html\r\n\t});\r\n}\r\n/* [MS-OLEDS] 2.3.8 CompObjStream */\r\nfunction parse_compobj(obj) {\r\n\tvar v = {};\r\n\tvar o = obj.content;\r\n/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\r\n\to.l = 28;\r\n\r\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\r\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\r\n\r\n\tif(o.length - o.l <= 4) return v;\r\n\r\n\tvar m = o.read_shift(4);\r\n\tif(m == 0 || m > 40) return v;\r\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\r\n\r\n\tif(o.length - o.l <= 4) return v;\r\n\tm = o.read_shift(4);\r\n\tif(m !== 0x71b239f4) return v;\r\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\r\n\r\n\tm = o.read_shift(4);\r\n\tif(m == 0 || m > 40) return v;\r\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\r\n}\r\n\r\n/*\r\n\tContinue logic for:\r\n\t- 2.4.58 Continue 0x003c\r\n\t- 2.4.59 ContinueBigName 0x043c\r\n\t- 2.4.60 ContinueFrt 0x0812\r\n\t- 2.4.61 ContinueFrt11 0x0875\r\n\t- 2.4.62 ContinueFrt12 0x087f\r\n*/\r\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\r\nfunction slurp(RecordType, R, blob, length, opts) {\r\n\tvar l = length;\r\n\tvar bufs = [];\r\n\tvar d = blob.slice(blob.l,blob.l+l);\r\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\r\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002F /* FilePass */: case 0x0195 /* FileLock */: case 0x00E1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\r\n\t\tbreak;\r\n\tcase 0x0085 /* BoundSheet8 */:\r\n\t\tbreak;\r\n\tdefault:\r\n\t\topts.enc.insitu(d);\r\n\t}\r\n\tbufs.push(d);\r\n\tblob.l += l;\r\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\r\n\tvar start = 0;\r\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\r\n\t\tl = __readUInt16LE(blob,blob.l+2);\r\n\t\tstart = blob.l + 4;\r\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\r\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\r\n\t\t\tstart += 12;\r\n\t\t}\r\n\t\td = blob.slice(start,blob.l+4+l);\r\n\t\tbufs.push(d);\r\n\t\tblob.l += 4+l;\r\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\r\n\t}\r\n\tvar b = (bconcat(bufs));\r\n\tprep_blob(b, 0);\r\n\tvar ll = 0; b.lens = [];\r\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\r\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\r\n\treturn R.f(b, b.length, opts);\r\n}\r\n\r\nfunction safe_format_xf(p, opts, date1904) {\r\n\tif(p.t === 'z') return;\r\n\tif(!p.XF) return;\r\n\tvar fmtid = 0;\r\n\ttry {\r\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\r\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\r\n\t} catch(e) { if(opts.WTF) throw e; }\r\n\tif(!opts || opts.cellText !== false) try {\r\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\r\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\r\n\t\t\tif(p.t === 'n') {\r\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\r\n\t\t\t\telse p.w = SSF_general_num(p.v);\r\n\t\t\t}\r\n\t\t\telse p.w = SSF_general(p.v);\r\n\t\t}\r\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\r\n\t} catch(e) { if(opts.WTF) throw e; }\r\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\r\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\r\n\t}\r\n}\r\n\r\nfunction make_cell(val, ixfe, t) {\r\n\treturn ({v:val, ixfe:ixfe, t:t});\r\n}\r\n\r\n// 2.3.2\r\nfunction parse_workbook(blob, options) {\r\n\tvar wb = ({opts:{}});\r\n\tvar Sheets = {};\r\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\r\n\tvar out = ((options.dense ? [] : {}));\r\n\tvar Directory = {};\r\n\tvar range = ({});\r\n\tvar last_formula = null;\r\n\tvar sst = ([]);\r\n\tvar cur_sheet = \"\";\r\n\tvar Preamble = {};\r\n\tvar lastcell, last_cell = \"\", cc, cmnt, rngC, rngR;\r\n\tvar sharedf = {};\r\n\tvar arrayf = [];\r\n\tvar temp_val;\r\n\tvar country;\r\n\tvar XFs = []; /* XF records */\r\n\tvar palette = [];\r\n\tvar Workbook = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }), wsprops = {};\r\n\tvar get_rgb = function getrgb(icv) {\r\n\t\tif(icv < 8) return XLSIcv[icv];\r\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\r\n\t\treturn XLSIcv[icv];\r\n\t};\r\n\tvar process_cell_style = function pcs(cell, line, options) {\r\n\t\tvar xfd = line.XF.data;\r\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\r\n\t\tline.s = ({});\r\n\t\tline.s.patternType = xfd.patternType;\r\n\t\tvar t;\r\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\r\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\r\n\t};\r\n\tvar addcell = function addcell(cell, line, options) {\r\n\t\tif(file_depth > 1) return;\r\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\r\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\r\n\t\tdelete line.ixfe; delete line.XF;\r\n\t\tlastcell = cell;\r\n\t\tlast_cell = encode_cell(cell);\r\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\r\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\r\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\r\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\r\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\r\n\t\tif(options.cellFormula && line.f) {\r\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\r\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\r\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\r\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\r\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\r\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t{\r\n\t\t\tif(options.dense) {\r\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\r\n\t\t\t\tout[cell.r][cell.c] = line;\r\n\t\t\t} else out[last_cell] = line;\r\n\t\t}\r\n\t};\r\n\tvar opts = ({\r\n\t\tenc: false, // encrypted\r\n\t\tsbcch: 0, // cch in the preceding SupBook\r\n\t\tsnames: [], // sheetnames\r\n\t\tsharedf: sharedf, // shared formulae by address\r\n\t\tarrayf: arrayf, // array formulae array\r\n\t\trrtabid: [], // RRTabId\r\n\t\tlastuser: \"\", // Last User from WriteAccess\r\n\t\tbiff: 8, // BIFF version\r\n\t\tcodepage: 0, // CP from CodePage record\r\n\t\twinlocked: 0, // fLockWn from WinProtect\r\n\t\tcellStyles: !!options && !!options.cellStyles,\r\n\t\tWTF: !!options && !!options.wtf\r\n\t});\r\n\tif(options.password) opts.password = options.password;\r\n\tvar themes;\r\n\tvar merges = [];\r\n\tvar objects = [];\r\n\tvar colinfo = [], rowinfo = [];\r\n\tvar seencol = false;\r\n\tvar supbooks = ([]); // 1-indexed, will hold extern names\r\n\tsupbooks.SheetNames = opts.snames;\r\n\tsupbooks.sharedf = opts.sharedf;\r\n\tsupbooks.arrayf = opts.arrayf;\r\n\tsupbooks.names = [];\r\n\tsupbooks.XTI = [];\r\n\tvar last_RT = 0;\r\n\tvar file_depth = 0; /* TODO: make a real stack */\r\n\tvar BIFF2Fmt = 0, BIFF2FmtTable = [];\r\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\r\n\tvar last_lbl;\r\n\r\n\t/* explicit override for some broken writers */\r\n\topts.codepage = 1200;\r\n\tset_cp(1200);\r\n\tvar seen_codepage = false;\r\n\twhile(blob.l < blob.length - 1) {\r\n\t\tvar s = blob.l;\r\n\t\tvar RecordType = blob.read_shift(2);\r\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\r\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\r\n\t\tvar R = XLSRecordEnum[RecordType];\r\n\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(RecordType) == -1 /* BOF */) break;\r\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\r\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\r\n\t\tif(R && R.f) {\r\n\t\t\tif(options.bookSheets) {\r\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\r\n\t\t\t}\r\n\t\t\tlast_RT = RecordType;\r\n\t\t\tif(R.r === 2 || R.r == 12) {\r\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\r\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\r\n\t\t\t\tif(R.r == 12){\r\n\t\t\t\t\tblob.l += 10; length -= 10;\r\n\t\t\t\t} // skip FRT\r\n\t\t\t}\r\n\t\t\t//console.error(R,blob.l,length,blob.length);\r\n\t\t\tvar val = ({});\r\n\t\t\tif(RecordType === 0x000a /* EOF */) val = R.f(blob, length, opts);\r\n\t\t\telse val = slurp(RecordType, R, blob, length, opts);\r\nif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* BOF */) continue;\r\n\t\t\tswitch(RecordType) {\r\n\t\t\t\tcase 0x0022 /* Date1904 */:\r\nwb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\r\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\r\n\t\t\t\tcase 0x002f /* FilePass */:\r\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\r\n\t\t\t\t\topts.enc = val;\r\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\r\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\r\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\r\n\t\t\t\tcase 0x0042 /* CodePage */:\r\n\t\t\t\t\tvar cpval = Number(val);\r\n\t\t\t\t\t/* overrides based on test cases */\r\n\t\t\t\t\tswitch(cpval) {\r\n\t\t\t\t\t\tcase 0x5212: cpval = 1200; break;\r\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\r\n\t\t\t\t\t\tcase 0x8001: cpval = 1252; break;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset_cp(opts.codepage = cpval);\r\n\t\t\t\t\tseen_codepage = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\r\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\r\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\r\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\r\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\r\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\r\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\r\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\r\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\r\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\r\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\r\n\t\t\t\tcase 0x0081 /* WsBool */:\r\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\r\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\r\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\r\n\t\t\t\t\tbreak; // TODO\r\n\t\t\t\tcase 0x00e0 /* XF */:\r\n\t\t\t\t\tXFs.push(val); break;\r\n\t\t\t\tcase 0x01ae /* SupBook */:\r\n\t\t\t\t\tsupbooks.push([val]);\r\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\r\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\r\n\t\t\t\t\tlast_lbl = ({\r\n\t\t\t\t\t\tName: val.Name,\r\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\r\n\t\t\t\t\tsupbooks.names.push(last_lbl);\r\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\r\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\r\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\r\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\r\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\r\n\t\t\t\tcase 0x0017 /* ExternSheet */:\r\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\r\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\r\n\t\t\t\tcase 0x0894 /* NameCmt */:\r\n\t\t\t\t\t/* TODO: search for correct name */\r\n\t\t\t\t\tif(opts.biff < 8) break;\r\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\r\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\r\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\r\n\t\t\t\t\tDirectory[val.pos] = val;\r\n\t\t\t\t\topts.snames.push(val.name);\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x000a /* EOF */: {\r\n\t\t\t\t\tif(--file_depth) break;\r\n\t\t\t\t\tif(range.e) {\r\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\r\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\r\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\r\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\r\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\r\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\r\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\r\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\r\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\r\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\r\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\r\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\r\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\r\n\t\t\t\t\tout = ((options.dense ? [] : {}));\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\r\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\r\n0x0009:2,\r\n0x0209:3,\r\n0x0409:4\r\n\t\t\t\t\t}[RecordType] || {\r\n0x0200:2,\r\n0x0300:3,\r\n0x0400:4,\r\n0x0500:5,\r\n0x0600:8,\r\n0x0002:2,\r\n0x0007:2\r\n\t\t\t\t\t}[val.BIFFVer] || 8;\r\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\r\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\r\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\r\n\t\t\t\t\tif(file_depth++) break;\r\n\t\t\t\t\tout = ((options.dense ? [] : {}));\r\n\r\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\r\n\r\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\r\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\r\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\r\n\t\t\t\t\t\t/* fake BoundSheet8 */\r\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\r\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\r\n\t\t\t\t\t\topts.snames.push(cur_sheet);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\r\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\r\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\r\n\t\t\t\t\tmerges = [];\r\n\t\t\t\t\tobjects = [];\r\n\t\t\t\t\topts.arrayf = arrayf = [];\r\n\t\t\t\t\tcolinfo = []; rowinfo = [];\r\n\t\t\t\t\tseencol = false;\r\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\r\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\r\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'});\r\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\r\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\r\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\r\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t});\r\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\r\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\r\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x027e /* RK */: {\r\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'});\r\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\r\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\r\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x00bd /* MulRk */: {\r\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\r\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\r\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'});\r\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\r\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\r\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\r\n\t\t\t\t\t}\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\r\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\r\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\r\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\r\n\t\t\t\t\tif(options.cellFormula) {\r\n\t\t\t\t\t\tvar _f = val.formula;\r\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\r\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\r\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\r\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\r\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\r\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\r\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\r\n\t\t\t\t\taddcell(val.cell, temp_val, options);\r\n\t\t\t\t\tlast_formula = val;\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\r\n\t\t\t\t\tif(last_formula) { /* technically always true */\r\n\t\t\t\t\t\tlast_formula.val = val;\r\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\r\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\r\n\t\t\t\t\t\tif(options.cellFormula) {\r\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\r\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\r\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\r\n\t\t\t\t\t\tlast_formula = null;\r\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\r\n\t\t\t\t\tarrayf.push(val);\r\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\r\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\r\n\t\t\t\t\tif(options.cellFormula && cc) {\r\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\r\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\r\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\r\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\r\n\t\t\t\t\t}\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\r\n\t\t\t\t\tif(!options.cellFormula) break;\r\n\t\t\t\t\tif(last_cell) {\r\n\t\t\t\t\t\t/* TODO: capture range */\r\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\r\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\r\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\r\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\r\n\t\t\t\t\t}\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x00fd /* LabelSst */:\r\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\r\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\r\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\r\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\r\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\r\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\r\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'});\r\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\r\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\r\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\r\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\r\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\r\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'});\r\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\r\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\r\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\r\n\t\t\t\t\t}\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x00d6 /* RString */:\r\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\r\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\r\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\r\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\r\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\r\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\r\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x00fc /* SST */: {\r\n\t\t\t\t\tsst = val;\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\r\n\t\t\t\t\tif(opts.biff == 4) {\r\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\r\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\r\n\t\t\t\t\t\tif(b4idx >= 163) SSF__load(val[1], BIFF2Fmt + 163);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse SSF__load(val[1], val[0]);\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\r\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\r\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\r\n\t\t\t\t\tif(b2idx >= 163) SSF__load(val, BIFF2Fmt + 163);\r\n\t\t\t\t} break;\r\n\r\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\r\n\r\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\r\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\r\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\r\n\r\n\t\t\t\tcase 0x01b8 /* HLink */: {\r\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\r\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\r\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\r\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\r\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\r\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\r\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\r\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x001c /* Note */: {\r\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\r\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\r\n\t\t\t\t\tvar noteobj = objects[val[2]];\r\n\t\t\t\t\tif(!cc) {\r\n\t\t\t\t\t\tif(options.dense) {\r\n\t\t\t\t\t\t\tif(!out[val[0].r]) out[val[0].r] = [];\r\n\t\t\t\t\t\t\tcc = out[val[0].r][val[0].c] = ({t:\"z\"});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\r\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\r\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\r\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(!cc.c) cc.c = [];\r\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\r\n\t\t\t\t\tcc.c.push(cmnt);\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\r\n\t\t\t\tcase 0x007d /* ColInfo */: {\r\n\t\t\t\t\tif(!opts.cellStyles) break;\r\n\t\t\t\t\twhile(val.e >= val.s) {\r\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\r\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\r\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x0208 /* Row */: {\r\n\t\t\t\t\tvar rowobj = {};\r\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\r\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\r\n\t\t\t\t\tif(val.hpt) {\r\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\r\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\r\n\t\t\t\t\t}\r\n\t\t\t\t} break;\r\n\t\t\t\tcase 0x0026 /* LeftMargin */:\r\n\t\t\t\tcase 0x0027 /* RightMargin */:\r\n\t\t\t\tcase 0x0028 /* TopMargin */:\r\n\t\t\t\tcase 0x0029 /* BottomMargin */:\r\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\r\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\r\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\r\n\t\t\t\t\tout['!margins'].header = val.header;\r\n\t\t\t\t\tout['!margins'].footer = val.footer;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\r\n\t\t\t\t\t// $FlowIgnore\r\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\r\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\r\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\r\n\t\t\t\tcase 0x01ba /* CodeName */: {\r\nif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\r\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\r\n\t\t\t\t} break;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\r\n\t\t\tblob.l += length;\r\n\t\t}\r\n\t}\r\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\r\n\tif(!options.bookSheets) wb.Sheets=Sheets;\r\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\r\n\t\twb.SheetNames.push(\"Sheet1\");\r\n\t\t/*jshint -W069 */\r\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\r\n\t\t/*jshint +W069 */\r\n\t} else wb.Preamble=Preamble;\r\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\r\n\twb.Strings = sst;\r\n\twb.SSF = dup(table_fmt);\r\n\tif(opts.enc) wb.Encryption = opts.enc;\r\n\tif(themes) wb.Themes = themes;\r\n\twb.Metadata = {};\r\n\tif(country !== undefined) wb.Metadata.Country = country;\r\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\r\n\twb.Workbook = Workbook;\r\n\treturn wb;\r\n}\r\n\r\n/* TODO: split props*/\r\nvar PSCLSID = {\r\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\r\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\r\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\r\n};\r\nfunction parse_xls_props(cfb, props, o) {\r\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\r\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\r\n\tif(DSI && DSI.size > 0) try {\r\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\r\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\r\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\r\n\r\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\r\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\r\n\tif(SI && SI.size > 0) try {\r\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\r\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\r\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\r\n\r\n\tif(props.HeadingPairs && props.TitlesOfParts) {\r\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\r\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\r\n\t}\r\n}\r\nfunction write_xls_props(wb, cfb) {\r\n\tvar DSEntries = [], SEntries = [], CEntries = [];\r\n\tvar i = 0, Keys;\r\n\tvar DocSummaryRE = evert_key(DocSummaryPIDDSI, \"n\");\r\n\tvar SummaryRE = evert_key(SummaryPIDSI, \"n\");\r\n\tif(wb.Props) {\r\n\t\tKeys = keys(wb.Props);\r\n\t\t// $FlowIgnore\r\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\r\n\t}\r\n\tif(wb.Custprops) {\r\n\t\tKeys = keys(wb.Custprops);\r\n\t\t// $FlowIgnore\r\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\r\n\t}\r\n\tvar CEntries2 = [];\r\n\tfor(i = 0; i < CEntries.length; ++i) {\r\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\r\n\t\tif(CEntries[i][1] == null) continue;\r\n\t\tCEntries2.push(CEntries[i]);\r\n\t}\r\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\r\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\r\n}\r\n\r\nfunction parse_xlscfb(cfb, options) {\r\nif(!options) options = {};\r\nfix_read_opts(options);\r\nreset_cp();\r\nif(options.codepage) set_ansi(options.codepage);\r\nvar CompObj, WB;\r\nif(cfb.FullPaths) {\r\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\r\n\tCompObj = CFB.find(cfb, '!CompObj');\r\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\r\n} else {\r\n\tswitch(options.type) {\r\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\r\n\t\tcase 'binary': cfb = s2a(cfb); break;\r\n\t\tcase 'buffer': break;\r\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\r\n\t}\r\n\tprep_blob(cfb, 0);\r\n\tWB = ({content: cfb});\r\n}\r\nvar WorkbookP;\r\n\r\nvar _data;\r\nif(CompObj) parse_compobj(CompObj);\r\nif(options.bookProps && !options.bookSheets) WorkbookP = ({});\r\nelse {\r\n\tvar T = has_buf ? 'buffer' : 'array';\r\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\r\n\t/* Quattro Pro 7-8 */\r\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\r\n\t/* Quattro Pro 9 */\r\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\r\n\t/* Works 4 for Mac */\r\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\r\n\telse throw new Error(\"Cannot find Workbook stream\");\r\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\r\n}\r\n\r\nvar props = {};\r\nif(cfb.FullPaths) parse_xls_props(cfb, props, options);\r\n\r\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\r\nif(options.bookFiles) WorkbookP.cfb = cfb;\r\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\r\nreturn WorkbookP;\r\n}\r\n\r\n\r\nfunction write_xlscfb(wb, opts) {\r\n\tvar o = opts || {};\r\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\r\n\tvar wbpath = \"/Workbook\";\r\n\tswitch(o.bookType || \"xls\") {\r\n\t\tcase \"xls\": o.bookType = \"biff8\";\r\n\t\t/* falls through */\r\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\r\n\t\t/* falls through */\r\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\r\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\r\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\r\n\t}\r\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\r\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\r\n\t// TODO: SI, DSI, CO\r\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\r\n\treturn cfb;\r\n}\r\n/* [MS-XLSB] 2.3 Record Enumeration */\r\nvar XLSBRecordEnum = {\r\n0x0000: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\r\n0x0001: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\r\n0x0002: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\r\n0x0003: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\r\n0x0004: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\r\n0x0005: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\r\n0x0006: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\r\n0x0007: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\r\n0x0008: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\r\n0x0009: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\r\n0x000A: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\r\n0x000B: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\r\n0x000C: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\r\n0x000D: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\r\n0x000E: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\r\n0x000F: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\r\n0x0010: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\r\n0x0011: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\r\n0x0012: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\r\n0x0013: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\r\n0x0014: { /* n:\"BrtPCDIMissing\" */ },\r\n0x0015: { /* n:\"BrtPCDINumber\" */ },\r\n0x0016: { /* n:\"BrtPCDIBoolean\" */ },\r\n0x0017: { /* n:\"BrtPCDIError\" */ },\r\n0x0018: { /* n:\"BrtPCDIString\" */ },\r\n0x0019: { /* n:\"BrtPCDIDatetime\" */ },\r\n0x001A: { /* n:\"BrtPCDIIndex\" */ },\r\n0x001B: { /* n:\"BrtPCDIAMissing\" */ },\r\n0x001C: { /* n:\"BrtPCDIANumber\" */ },\r\n0x001D: { /* n:\"BrtPCDIABoolean\" */ },\r\n0x001E: { /* n:\"BrtPCDIAError\" */ },\r\n0x001F: { /* n:\"BrtPCDIAString\" */ },\r\n0x0020: { /* n:\"BrtPCDIADatetime\" */ },\r\n0x0021: { /* n:\"BrtPCRRecord\" */ },\r\n0x0022: { /* n:\"BrtPCRRecordDt\" */ },\r\n0x0023: { /* n:\"BrtFRTBegin\", */ T:1 },\r\n0x0024: { /* n:\"BrtFRTEnd\", */ T:-1 },\r\n0x0025: { /* n:\"BrtACBegin\", */ T:1 },\r\n0x0026: { /* n:\"BrtACEnd\", */ T:-1 },\r\n0x0027: { /* n:\"BrtName\", */ f:parse_BrtName },\r\n0x0028: { /* n:\"BrtIndexRowBlock\" */ },\r\n0x002A: { /* n:\"BrtIndexBlock\" */ },\r\n0x002B: { /* n:\"BrtFont\", */ f:parse_BrtFont },\r\n0x002C: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\r\n0x002D: { /* n:\"BrtFill\", */ f:parse_BrtFill },\r\n0x002E: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\r\n0x002F: { /* n:\"BrtXF\", */ f:parse_BrtXF },\r\n0x0030: { /* n:\"BrtStyle\" */ },\r\n0x0031: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\r\n0x0032: { /* n:\"BrtValueMeta\" */ },\r\n0x0033: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\r\n0x0034: { /* n:\"BrtBeginFmd\", */ T:1 },\r\n0x0035: { /* n:\"BrtEndFmd\", */ T:-1 },\r\n0x0036: { /* n:\"BrtBeginMdx\", */ T:1 },\r\n0x0037: { /* n:\"BrtEndMdx\", */ T:-1 },\r\n0x0038: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\r\n0x0039: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\r\n0x003A: { /* n:\"BrtMdxMbrIstr\" */ },\r\n0x003B: { /* n:\"BrtStr\" */ },\r\n0x003C: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\r\n0x003E: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\r\n0x003F: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\r\n0x0040: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\r\n0x0041: { /* n:\"BrtSxvcellNum\" */ },\r\n0x0042: { /* n:\"BrtSxvcellStr\" */ },\r\n0x0043: { /* n:\"BrtSxvcellBool\" */ },\r\n0x0044: { /* n:\"BrtSxvcellErr\" */ },\r\n0x0045: { /* n:\"BrtSxvcellDate\" */ },\r\n0x0046: { /* n:\"BrtSxvcellNil\" */ },\r\n0x0080: { /* n:\"BrtFileVersion\" */ },\r\n0x0081: { /* n:\"BrtBeginSheet\", */ T:1 },\r\n0x0082: { /* n:\"BrtEndSheet\", */ T:-1 },\r\n0x0083: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\r\n0x0084: { /* n:\"BrtEndBook\", */ T:-1 },\r\n0x0085: { /* n:\"BrtBeginWsViews\", */ T:1 },\r\n0x0086: { /* n:\"BrtEndWsViews\", */ T:-1 },\r\n0x0087: { /* n:\"BrtBeginBookViews\", */ T:1 },\r\n0x0088: { /* n:\"BrtEndBookViews\", */ T:-1 },\r\n0x0089: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\r\n0x008A: { /* n:\"BrtEndWsView\", */ T:-1 },\r\n0x008B: { /* n:\"BrtBeginCsViews\", */ T:1 },\r\n0x008C: { /* n:\"BrtEndCsViews\", */ T:-1 },\r\n0x008D: { /* n:\"BrtBeginCsView\", */ T:1 },\r\n0x008E: { /* n:\"BrtEndCsView\", */ T:-1 },\r\n0x008F: { /* n:\"BrtBeginBundleShs\", */ T:1 },\r\n0x0090: { /* n:\"BrtEndBundleShs\", */ T:-1 },\r\n0x0091: { /* n:\"BrtBeginSheetData\", */ T:1 },\r\n0x0092: { /* n:\"BrtEndSheetData\", */ T:-1 },\r\n0x0093: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\r\n0x0094: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\r\n0x0097: { /* n:\"BrtPane\", */ f:parse_BrtPane },\r\n0x0098: { /* n:\"BrtSel\" */ },\r\n0x0099: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\r\n0x009A: { /* n:\"BrtWbFactoid\" */ },\r\n0x009B: { /* n:\"BrtFileRecover\" */ },\r\n0x009C: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\r\n0x009D: { /* n:\"BrtCalcProp\" */ },\r\n0x009E: { /* n:\"BrtBookView\" */ },\r\n0x009F: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\r\n0x00A0: { /* n:\"BrtEndSst\", */ T:-1 },\r\n0x00A1: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\r\n0x00A2: { /* n:\"BrtEndAFilter\", */ T:-1 },\r\n0x00A3: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\r\n0x00A4: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\r\n0x00A5: { /* n:\"BrtBeginFilters\", */ T:1 },\r\n0x00A6: { /* n:\"BrtEndFilters\", */ T:-1 },\r\n0x00A7: { /* n:\"BrtFilter\" */ },\r\n0x00A8: { /* n:\"BrtColorFilter\" */ },\r\n0x00A9: { /* n:\"BrtIconFilter\" */ },\r\n0x00AA: { /* n:\"BrtTop10Filter\" */ },\r\n0x00AB: { /* n:\"BrtDynamicFilter\" */ },\r\n0x00AC: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\r\n0x00AD: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\r\n0x00AE: { /* n:\"BrtCustomFilter\" */ },\r\n0x00AF: { /* n:\"BrtAFilterDateGroupItem\" */ },\r\n0x00B0: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\r\n0x00B1: { /* n:\"BrtBeginMergeCells\", */ T:1 },\r\n0x00B2: { /* n:\"BrtEndMergeCells\", */ T:-1 },\r\n0x00B3: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\r\n0x00B4: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\r\n0x00B5: { /* n:\"BrtBeginPCDFields\", */ T:1 },\r\n0x00B6: { /* n:\"BrtEndPCDFields\", */ T:-1 },\r\n0x00B7: { /* n:\"BrtBeginPCDField\", */ T:1 },\r\n0x00B8: { /* n:\"BrtEndPCDField\", */ T:-1 },\r\n0x00B9: { /* n:\"BrtBeginPCDSource\", */ T:1 },\r\n0x00BA: { /* n:\"BrtEndPCDSource\", */ T:-1 },\r\n0x00BB: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\r\n0x00BC: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\r\n0x00BD: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\r\n0x00BE: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\r\n0x00BF: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\r\n0x00C0: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\r\n0x00C1: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\r\n0x00C2: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\r\n0x00C3: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\r\n0x00C4: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\r\n0x00C5: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\r\n0x00C6: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\r\n0x00C7: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\r\n0x00C8: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\r\n0x00C9: { /* n:\"BrtBeginExtConnection\", */ T:1 },\r\n0x00CA: { /* n:\"BrtEndExtConnection\", */ T:-1 },\r\n0x00CB: { /* n:\"BrtBeginECDbProps\", */ T:1 },\r\n0x00CC: { /* n:\"BrtEndECDbProps\", */ T:-1 },\r\n0x00CD: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\r\n0x00CE: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\r\n0x00CF: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\r\n0x00D0: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\r\n0x00D1: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\r\n0x00D2: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\r\n0x00D3: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\r\n0x00D4: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\r\n0x00D5: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\r\n0x00D6: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\r\n0x00D7: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\r\n0x00D8: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\r\n0x00D9: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\r\n0x00DA: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\r\n0x00DB: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\r\n0x00DC: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\r\n0x00DD: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\r\n0x00DE: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\r\n0x00DF: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\r\n0x00E0: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\r\n0x00E1: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\r\n0x00E2: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\r\n0x00E3: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\r\n0x00E4: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\r\n0x00E5: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\r\n0x00E6: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\r\n0x00E7: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\r\n0x00E8: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\r\n0x00E9: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\r\n0x00EA: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\r\n0x00EB: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\r\n0x00EC: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\r\n0x00ED: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\r\n0x00EE: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\r\n0x00EF: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\r\n0x00F0: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\r\n0x00F1: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\r\n0x00F2: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\r\n0x00F3: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\r\n0x00F4: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\r\n0x00F5: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\r\n0x00F6: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\r\n0x00F7: { /* n:\"BrtBeginPRule\", */ T:1 },\r\n0x00F8: { /* n:\"BrtEndPRule\", */ T:-1 },\r\n0x00F9: { /* n:\"BrtBeginPRFilters\", */ T:1 },\r\n0x00FA: { /* n:\"BrtEndPRFilters\", */ T:-1 },\r\n0x00FB: { /* n:\"BrtBeginPRFilter\", */ T:1 },\r\n0x00FC: { /* n:\"BrtEndPRFilter\", */ T:-1 },\r\n0x00FD: { /* n:\"BrtBeginPNames\", */ T:1 },\r\n0x00FE: { /* n:\"BrtEndPNames\", */ T:-1 },\r\n0x00FF: { /* n:\"BrtBeginPName\", */ T:1 },\r\n0x0100: { /* n:\"BrtEndPName\", */ T:-1 },\r\n0x0101: { /* n:\"BrtBeginPNPairs\", */ T:1 },\r\n0x0102: { /* n:\"BrtEndPNPairs\", */ T:-1 },\r\n0x0103: { /* n:\"BrtBeginPNPair\", */ T:1 },\r\n0x0104: { /* n:\"BrtEndPNPair\", */ T:-1 },\r\n0x0105: { /* n:\"BrtBeginECWebProps\", */ T:1 },\r\n0x0106: { /* n:\"BrtEndECWebProps\", */ T:-1 },\r\n0x0107: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\r\n0x0108: { /* n:\"BrtEndECWPTables\", */ T:-1 },\r\n0x0109: { /* n:\"BrtBeginECParams\", */ T:1 },\r\n0x010A: { /* n:\"BrtEndECParams\", */ T:-1 },\r\n0x010B: { /* n:\"BrtBeginECParam\", */ T:1 },\r\n0x010C: { /* n:\"BrtEndECParam\", */ T:-1 },\r\n0x010D: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\r\n0x010E: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\r\n0x010F: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\r\n0x0110: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\r\n0x0111: { /* n:\"BrtBeginDims\", */ T:1 },\r\n0x0112: { /* n:\"BrtEndDims\", */ T:-1 },\r\n0x0113: { /* n:\"BrtBeginDim\", */ T:1 },\r\n0x0114: { /* n:\"BrtEndDim\", */ T:-1 },\r\n0x0115: { /* n:\"BrtIndexPartEnd\" */ },\r\n0x0116: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\r\n0x0117: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\r\n0x0118: { /* n:\"BrtBeginSXView\", */ T:1 },\r\n0x0119: { /* n:\"BrtEndSXVI\", */ T:-1 },\r\n0x011A: { /* n:\"BrtBeginSXVI\", */ T:1 },\r\n0x011B: { /* n:\"BrtBeginSXVIs\", */ T:1 },\r\n0x011C: { /* n:\"BrtEndSXVIs\", */ T:-1 },\r\n0x011D: { /* n:\"BrtBeginSXVD\", */ T:1 },\r\n0x011E: { /* n:\"BrtEndSXVD\", */ T:-1 },\r\n0x011F: { /* n:\"BrtBeginSXVDs\", */ T:1 },\r\n0x0120: { /* n:\"BrtEndSXVDs\", */ T:-1 },\r\n0x0121: { /* n:\"BrtBeginSXPI\", */ T:1 },\r\n0x0122: { /* n:\"BrtEndSXPI\", */ T:-1 },\r\n0x0123: { /* n:\"BrtBeginSXPIs\", */ T:1 },\r\n0x0124: { /* n:\"BrtEndSXPIs\", */ T:-1 },\r\n0x0125: { /* n:\"BrtBeginSXDI\", */ T:1 },\r\n0x0126: { /* n:\"BrtEndSXDI\", */ T:-1 },\r\n0x0127: { /* n:\"BrtBeginSXDIs\", */ T:1 },\r\n0x0128: { /* n:\"BrtEndSXDIs\", */ T:-1 },\r\n0x0129: { /* n:\"BrtBeginSXLI\", */ T:1 },\r\n0x012A: { /* n:\"BrtEndSXLI\", */ T:-1 },\r\n0x012B: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\r\n0x012C: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\r\n0x012D: { /* n:\"BrtBeginSXLICols\", */ T:1 },\r\n0x012E: { /* n:\"BrtEndSXLICols\", */ T:-1 },\r\n0x012F: { /* n:\"BrtBeginSXFormat\", */ T:1 },\r\n0x0130: { /* n:\"BrtEndSXFormat\", */ T:-1 },\r\n0x0131: { /* n:\"BrtBeginSXFormats\", */ T:1 },\r\n0x0132: { /* n:\"BrtEndSxFormats\", */ T:-1 },\r\n0x0133: { /* n:\"BrtBeginSxSelect\", */ T:1 },\r\n0x0134: { /* n:\"BrtEndSxSelect\", */ T:-1 },\r\n0x0135: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\r\n0x0136: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\r\n0x0137: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\r\n0x0138: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\r\n0x0139: { /* n:\"BrtEndSXLocation\", */ T:-1 },\r\n0x013A: { /* n:\"BrtBeginSXLocation\", */ T:1 },\r\n0x013B: { /* n:\"BrtEndSXView\", */ T:-1 },\r\n0x013C: { /* n:\"BrtBeginSXTHs\", */ T:1 },\r\n0x013D: { /* n:\"BrtEndSXTHs\", */ T:-1 },\r\n0x013E: { /* n:\"BrtBeginSXTH\", */ T:1 },\r\n0x013F: { /* n:\"BrtEndSXTH\", */ T:-1 },\r\n0x0140: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\r\n0x0141: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\r\n0x0142: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\r\n0x0143: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\r\n0x0144: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\r\n0x0145: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\r\n0x0146: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\r\n0x0147: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\r\n0x0148: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\r\n0x0149: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\r\n0x014A: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\r\n0x014B: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\r\n0x014C: { /* n:\"BrtBeginMetadata\", */ T:1 },\r\n0x014D: { /* n:\"BrtEndMetadata\", */ T:-1 },\r\n0x014E: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\r\n0x014F: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\r\n0x0150: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\r\n0x0151: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\r\n0x0152: { /* n:\"BrtEndEsmdb\", */ T:-1 },\r\n0x0153: { /* n:\"BrtBeginEsfmd\", */ T:1 },\r\n0x0154: { /* n:\"BrtEndEsfmd\", */ T:-1 },\r\n0x0155: { /* n:\"BrtBeginSingleCells\", */ T:1 },\r\n0x0156: { /* n:\"BrtEndSingleCells\", */ T:-1 },\r\n0x0157: { /* n:\"BrtBeginList\", */ T:1 },\r\n0x0158: { /* n:\"BrtEndList\", */ T:-1 },\r\n0x0159: { /* n:\"BrtBeginListCols\", */ T:1 },\r\n0x015A: { /* n:\"BrtEndListCols\", */ T:-1 },\r\n0x015B: { /* n:\"BrtBeginListCol\", */ T:1 },\r\n0x015C: { /* n:\"BrtEndListCol\", */ T:-1 },\r\n0x015D: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\r\n0x015E: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\r\n0x015F: { /* n:\"BrtListCCFmla\" */ },\r\n0x0160: { /* n:\"BrtListTrFmla\" */ },\r\n0x0161: { /* n:\"BrtBeginExternals\", */ T:1 },\r\n0x0162: { /* n:\"BrtEndExternals\", */ T:-1 },\r\n0x0163: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\r\n0x0165: { /* n:\"BrtSupSelf\" */ },\r\n0x0166: { /* n:\"BrtSupSame\" */ },\r\n0x0167: { /* n:\"BrtSupTabs\" */ },\r\n0x0168: { /* n:\"BrtBeginSupBook\", */ T:1 },\r\n0x0169: { /* n:\"BrtPlaceholderName\" */ },\r\n0x016A: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\r\n0x016B: { /* n:\"BrtExternTableStart\" */ },\r\n0x016C: { /* n:\"BrtExternTableEnd\" */ },\r\n0x016E: { /* n:\"BrtExternRowHdr\" */ },\r\n0x016F: { /* n:\"BrtExternCellBlank\" */ },\r\n0x0170: { /* n:\"BrtExternCellReal\" */ },\r\n0x0171: { /* n:\"BrtExternCellBool\" */ },\r\n0x0172: { /* n:\"BrtExternCellError\" */ },\r\n0x0173: { /* n:\"BrtExternCellString\" */ },\r\n0x0174: { /* n:\"BrtBeginEsmdx\", */ T:1 },\r\n0x0175: { /* n:\"BrtEndEsmdx\", */ T:-1 },\r\n0x0176: { /* n:\"BrtBeginMdxSet\", */ T:1 },\r\n0x0177: { /* n:\"BrtEndMdxSet\", */ T:-1 },\r\n0x0178: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\r\n0x0179: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\r\n0x017A: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\r\n0x017B: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\r\n0x017C: { /* n:\"BrtBeginEsstr\", */ T:1 },\r\n0x017D: { /* n:\"BrtEndEsstr\", */ T:-1 },\r\n0x017E: { /* n:\"BrtBeginPRFItem\", */ T:1 },\r\n0x017F: { /* n:\"BrtEndPRFItem\", */ T:-1 },\r\n0x0180: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\r\n0x0181: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\r\n0x0182: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\r\n0x0183: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\r\n0x0184: { /* n:\"BrtBeginISXVIs\", */ T:1 },\r\n0x0185: { /* n:\"BrtEndISXVIs\", */ T:-1 },\r\n0x0186: { /* n:\"BrtBeginColInfos\", */ T:1 },\r\n0x0187: { /* n:\"BrtEndColInfos\", */ T:-1 },\r\n0x0188: { /* n:\"BrtBeginRwBrk\", */ T:1 },\r\n0x0189: { /* n:\"BrtEndRwBrk\", */ T:-1 },\r\n0x018A: { /* n:\"BrtBeginColBrk\", */ T:1 },\r\n0x018B: { /* n:\"BrtEndColBrk\", */ T:-1 },\r\n0x018C: { /* n:\"BrtBrk\" */ },\r\n0x018D: { /* n:\"BrtUserBookView\" */ },\r\n0x018E: { /* n:\"BrtInfo\" */ },\r\n0x018F: { /* n:\"BrtCUsr\" */ },\r\n0x0190: { /* n:\"BrtUsr\" */ },\r\n0x0191: { /* n:\"BrtBeginUsers\", */ T:1 },\r\n0x0193: { /* n:\"BrtEOF\" */ },\r\n0x0194: { /* n:\"BrtUCR\" */ },\r\n0x0195: { /* n:\"BrtRRInsDel\" */ },\r\n0x0196: { /* n:\"BrtRREndInsDel\" */ },\r\n0x0197: { /* n:\"BrtRRMove\" */ },\r\n0x0198: { /* n:\"BrtRREndMove\" */ },\r\n0x0199: { /* n:\"BrtRRChgCell\" */ },\r\n0x019A: { /* n:\"BrtRREndChgCell\" */ },\r\n0x019B: { /* n:\"BrtRRHeader\" */ },\r\n0x019C: { /* n:\"BrtRRUserView\" */ },\r\n0x019D: { /* n:\"BrtRRRenSheet\" */ },\r\n0x019E: { /* n:\"BrtRRInsertSh\" */ },\r\n0x019F: { /* n:\"BrtRRDefName\" */ },\r\n0x01A0: { /* n:\"BrtRRNote\" */ },\r\n0x01A1: { /* n:\"BrtRRConflict\" */ },\r\n0x01A2: { /* n:\"BrtRRTQSIF\" */ },\r\n0x01A3: { /* n:\"BrtRRFormat\" */ },\r\n0x01A4: { /* n:\"BrtRREndFormat\" */ },\r\n0x01A5: { /* n:\"BrtRRAutoFmt\" */ },\r\n0x01A6: { /* n:\"BrtBeginUserShViews\", */ T:1 },\r\n0x01A7: { /* n:\"BrtBeginUserShView\", */ T:1 },\r\n0x01A8: { /* n:\"BrtEndUserShView\", */ T:-1 },\r\n0x01A9: { /* n:\"BrtEndUserShViews\", */ T:-1 },\r\n0x01AA: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\r\n0x01AB: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\r\n0x01AC: { /* n:\"BrtTable\" */ },\r\n0x01AD: { /* n:\"BrtBeginExtConnections\", */ T:1 },\r\n0x01AE: { /* n:\"BrtEndExtConnections\", */ T:-1 },\r\n0x01AF: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\r\n0x01B0: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\r\n0x01B1: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\r\n0x01B2: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\r\n0x01B3: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\r\n0x01B4: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\r\n0x01B5: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\r\n0x01B6: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\r\n0x01B7: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\r\n0x01B8: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\r\n0x01B9: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\r\n0x01BA: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\r\n0x01BB: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\r\n0x01BC: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\r\n0x01BD: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\r\n0x01BE: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\r\n0x01BF: { /* n:\"BrtBeginQSI\", */ T:1 },\r\n0x01C0: { /* n:\"BrtEndQSI\", */ T:-1 },\r\n0x01C1: { /* n:\"BrtBeginQSIR\", */ T:1 },\r\n0x01C2: { /* n:\"BrtEndQSIR\", */ T:-1 },\r\n0x01C3: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\r\n0x01C4: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\r\n0x01C5: { /* n:\"BrtBeginDeletedName\", */ T:1 },\r\n0x01C6: { /* n:\"BrtEndDeletedName\", */ T:-1 },\r\n0x01C7: { /* n:\"BrtBeginQSIFs\", */ T:1 },\r\n0x01C8: { /* n:\"BrtEndQSIFs\", */ T:-1 },\r\n0x01C9: { /* n:\"BrtBeginQSIF\", */ T:1 },\r\n0x01CA: { /* n:\"BrtEndQSIF\", */ T:-1 },\r\n0x01CB: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\r\n0x01CC: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\r\n0x01CD: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\r\n0x01CE: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\r\n0x01CF: { /* n:\"BrtBeginCFRule\", */ T:1 },\r\n0x01D0: { /* n:\"BrtEndCFRule\", */ T:-1 },\r\n0x01D1: { /* n:\"BrtBeginIconSet\", */ T:1 },\r\n0x01D2: { /* n:\"BrtEndIconSet\", */ T:-1 },\r\n0x01D3: { /* n:\"BrtBeginDatabar\", */ T:1 },\r\n0x01D4: { /* n:\"BrtEndDatabar\", */ T:-1 },\r\n0x01D5: { /* n:\"BrtBeginColorScale\", */ T:1 },\r\n0x01D6: { /* n:\"BrtEndColorScale\", */ T:-1 },\r\n0x01D7: { /* n:\"BrtCFVO\" */ },\r\n0x01D8: { /* n:\"BrtExternValueMeta\" */ },\r\n0x01D9: { /* n:\"BrtBeginColorPalette\", */ T:1 },\r\n0x01DA: { /* n:\"BrtEndColorPalette\", */ T:-1 },\r\n0x01DB: { /* n:\"BrtIndexedColor\" */ },\r\n0x01DC: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\r\n0x01DD: { /* n:\"BrtPrintOptions\" */ },\r\n0x01DE: { /* n:\"BrtPageSetup\" */ },\r\n0x01DF: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\r\n0x01E0: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\r\n0x01E1: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\r\n0x01E2: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\r\n0x01E3: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\r\n0x01E4: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\r\n0x01E5: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\r\n0x01E6: { /* n:\"BrtBeginMgs\", */ T:1 },\r\n0x01E7: { /* n:\"BrtEndMGs\", */ T:-1 },\r\n0x01E8: { /* n:\"BrtBeginMGMaps\", */ T:1 },\r\n0x01E9: { /* n:\"BrtEndMGMaps\", */ T:-1 },\r\n0x01EA: { /* n:\"BrtBeginMG\", */ T:1 },\r\n0x01EB: { /* n:\"BrtEndMG\", */ T:-1 },\r\n0x01EC: { /* n:\"BrtBeginMap\", */ T:1 },\r\n0x01ED: { /* n:\"BrtEndMap\", */ T:-1 },\r\n0x01EE: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\r\n0x01EF: { /* n:\"BrtBeginDCon\", */ T:1 },\r\n0x01F0: { /* n:\"BrtEndDCon\", */ T:-1 },\r\n0x01F1: { /* n:\"BrtBeginDRefs\", */ T:1 },\r\n0x01F2: { /* n:\"BrtEndDRefs\", */ T:-1 },\r\n0x01F3: { /* n:\"BrtDRef\" */ },\r\n0x01F4: { /* n:\"BrtBeginScenMan\", */ T:1 },\r\n0x01F5: { /* n:\"BrtEndScenMan\", */ T:-1 },\r\n0x01F6: { /* n:\"BrtBeginSct\", */ T:1 },\r\n0x01F7: { /* n:\"BrtEndSct\", */ T:-1 },\r\n0x01F8: { /* n:\"BrtSlc\" */ },\r\n0x01F9: { /* n:\"BrtBeginDXFs\", */ T:1 },\r\n0x01FA: { /* n:\"BrtEndDXFs\", */ T:-1 },\r\n0x01FB: { /* n:\"BrtDXF\" */ },\r\n0x01FC: { /* n:\"BrtBeginTableStyles\", */ T:1 },\r\n0x01FD: { /* n:\"BrtEndTableStyles\", */ T:-1 },\r\n0x01FE: { /* n:\"BrtBeginTableStyle\", */ T:1 },\r\n0x01FF: { /* n:\"BrtEndTableStyle\", */ T:-1 },\r\n0x0200: { /* n:\"BrtTableStyleElement\" */ },\r\n0x0201: { /* n:\"BrtTableStyleClient\" */ },\r\n0x0202: { /* n:\"BrtBeginVolDeps\", */ T:1 },\r\n0x0203: { /* n:\"BrtEndVolDeps\", */ T:-1 },\r\n0x0204: { /* n:\"BrtBeginVolType\", */ T:1 },\r\n0x0205: { /* n:\"BrtEndVolType\", */ T:-1 },\r\n0x0206: { /* n:\"BrtBeginVolMain\", */ T:1 },\r\n0x0207: { /* n:\"BrtEndVolMain\", */ T:-1 },\r\n0x0208: { /* n:\"BrtBeginVolTopic\", */ T:1 },\r\n0x0209: { /* n:\"BrtEndVolTopic\", */ T:-1 },\r\n0x020A: { /* n:\"BrtVolSubtopic\" */ },\r\n0x020B: { /* n:\"BrtVolRef\" */ },\r\n0x020C: { /* n:\"BrtVolNum\" */ },\r\n0x020D: { /* n:\"BrtVolErr\" */ },\r\n0x020E: { /* n:\"BrtVolStr\" */ },\r\n0x020F: { /* n:\"BrtVolBool\" */ },\r\n0x0210: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\r\n0x0211: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\r\n0x0212: { /* n:\"BrtBeginSortState\", */ T:1 },\r\n0x0213: { /* n:\"BrtEndSortState\", */ T:-1 },\r\n0x0214: { /* n:\"BrtBeginSortCond\", */ T:1 },\r\n0x0215: { /* n:\"BrtEndSortCond\", */ T:-1 },\r\n0x0216: { /* n:\"BrtBookProtection\" */ },\r\n0x0217: { /* n:\"BrtSheetProtection\" */ },\r\n0x0218: { /* n:\"BrtRangeProtection\" */ },\r\n0x0219: { /* n:\"BrtPhoneticInfo\" */ },\r\n0x021A: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\r\n0x021B: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\r\n0x021C: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\r\n0x021D: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\r\n0x021E: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\r\n0x0224: { /* n:\"BrtFileSharing\" */ },\r\n0x0225: { /* n:\"BrtOleSize\" */ },\r\n0x0226: { /* n:\"BrtDrawing\", */ f:parse_RelID },\r\n0x0227: { /* n:\"BrtLegacyDrawing\" */ },\r\n0x0228: { /* n:\"BrtLegacyDrawingHF\" */ },\r\n0x0229: { /* n:\"BrtWebOpt\" */ },\r\n0x022A: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\r\n0x022B: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\r\n0x022C: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\r\n0x022D: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\r\n0x022E: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\r\n0x022F: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\r\n0x0230: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\r\n0x0231: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\r\n0x0232: { /* n:\"BrtBkHim\" */ },\r\n0x0234: { /* n:\"BrtColor\" */ },\r\n0x0235: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\r\n0x0236: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\r\n0x0239: { /* n:\"BrtBeginMRUColors\", */ T:1 },\r\n0x023A: { /* n:\"BrtEndMRUColors\", */ T:-1 },\r\n0x023C: { /* n:\"BrtMRUColor\" */ },\r\n0x023D: { /* n:\"BrtBeginDVals\", */ T:1 },\r\n0x023E: { /* n:\"BrtEndDVals\", */ T:-1 },\r\n0x0241: { /* n:\"BrtSupNameStart\" */ },\r\n0x0242: { /* n:\"BrtSupNameValueStart\" */ },\r\n0x0243: { /* n:\"BrtSupNameValueEnd\" */ },\r\n0x0244: { /* n:\"BrtSupNameNum\" */ },\r\n0x0245: { /* n:\"BrtSupNameErr\" */ },\r\n0x0246: { /* n:\"BrtSupNameSt\" */ },\r\n0x0247: { /* n:\"BrtSupNameNil\" */ },\r\n0x0248: { /* n:\"BrtSupNameBool\" */ },\r\n0x0249: { /* n:\"BrtSupNameFmla\" */ },\r\n0x024A: { /* n:\"BrtSupNameBits\" */ },\r\n0x024B: { /* n:\"BrtSupNameEnd\" */ },\r\n0x024C: { /* n:\"BrtEndSupBook\", */ T:-1 },\r\n0x024D: { /* n:\"BrtCellSmartTagProperty\" */ },\r\n0x024E: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\r\n0x024F: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\r\n0x0250: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\r\n0x0251: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\r\n0x0252: { /* n:\"BrtBeginSmartTags\", */ T:1 },\r\n0x0253: { /* n:\"BrtEndSmartTags\", */ T:-1 },\r\n0x0254: { /* n:\"BrtSmartTagType\" */ },\r\n0x0255: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\r\n0x0256: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\r\n0x0257: { /* n:\"BrtBeginSXFilters\", */ T:1 },\r\n0x0258: { /* n:\"BrtEndSXFilters\", */ T:-1 },\r\n0x0259: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\r\n0x025A: { /* n:\"BrtEndSXFilter\", */ T:-1 },\r\n0x025B: { /* n:\"BrtBeginFills\", */ T:1 },\r\n0x025C: { /* n:\"BrtEndFills\", */ T:-1 },\r\n0x025D: { /* n:\"BrtBeginCellWatches\", */ T:1 },\r\n0x025E: { /* n:\"BrtEndCellWatches\", */ T:-1 },\r\n0x025F: { /* n:\"BrtCellWatch\" */ },\r\n0x0260: { /* n:\"BrtBeginCRErrs\", */ T:1 },\r\n0x0261: { /* n:\"BrtEndCRErrs\", */ T:-1 },\r\n0x0262: { /* n:\"BrtCrashRecErr\" */ },\r\n0x0263: { /* n:\"BrtBeginFonts\", */ T:1 },\r\n0x0264: { /* n:\"BrtEndFonts\", */ T:-1 },\r\n0x0265: { /* n:\"BrtBeginBorders\", */ T:1 },\r\n0x0266: { /* n:\"BrtEndBorders\", */ T:-1 },\r\n0x0267: { /* n:\"BrtBeginFmts\", */ T:1 },\r\n0x0268: { /* n:\"BrtEndFmts\", */ T:-1 },\r\n0x0269: { /* n:\"BrtBeginCellXFs\", */ T:1 },\r\n0x026A: { /* n:\"BrtEndCellXFs\", */ T:-1 },\r\n0x026B: { /* n:\"BrtBeginStyles\", */ T:1 },\r\n0x026C: { /* n:\"BrtEndStyles\", */ T:-1 },\r\n0x0271: { /* n:\"BrtBigName\" */ },\r\n0x0272: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\r\n0x0273: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\r\n0x0274: { /* n:\"BrtBeginComments\", */ T:1 },\r\n0x0275: { /* n:\"BrtEndComments\", */ T:-1 },\r\n0x0276: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\r\n0x0277: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\r\n0x0278: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\r\n0x0279: { /* n:\"BrtBeginCommentList\", */ T:1 },\r\n0x027A: { /* n:\"BrtEndCommentList\", */ T:-1 },\r\n0x027B: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\r\n0x027C: { /* n:\"BrtEndComment\", */ T:-1 },\r\n0x027D: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\r\n0x027E: { /* n:\"BrtBeginOleObjects\", */ T:1 },\r\n0x027F: { /* n:\"BrtOleObject\" */ },\r\n0x0280: { /* n:\"BrtEndOleObjects\", */ T:-1 },\r\n0x0281: { /* n:\"BrtBeginSxrules\", */ T:1 },\r\n0x0282: { /* n:\"BrtEndSxRules\", */ T:-1 },\r\n0x0283: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\r\n0x0284: { /* n:\"BrtActiveX\" */ },\r\n0x0285: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\r\n0x0286: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\r\n0x0288: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\r\n0x0289: { /* n:\"BrtCellIgnoreEC\" */ },\r\n0x028A: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\r\n0x028B: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\r\n0x028C: { /* n:\"BrtCsPageSetup\" */ },\r\n0x028D: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\r\n0x028E: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\r\n0x028F: { /* n:\"BrtBeginUserCsView\", */ T:1 },\r\n0x0290: { /* n:\"BrtEndUserCsView\", */ T:-1 },\r\n0x0291: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\r\n0x0292: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\r\n0x0293: { /* n:\"BrtPCDSFCIEntry\" */ },\r\n0x0294: { /* n:\"BrtBeginListParts\", */ T:1 },\r\n0x0295: { /* n:\"BrtListPart\" */ },\r\n0x0296: { /* n:\"BrtEndListParts\", */ T:-1 },\r\n0x0297: { /* n:\"BrtSheetCalcProp\" */ },\r\n0x0298: { /* n:\"BrtBeginFnGroup\", */ T:1 },\r\n0x0299: { /* n:\"BrtFnGroup\" */ },\r\n0x029A: { /* n:\"BrtEndFnGroup\", */ T:-1 },\r\n0x029B: { /* n:\"BrtSupAddin\" */ },\r\n0x029C: { /* n:\"BrtSXTDMPOrder\" */ },\r\n0x029D: { /* n:\"BrtCsProtection\" */ },\r\n0x029F: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\r\n0x02A0: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\r\n0x02A1: { /* n:\"BrtBeginRRSort\", */ T:1 },\r\n0x02A2: { /* n:\"BrtEndRRSort\", */ T:-1 },\r\n0x02A3: { /* n:\"BrtRRSortItem\" */ },\r\n0x02A4: { /* n:\"BrtFileSharingIso\" */ },\r\n0x02A5: { /* n:\"BrtBookProtectionIso\" */ },\r\n0x02A6: { /* n:\"BrtSheetProtectionIso\" */ },\r\n0x02A7: { /* n:\"BrtCsProtectionIso\" */ },\r\n0x02A8: { /* n:\"BrtRangeProtectionIso\" */ },\r\n0x02A9: { /* n:\"BrtDValList\" */ },\r\n0x0400: { /* n:\"BrtRwDescent\" */ },\r\n0x0401: { /* n:\"BrtKnownFonts\" */ },\r\n0x0402: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\r\n0x0403: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\r\n0x0404: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\r\n0x0405: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\r\n0x0406: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\r\n0x0407: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\r\n0x0408: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\r\n0x0409: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\r\n0x040A: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\r\n0x040B: { /* n:\"BrtSXTupleSetRowItem\" */ },\r\n0x040C: { /* n:\"BrtNameExt\" */ },\r\n0x040D: { /* n:\"BrtPCDH14\" */ },\r\n0x040E: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\r\n0x040F: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\r\n0x0410: { /* n:\"BrtSXTH14\" */ },\r\n0x0411: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\r\n0x0412: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\r\n0x0413: { /* n:\"BrtSparkline\" */ },\r\n0x0414: { /* n:\"BrtSXDI14\" */ },\r\n0x0415: { /* n:\"BrtWsFmtInfoEx14\" */ },\r\n0x0416: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\r\n0x0417: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\r\n0x0418: { /* n:\"BrtBeginCFRule14\", */ T:1 },\r\n0x0419: { /* n:\"BrtEndCFRule14\", */ T:-1 },\r\n0x041A: { /* n:\"BrtCFVO14\" */ },\r\n0x041B: { /* n:\"BrtBeginDatabar14\", */ T:1 },\r\n0x041C: { /* n:\"BrtBeginIconSet14\", */ T:1 },\r\n0x041D: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\r\n0x041E: { /* n:\"BrtBeginDVals14\", */ T:1 },\r\n0x041F: { /* n:\"BrtColor14\" */ },\r\n0x0420: { /* n:\"BrtBeginSparklines\", */ T:1 },\r\n0x0421: { /* n:\"BrtEndSparklines\", */ T:-1 },\r\n0x0422: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\r\n0x0423: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\r\n0x0425: { /* n:\"BrtSXVD14\" */ },\r\n0x0426: { /* n:\"BrtBeginSXView14\", */ T:1 },\r\n0x0427: { /* n:\"BrtEndSXView14\", */ T:-1 },\r\n0x0428: { /* n:\"BrtBeginSXView16\", */ T:1 },\r\n0x0429: { /* n:\"BrtEndSXView16\", */ T:-1 },\r\n0x042A: { /* n:\"BrtBeginPCD14\", */ T:1 },\r\n0x042B: { /* n:\"BrtEndPCD14\", */ T:-1 },\r\n0x042C: { /* n:\"BrtBeginExtConn14\", */ T:1 },\r\n0x042D: { /* n:\"BrtEndExtConn14\", */ T:-1 },\r\n0x042E: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\r\n0x042F: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\r\n0x0430: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\r\n0x0431: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\r\n0x0433: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\r\n0x0434: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\r\n0x0435: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\r\n0x0436: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\r\n0x0437: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\r\n0x0438: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\r\n0x0439: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\r\n0x043A: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\r\n0x043B: { /* n:\"BrtBeginSlicer\", */ T:1 },\r\n0x043C: { /* n:\"BrtEndSlicer\", */ T:-1 },\r\n0x043D: { /* n:\"BrtSlicerCachePivotTables\" */ },\r\n0x043E: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\r\n0x043F: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\r\n0x0440: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\r\n0x0441: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\r\n0x0442: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\r\n0x0443: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\r\n0x0444: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\r\n0x0445: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\r\n0x0446: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\r\n0x0447: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\r\n0x0448: { /* n:\"BrtSlicerCacheOlapItem\" */ },\r\n0x0449: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\r\n0x044A: { /* n:\"BrtSlicerCacheSelection\" */ },\r\n0x044B: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\r\n0x044C: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\r\n0x044D: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\r\n0x044E: { /* n:\"BrtSlicerCacheNativeItem\" */ },\r\n0x044F: { /* n:\"BrtRangeProtection14\" */ },\r\n0x0450: { /* n:\"BrtRangeProtectionIso14\" */ },\r\n0x0451: { /* n:\"BrtCellIgnoreEC14\" */ },\r\n0x0457: { /* n:\"BrtList14\" */ },\r\n0x0458: { /* n:\"BrtCFIcon\" */ },\r\n0x0459: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\r\n0x045A: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\r\n0x045B: { /* n:\"BrtBeginSlicers\", */ T:1 },\r\n0x045C: { /* n:\"BrtEndSlicers\", */ T:-1 },\r\n0x045D: { /* n:\"BrtWbProp14\" */ },\r\n0x045E: { /* n:\"BrtBeginSXEdit\", */ T:1 },\r\n0x045F: { /* n:\"BrtEndSXEdit\", */ T:-1 },\r\n0x0460: { /* n:\"BrtBeginSXEdits\", */ T:1 },\r\n0x0461: { /* n:\"BrtEndSXEdits\", */ T:-1 },\r\n0x0462: { /* n:\"BrtBeginSXChange\", */ T:1 },\r\n0x0463: { /* n:\"BrtEndSXChange\", */ T:-1 },\r\n0x0464: { /* n:\"BrtBeginSXChanges\", */ T:1 },\r\n0x0465: { /* n:\"BrtEndSXChanges\", */ T:-1 },\r\n0x0466: { /* n:\"BrtSXTupleItems\" */ },\r\n0x0468: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\r\n0x0469: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\r\n0x046A: { /* n:\"BrtSlicerStyleElement\" */ },\r\n0x046B: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\r\n0x046C: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\r\n0x046D: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\r\n0x046E: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\r\n0x046F: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\r\n0x0470: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\r\n0x0471: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\r\n0x0472: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\r\n0x0473: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\r\n0x0474: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\r\n0x0475: { /* n:\"BrtPCDField14\" */ },\r\n0x0476: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\r\n0x0477: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\r\n0x0478: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\r\n0x0479: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\r\n0x047A: { /* n:\"BrtCFRuleExt\" */ },\r\n0x047B: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\r\n0x047C: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\r\n0x047D: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\r\n0x047E: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\r\n0x0480: { /* n:\"BrtBeginSortCond14\", */ T:1 },\r\n0x0481: { /* n:\"BrtEndSortCond14\", */ T:-1 },\r\n0x0482: { /* n:\"BrtEndDVals14\", */ T:-1 },\r\n0x0483: { /* n:\"BrtEndIconSet14\", */ T:-1 },\r\n0x0484: { /* n:\"BrtEndDatabar14\", */ T:-1 },\r\n0x0485: { /* n:\"BrtBeginColorScale14\", */ T:1 },\r\n0x0486: { /* n:\"BrtEndColorScale14\", */ T:-1 },\r\n0x0487: { /* n:\"BrtBeginSxrules14\", */ T:1 },\r\n0x0488: { /* n:\"BrtEndSxrules14\", */ T:-1 },\r\n0x0489: { /* n:\"BrtBeginPRule14\", */ T:1 },\r\n0x048A: { /* n:\"BrtEndPRule14\", */ T:-1 },\r\n0x048B: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\r\n0x048C: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\r\n0x048D: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\r\n0x048E: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\r\n0x048F: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\r\n0x0490: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\r\n0x0491: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\r\n0x0492: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\r\n0x0493: { /* n:\"BrtDxf14\" */ },\r\n0x0494: { /* n:\"BrtBeginDxF14s\", */ T:1 },\r\n0x0495: { /* n:\"BrtEndDxf14s\", */ T:-1 },\r\n0x0499: { /* n:\"BrtFilter14\" */ },\r\n0x049A: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\r\n0x049C: { /* n:\"BrtCustomFilter14\" */ },\r\n0x049D: { /* n:\"BrtIconFilter14\" */ },\r\n0x049E: { /* n:\"BrtPivotCacheConnectionName\" */ },\r\n0x0800: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\r\n0x0801: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\r\n0x0802: { /* n:\"BrtDecoupledPivotCacheID\" */ },\r\n0x0803: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\r\n0x0804: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\r\n0x0805: { /* n:\"BrtPivotTableRef\" */ },\r\n0x0806: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\r\n0x0807: { /* n:\"BrtBeginSxvcells\", */ T:1 },\r\n0x0808: { /* n:\"BrtEndSxvcells\", */ T:-1 },\r\n0x0809: { /* n:\"BrtBeginSxRow\", */ T:1 },\r\n0x080A: { /* n:\"BrtEndSxRow\", */ T:-1 },\r\n0x080C: { /* n:\"BrtPcdCalcMem15\" */ },\r\n0x0813: { /* n:\"BrtQsi15\" */ },\r\n0x0814: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\r\n0x0815: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\r\n0x0816: { /* n:\"BrtWebExtension\" */ },\r\n0x0817: { /* n:\"BrtAbsPath15\" */ },\r\n0x0818: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\r\n0x0819: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\r\n0x081B: { /* n:\"BrtTableSlicerCacheIDs\" */ },\r\n0x081C: { /* n:\"BrtTableSlicerCacheID\" */ },\r\n0x081D: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\r\n0x081E: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\r\n0x081F: { /* n:\"BrtSxFilter15\" */ },\r\n0x0820: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\r\n0x0821: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\r\n0x0822: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\r\n0x0823: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\r\n0x0824: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\r\n0x0825: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\r\n0x0826: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\r\n0x0827: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\r\n0x0828: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\r\n0x0829: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\r\n0x082A: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\r\n0x082B: { /* n:\"BrtWorkBookPr15\" */ },\r\n0x082C: { /* n:\"BrtPCDH15\" */ },\r\n0x082D: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\r\n0x082E: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\r\n0x082F: { /* n:\"BrtTimelineStyleElement\" */ },\r\n0x0830: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\r\n0x0831: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\r\n0x0832: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\r\n0x0833: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\r\n0x0834: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\r\n0x0835: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\r\n0x0836: { /* n:\"BrtDxf15\" */ },\r\n0x0837: { /* n:\"BrtBeginDxfs15\", */ T:1 },\r\n0x0838: { /* n:\"BrtEndDxfs15\", */ T:-1 },\r\n0x0839: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\r\n0x083A: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\r\n0x083B: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\r\n0x083C: { /* n:\"BrtItemUniqueName\" */ },\r\n0x083D: { /* n:\"BrtBeginExtConn15\", */ T:1 },\r\n0x083E: { /* n:\"BrtEndExtConn15\", */ T:-1 },\r\n0x083F: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\r\n0x0840: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\r\n0x0841: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\r\n0x0842: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\r\n0x0843: { /* n:\"BrtTextPr15\" */ },\r\n0x0844: { /* n:\"BrtRangePr15\" */ },\r\n0x0845: { /* n:\"BrtDbCommand15\" */ },\r\n0x0846: { /* n:\"BrtBeginDbTables15\", */ T:1 },\r\n0x0847: { /* n:\"BrtEndDbTables15\", */ T:-1 },\r\n0x0848: { /* n:\"BrtDbTable15\" */ },\r\n0x0849: { /* n:\"BrtBeginDataModel\", */ T:1 },\r\n0x084A: { /* n:\"BrtEndDataModel\", */ T:-1 },\r\n0x084B: { /* n:\"BrtBeginModelTables\", */ T:1 },\r\n0x084C: { /* n:\"BrtEndModelTables\", */ T:-1 },\r\n0x084D: { /* n:\"BrtModelTable\" */ },\r\n0x084E: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\r\n0x084F: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\r\n0x0850: { /* n:\"BrtModelRelationship\" */ },\r\n0x0851: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\r\n0x0852: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\r\n0x0853: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\r\n0x0854: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\r\n0x0855: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\r\n0x0856: { /* n:\"BrtFieldListActiveItem\" */ },\r\n0x0857: { /* n:\"BrtPivotCacheIdVersion\" */ },\r\n0x0858: { /* n:\"BrtSXDI15\" */ },\r\n0x0859: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\r\n0x085A: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\r\n0x085B: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\r\n0x085C: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\r\n0x085D: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\r\n0x0C00: { /* n:\"BrtUid\" */ },\r\n0x0C01: { /* n:\"BrtRevisionPtr\" */ },\r\n0x1000: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\r\n0x1001: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\r\n0x138A: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\r\n0x138B: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\r\n0x13D9: { /* n:\"BrtBeginRichFilters\", */ T:1 },\r\n0x13DA: { /* n:\"BrtEndRichFilters\", */ T:-1 },\r\n0x13DB: { /* n:\"BrtRichFilter\" */ },\r\n0x13DC: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\r\n0x13DD: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\r\n0x13DE: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\r\n0x13DF: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\r\n0x13E0: { /* n:\"BrtCustomRichFilter\" */ },\r\n0x13E1: { /* n:\"BrtTop10RichFilter\" */ },\r\n0x13E2: { /* n:\"BrtDynamicRichFilter\" */ },\r\n0x13E4: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\r\n0x13E5: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\r\n0x13E6: { /* n:\"BrtRichFilterDateGroupItem\" */ },\r\n0x13E7: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\r\n0x13E8: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\r\n0x13E9: { /* n:\"BrtCalcFeature\" */ },\r\n0x13EB: { /* n:\"BrtExternalLinksPr\" */ },\r\n0xFFFF: { n:\"\" }\r\n};\r\n\r\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\r\nvar XLSRecordEnum = {\r\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\r\n0x0006: { /* n:\"Formula\", */ f:parse_Formula },\r\n0x000a: { /* n:\"EOF\", */ f:parsenoop2 },\r\n0x000c: { /* n:\"CalcCount\", */ f:parseuint16 }, //\r\n0x000d: { /* n:\"CalcMode\", */ f:parseuint16 }, //\r\n0x000e: { /* n:\"CalcPrecision\", */ f:parsebool }, //\r\n0x000f: { /* n:\"CalcRefMode\", */ f:parsebool }, //\r\n0x0010: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\r\n0x0011: { /* n:\"CalcIter\", */ f:parsebool }, //\r\n0x0012: { /* n:\"Protect\", */ f:parsebool },\r\n0x0013: { /* n:\"Password\", */ f:parseuint16 },\r\n0x0014: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\r\n0x0015: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\r\n0x0017: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\r\n0x0018: { /* n:\"Lbl\", */ f:parse_Lbl },\r\n0x0019: { /* n:\"WinProtect\", */ f:parsebool },\r\n0x001a: { /* n:\"VerticalPageBreaks\", */ },\r\n0x001b: { /* n:\"HorizontalPageBreaks\", */ },\r\n0x001c: { /* n:\"Note\", */ f:parse_Note },\r\n0x001d: { /* n:\"Selection\", */ },\r\n0x0022: { /* n:\"Date1904\", */ f:parsebool },\r\n0x0023: { /* n:\"ExternName\", */ f:parse_ExternName },\r\n0x0026: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\r\n0x0027: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\r\n0x0028: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\r\n0x0029: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\r\n0x002a: { /* n:\"PrintRowCol\", */ f:parsebool },\r\n0x002b: { /* n:\"PrintGrid\", */ f:parsebool },\r\n0x002f: { /* n:\"FilePass\", */ f:parse_FilePass },\r\n0x0031: { /* n:\"Font\", */ f:parse_Font },\r\n0x0033: { /* n:\"PrintSize\", */ f:parseuint16 },\r\n0x003c: { /* n:\"Continue\", */ },\r\n0x003d: { /* n:\"Window1\", */ f:parse_Window1 },\r\n0x0040: { /* n:\"Backup\", */ f:parsebool },\r\n0x0041: { /* n:\"Pane\", */ f:parse_Pane },\r\n0x0042: { /* n:\"CodePage\", */ f:parseuint16 },\r\n0x004d: { /* n:\"Pls\", */ },\r\n0x0050: { /* n:\"DCon\", */ },\r\n0x0051: { /* n:\"DConRef\", */ },\r\n0x0052: { /* n:\"DConName\", */ },\r\n0x0055: { /* n:\"DefColWidth\", */ f:parseuint16 },\r\n0x0059: { /* n:\"XCT\", */ },\r\n0x005a: { /* n:\"CRN\", */ },\r\n0x005b: { /* n:\"FileSharing\", */ },\r\n0x005c: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\r\n0x005d: { /* n:\"Obj\", */ f:parse_Obj },\r\n0x005e: { /* n:\"Uncalced\", */ },\r\n0x005f: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\r\n0x0060: { /* n:\"Template\", */ },\r\n0x0061: { /* n:\"Intl\", */ },\r\n0x0063: { /* n:\"ObjProtect\", */ f:parsebool },\r\n0x007d: { /* n:\"ColInfo\", */ f:parse_ColInfo },\r\n0x0080: { /* n:\"Guts\", */ f:parse_Guts },\r\n0x0081: { /* n:\"WsBool\", */ f:parse_WsBool },\r\n0x0082: { /* n:\"GridSet\", */ f:parseuint16 },\r\n0x0083: { /* n:\"HCenter\", */ f:parsebool },\r\n0x0084: { /* n:\"VCenter\", */ f:parsebool },\r\n0x0085: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\r\n0x0086: { /* n:\"WriteProtect\", */ },\r\n0x008c: { /* n:\"Country\", */ f:parse_Country },\r\n0x008d: { /* n:\"HideObj\", */ f:parseuint16 },\r\n0x0090: { /* n:\"Sort\", */ },\r\n0x0092: { /* n:\"Palette\", */ f:parse_Palette },\r\n0x0097: { /* n:\"Sync\", */ },\r\n0x0098: { /* n:\"LPr\", */ },\r\n0x0099: { /* n:\"DxGCol\", */ },\r\n0x009a: { /* n:\"FnGroupName\", */ },\r\n0x009b: { /* n:\"FilterMode\", */ },\r\n0x009c: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\r\n0x009d: { /* n:\"AutoFilterInfo\", */ },\r\n0x009e: { /* n:\"AutoFilter\", */ },\r\n0x00a0: { /* n:\"Scl\", */ f:parse_Scl },\r\n0x00a1: { /* n:\"Setup\", */ f:parse_Setup },\r\n0x00ae: { /* n:\"ScenMan\", */ },\r\n0x00af: { /* n:\"SCENARIO\", */ },\r\n0x00b0: { /* n:\"SxView\", */ },\r\n0x00b1: { /* n:\"Sxvd\", */ },\r\n0x00b2: { /* n:\"SXVI\", */ },\r\n0x00b4: { /* n:\"SxIvd\", */ },\r\n0x00b5: { /* n:\"SXLI\", */ },\r\n0x00b6: { /* n:\"SXPI\", */ },\r\n0x00b8: { /* n:\"DocRoute\", */ },\r\n0x00b9: { /* n:\"RecipName\", */ },\r\n0x00bd: { /* n:\"MulRk\", */ f:parse_MulRk },\r\n0x00be: { /* n:\"MulBlank\", */ f:parse_MulBlank },\r\n0x00c1: { /* n:\"Mms\", */ f:parsenoop2 },\r\n0x00c5: { /* n:\"SXDI\", */ },\r\n0x00c6: { /* n:\"SXDB\", */ },\r\n0x00c7: { /* n:\"SXFDB\", */ },\r\n0x00c8: { /* n:\"SXDBB\", */ },\r\n0x00c9: { /* n:\"SXNum\", */ },\r\n0x00ca: { /* n:\"SxBool\", */ f:parsebool },\r\n0x00cb: { /* n:\"SxErr\", */ },\r\n0x00cc: { /* n:\"SXInt\", */ },\r\n0x00cd: { /* n:\"SXString\", */ },\r\n0x00ce: { /* n:\"SXDtr\", */ },\r\n0x00cf: { /* n:\"SxNil\", */ },\r\n0x00d0: { /* n:\"SXTbl\", */ },\r\n0x00d1: { /* n:\"SXTBRGIITM\", */ },\r\n0x00d2: { /* n:\"SxTbpg\", */ },\r\n0x00d3: { /* n:\"ObProj\", */ },\r\n0x00d5: { /* n:\"SXStreamID\", */ },\r\n0x00d7: { /* n:\"DBCell\", */ },\r\n0x00d8: { /* n:\"SXRng\", */ },\r\n0x00d9: { /* n:\"SxIsxoper\", */ },\r\n0x00da: { /* n:\"BookBool\", */ f:parseuint16 },\r\n0x00dc: { /* n:\"DbOrParamQry\", */ },\r\n0x00dd: { /* n:\"ScenarioProtect\", */ f:parsebool },\r\n0x00de: { /* n:\"OleObjectSize\", */ },\r\n0x00e0: { /* n:\"XF\", */ f:parse_XF },\r\n0x00e1: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\r\n0x00e2: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\r\n0x00e3: { /* n:\"SXVS\", */ },\r\n0x00e5: { /* n:\"MergeCells\", */ f:parse_MergeCells },\r\n0x00e9: { /* n:\"BkHim\", */ },\r\n0x00eb: { /* n:\"MsoDrawingGroup\", */ },\r\n0x00ec: { /* n:\"MsoDrawing\", */ },\r\n0x00ed: { /* n:\"MsoDrawingSelection\", */ },\r\n0x00ef: { /* n:\"PhoneticInfo\", */ },\r\n0x00f0: { /* n:\"SxRule\", */ },\r\n0x00f1: { /* n:\"SXEx\", */ },\r\n0x00f2: { /* n:\"SxFilt\", */ },\r\n0x00f4: { /* n:\"SxDXF\", */ },\r\n0x00f5: { /* n:\"SxItm\", */ },\r\n0x00f6: { /* n:\"SxName\", */ },\r\n0x00f7: { /* n:\"SxSelect\", */ },\r\n0x00f8: { /* n:\"SXPair\", */ },\r\n0x00f9: { /* n:\"SxFmla\", */ },\r\n0x00fb: { /* n:\"SxFormat\", */ },\r\n0x00fc: { /* n:\"SST\", */ f:parse_SST },\r\n0x00fd: { /* n:\"LabelSst\", */ f:parse_LabelSst },\r\n0x00ff: { /* n:\"ExtSST\", */ f:parse_ExtSST },\r\n0x0100: { /* n:\"SXVDEx\", */ },\r\n0x0103: { /* n:\"SXFormula\", */ },\r\n0x0122: { /* n:\"SXDBEx\", */ },\r\n0x0137: { /* n:\"RRDInsDel\", */ },\r\n0x0138: { /* n:\"RRDHead\", */ },\r\n0x013b: { /* n:\"RRDChgCell\", */ },\r\n0x013d: { /* n:\"RRTabId\", */ f:parseuint16a },\r\n0x013e: { /* n:\"RRDRenSheet\", */ },\r\n0x013f: { /* n:\"RRSort\", */ },\r\n0x0140: { /* n:\"RRDMove\", */ },\r\n0x014a: { /* n:\"RRFormat\", */ },\r\n0x014b: { /* n:\"RRAutoFmt\", */ },\r\n0x014d: { /* n:\"RRInsertSh\", */ },\r\n0x014e: { /* n:\"RRDMoveBegin\", */ },\r\n0x014f: { /* n:\"RRDMoveEnd\", */ },\r\n0x0150: { /* n:\"RRDInsDelBegin\", */ },\r\n0x0151: { /* n:\"RRDInsDelEnd\", */ },\r\n0x0152: { /* n:\"RRDConflict\", */ },\r\n0x0153: { /* n:\"RRDDefName\", */ },\r\n0x0154: { /* n:\"RRDRstEtxp\", */ },\r\n0x015f: { /* n:\"LRng\", */ },\r\n0x0160: { /* n:\"UsesELFs\", */ f:parsebool },\r\n0x0161: { /* n:\"DSF\", */ f:parsenoop2 },\r\n0x0191: { /* n:\"CUsr\", */ },\r\n0x0192: { /* n:\"CbUsr\", */ },\r\n0x0193: { /* n:\"UsrInfo\", */ },\r\n0x0194: { /* n:\"UsrExcl\", */ },\r\n0x0195: { /* n:\"FileLock\", */ },\r\n0x0196: { /* n:\"RRDInfo\", */ },\r\n0x0197: { /* n:\"BCUsrs\", */ },\r\n0x0198: { /* n:\"UsrChk\", */ },\r\n0x01a9: { /* n:\"UserBView\", */ },\r\n0x01aa: { /* n:\"UserSViewBegin\", */ },\r\n0x01ab: { /* n:\"UserSViewEnd\", */ },\r\n0x01ac: { /* n:\"RRDUserView\", */ },\r\n0x01ad: { /* n:\"Qsi\", */ },\r\n0x01ae: { /* n:\"SupBook\", */ f:parse_SupBook },\r\n0x01af: { /* n:\"Prot4Rev\", */ f:parsebool },\r\n0x01b0: { /* n:\"CondFmt\", */ },\r\n0x01b1: { /* n:\"CF\", */ },\r\n0x01b2: { /* n:\"DVal\", */ },\r\n0x01b5: { /* n:\"DConBin\", */ },\r\n0x01b6: { /* n:\"TxO\", */ f:parse_TxO },\r\n0x01b7: { /* n:\"RefreshAll\", */ f:parsebool }, //\r\n0x01b8: { /* n:\"HLink\", */ f:parse_HLink },\r\n0x01b9: { /* n:\"Lel\", */ },\r\n0x01ba: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\r\n0x01bb: { /* n:\"SXFDBType\", */ },\r\n0x01bc: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\r\n0x01bd: { /* n:\"ObNoMacros\", */ },\r\n0x01be: { /* n:\"Dv\", */ },\r\n0x01c0: { /* n:\"Excel9File\", */ f:parsenoop2 },\r\n0x01c1: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\r\n0x01c2: { /* n:\"EntExU2\", */ f:parsenoop2 },\r\n0x0200: { /* n:\"Dimensions\", */ f:parse_Dimensions },\r\n0x0201: { /* n:\"Blank\", */ f:parse_Blank },\r\n0x0203: { /* n:\"Number\", */ f:parse_Number },\r\n0x0204: { /* n:\"Label\", */ f:parse_Label },\r\n0x0205: { /* n:\"BoolErr\", */ f:parse_BoolErr },\r\n0x0207: { /* n:\"String\", */ f:parse_String },\r\n0x0208: { /* n:\"Row\", */ f:parse_Row },\r\n0x020b: { /* n:\"Index\", */ },\r\n0x0221: { /* n:\"Array\", */ f:parse_Array },\r\n0x0225: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\r\n0x0236: { /* n:\"Table\", */ },\r\n0x023e: { /* n:\"Window2\", */ f:parse_Window2 },\r\n0x027e: { /* n:\"RK\", */ f:parse_RK },\r\n0x0293: { /* n:\"Style\", */ },\r\n0x0418: { /* n:\"BigName\", */ },\r\n0x041e: { /* n:\"Format\", */ f:parse_Format },\r\n0x043c: { /* n:\"ContinueBigName\", */ },\r\n0x04bc: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\r\n0x0800: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\r\n0x0801: { /* n:\"WebPub\", */ },\r\n0x0802: { /* n:\"QsiSXTag\", */ },\r\n0x0803: { /* n:\"DBQueryExt\", */ },\r\n0x0804: { /* n:\"ExtString\", */ },\r\n0x0805: { /* n:\"TxtQry\", */ },\r\n0x0806: { /* n:\"Qsir\", */ },\r\n0x0807: { /* n:\"Qsif\", */ },\r\n0x0808: { /* n:\"RRDTQSIF\", */ },\r\n0x0809: { /* n:\"BOF\", */ f:parse_BOF },\r\n0x080a: { /* n:\"OleDbConn\", */ },\r\n0x080b: { /* n:\"WOpt\", */ },\r\n0x080c: { /* n:\"SXViewEx\", */ },\r\n0x080d: { /* n:\"SXTH\", */ },\r\n0x080e: { /* n:\"SXPIEx\", */ },\r\n0x080f: { /* n:\"SXVDTEx\", */ },\r\n0x0810: { /* n:\"SXViewEx9\", */ },\r\n0x0812: { /* n:\"ContinueFrt\", */ },\r\n0x0813: { /* n:\"RealTimeData\", */ },\r\n0x0850: { /* n:\"ChartFrtInfo\", */ },\r\n0x0851: { /* n:\"FrtWrapper\", */ },\r\n0x0852: { /* n:\"StartBlock\", */ },\r\n0x0853: { /* n:\"EndBlock\", */ },\r\n0x0854: { /* n:\"StartObject\", */ },\r\n0x0855: { /* n:\"EndObject\", */ },\r\n0x0856: { /* n:\"CatLab\", */ },\r\n0x0857: { /* n:\"YMult\", */ },\r\n0x0858: { /* n:\"SXViewLink\", */ },\r\n0x0859: { /* n:\"PivotChartBits\", */ },\r\n0x085a: { /* n:\"FrtFontList\", */ },\r\n0x0862: { /* n:\"SheetExt\", */ },\r\n0x0863: { /* n:\"BookExt\", */ r:12},\r\n0x0864: { /* n:\"SXAddl\", */ },\r\n0x0865: { /* n:\"CrErr\", */ },\r\n0x0866: { /* n:\"HFPicture\", */ },\r\n0x0867: { /* n:\"FeatHdr\", */ f:parsenoop2 },\r\n0x0868: { /* n:\"Feat\", */ },\r\n0x086a: { /* n:\"DataLabExt\", */ },\r\n0x086b: { /* n:\"DataLabExtContents\", */ },\r\n0x086c: { /* n:\"CellWatch\", */ },\r\n0x0871: { /* n:\"FeatHdr11\", */ },\r\n0x0872: { /* n:\"Feature11\", */ },\r\n0x0874: { /* n:\"DropDownObjIds\", */ },\r\n0x0875: { /* n:\"ContinueFrt11\", */ },\r\n0x0876: { /* n:\"DConn\", */ },\r\n0x0877: { /* n:\"List12\", */ },\r\n0x0878: { /* n:\"Feature12\", */ },\r\n0x0879: { /* n:\"CondFmt12\", */ },\r\n0x087a: { /* n:\"CF12\", */ },\r\n0x087b: { /* n:\"CFEx\", */ },\r\n0x087c: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\r\n0x087d: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\r\n0x087e: { /* n:\"AutoFilter12\", */ },\r\n0x087f: { /* n:\"ContinueFrt12\", */ },\r\n0x0884: { /* n:\"MDTInfo\", */ },\r\n0x0885: { /* n:\"MDXStr\", */ },\r\n0x0886: { /* n:\"MDXTuple\", */ },\r\n0x0887: { /* n:\"MDXSet\", */ },\r\n0x0888: { /* n:\"MDXProp\", */ },\r\n0x0889: { /* n:\"MDXKPI\", */ },\r\n0x088a: { /* n:\"MDB\", */ },\r\n0x088b: { /* n:\"PLV\", */ },\r\n0x088c: { /* n:\"Compat12\", */ f:parsebool, r:12 },\r\n0x088d: { /* n:\"DXF\", */ },\r\n0x088e: { /* n:\"TableStyles\", */ r:12 },\r\n0x088f: { /* n:\"TableStyle\", */ },\r\n0x0890: { /* n:\"TableStyleElement\", */ },\r\n0x0892: { /* n:\"StyleExt\", */ },\r\n0x0893: { /* n:\"NamePublish\", */ },\r\n0x0894: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\r\n0x0895: { /* n:\"SortData\", */ },\r\n0x0896: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\r\n0x0897: { /* n:\"GUIDTypeLib\", */ },\r\n0x0898: { /* n:\"FnGrp12\", */ },\r\n0x0899: { /* n:\"NameFnGrp12\", */ },\r\n0x089a: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\r\n0x089b: { /* n:\"CompressPictures\", */ f:parsenoop2 },\r\n0x089c: { /* n:\"HeaderFooter\", */ },\r\n0x089d: { /* n:\"CrtLayout12\", */ },\r\n0x089e: { /* n:\"CrtMlFrt\", */ },\r\n0x089f: { /* n:\"CrtMlFrtContinue\", */ },\r\n0x08a3: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\r\n0x08a4: { /* n:\"ShapePropsStream\", */ },\r\n0x08a5: { /* n:\"TextPropsStream\", */ },\r\n0x08a6: { /* n:\"RichTextStream\", */ },\r\n0x08a7: { /* n:\"CrtLayout12A\", */ },\r\n0x1001: { /* n:\"Units\", */ },\r\n0x1002: { /* n:\"Chart\", */ },\r\n0x1003: { /* n:\"Series\", */ },\r\n0x1006: { /* n:\"DataFormat\", */ },\r\n0x1007: { /* n:\"LineFormat\", */ },\r\n0x1009: { /* n:\"MarkerFormat\", */ },\r\n0x100a: { /* n:\"AreaFormat\", */ },\r\n0x100b: { /* n:\"PieFormat\", */ },\r\n0x100c: { /* n:\"AttachedLabel\", */ },\r\n0x100d: { /* n:\"SeriesText\", */ },\r\n0x1014: { /* n:\"ChartFormat\", */ },\r\n0x1015: { /* n:\"Legend\", */ },\r\n0x1016: { /* n:\"SeriesList\", */ },\r\n0x1017: { /* n:\"Bar\", */ },\r\n0x1018: { /* n:\"Line\", */ },\r\n0x1019: { /* n:\"Pie\", */ },\r\n0x101a: { /* n:\"Area\", */ },\r\n0x101b: { /* n:\"Scatter\", */ },\r\n0x101c: { /* n:\"CrtLine\", */ },\r\n0x101d: { /* n:\"Axis\", */ },\r\n0x101e: { /* n:\"Tick\", */ },\r\n0x101f: { /* n:\"ValueRange\", */ },\r\n0x1020: { /* n:\"CatSerRange\", */ },\r\n0x1021: { /* n:\"AxisLine\", */ },\r\n0x1022: { /* n:\"CrtLink\", */ },\r\n0x1024: { /* n:\"DefaultText\", */ },\r\n0x1025: { /* n:\"Text\", */ },\r\n0x1026: { /* n:\"FontX\", */ f:parseuint16 },\r\n0x1027: { /* n:\"ObjectLink\", */ },\r\n0x1032: { /* n:\"Frame\", */ },\r\n0x1033: { /* n:\"Begin\", */ },\r\n0x1034: { /* n:\"End\", */ },\r\n0x1035: { /* n:\"PlotArea\", */ },\r\n0x103a: { /* n:\"Chart3d\", */ },\r\n0x103c: { /* n:\"PicF\", */ },\r\n0x103d: { /* n:\"DropBar\", */ },\r\n0x103e: { /* n:\"Radar\", */ },\r\n0x103f: { /* n:\"Surf\", */ },\r\n0x1040: { /* n:\"RadarArea\", */ },\r\n0x1041: { /* n:\"AxisParent\", */ },\r\n0x1043: { /* n:\"LegendException\", */ },\r\n0x1044: { /* n:\"ShtProps\", */ f:parse_ShtProps },\r\n0x1045: { /* n:\"SerToCrt\", */ },\r\n0x1046: { /* n:\"AxesUsed\", */ },\r\n0x1048: { /* n:\"SBaseRef\", */ },\r\n0x104a: { /* n:\"SerParent\", */ },\r\n0x104b: { /* n:\"SerAuxTrend\", */ },\r\n0x104e: { /* n:\"IFmtRecord\", */ },\r\n0x104f: { /* n:\"Pos\", */ },\r\n0x1050: { /* n:\"AlRuns\", */ },\r\n0x1051: { /* n:\"BRAI\", */ },\r\n0x105b: { /* n:\"SerAuxErrBar\", */ },\r\n0x105c: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\r\n0x105d: { /* n:\"SerFmt\", */ },\r\n0x105f: { /* n:\"Chart3DBarShape\", */ },\r\n0x1060: { /* n:\"Fbi\", */ },\r\n0x1061: { /* n:\"BopPop\", */ },\r\n0x1062: { /* n:\"AxcExt\", */ },\r\n0x1063: { /* n:\"Dat\", */ },\r\n0x1064: { /* n:\"PlotGrowth\", */ },\r\n0x1065: { /* n:\"SIIndex\", */ },\r\n0x1066: { /* n:\"GelFrame\", */ },\r\n0x1067: { /* n:\"BopPopCustom\", */ },\r\n0x1068: { /* n:\"Fbi2\", */ },\r\n\r\n0x0000: { /* n:\"Dimensions\", */ f:parse_Dimensions },\r\n0x0001: { /* n:\"BIFF2BLANK\", */ },\r\n0x0002: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\r\n0x0003: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\r\n0x0004: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\r\n0x0005: { /* n:\"BoolErr\", */ f:parse_BoolErr },\r\n0x0007: { /* n:\"String\", */ f:parse_BIFF2STRING },\r\n0x0008: { /* n:\"BIFF2ROW\", */ },\r\n0x0009: { /* n:\"BOF\", */ f:parse_BOF },\r\n0x000b: { /* n:\"Index\", */ },\r\n0x0016: { /* n:\"ExternCount\", */ f:parseuint16 },\r\n0x001e: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\r\n0x001f: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\r\n0x0020: { /* n:\"BIFF2COLINFO\", */ },\r\n0x0021: { /* n:\"Array\", */ f:parse_Array },\r\n0x0024: { /* n:\"COLWIDTH\", */ },\r\n0x0025: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\r\n\t// 0x2c ??\r\n\t// 0x2d ??\r\n\t// 0x2e ??\r\n\t// 0x30 FONTCOUNT: number of fonts\r\n0x0032: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\r\n\t// 0x35: INFOOPTS\r\n\t// 0x36: TABLE (BIFF2 only)\r\n\t// 0x37: TABLE2 (BIFF2 only)\r\n\t// 0x38: WNDESK\r\n\t// 0x39 ??\r\n\t// 0x3a: BEGINPREF\r\n\t// 0x3b: ENDPREF\r\n0x003e: { /* n:\"BIFF2WINDOW2\", */ },\r\n\t// 0x3f ??\r\n\t// 0x46: SHOWSCROLL\r\n\t// 0x47: SHOWFORMULA\r\n\t// 0x48: STATUSBAR\r\n\t// 0x49: SHORTMENUS\r\n\t// 0x4A:\r\n\t// 0x4B:\r\n\t// 0x4C:\r\n\t// 0x4E:\r\n\t// 0x4F:\r\n\t// 0x58: TOOLBAR (BIFF3)\r\n\r\n\t/* - - - */\r\n0x0034: { /* n:\"DDEObjName\", */ },\r\n0x0043: { /* n:\"BIFF2XF\", */ },\r\n0x0044: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\r\n0x0045: { /* n:\"BIFF2FONTCLR\", */ },\r\n0x0056: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\r\n0x007e: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\r\n0x007f: { /* n:\"ImData\", */ f:parse_ImData },\r\n0x0087: { /* n:\"Addin\", */ },\r\n0x0088: { /* n:\"Edg\", */ },\r\n0x0089: { /* n:\"Pub\", */ },\r\n\t// 0x8A\r\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\r\n\t// 0x8E\r\n\t// 0x8F\r\n0x0091: { /* n:\"Sub\", */ },\r\n\t// 0x93 STYLE\r\n0x0094: { /* n:\"LHRecord\", */ },\r\n0x0095: { /* n:\"LHNGraph\", */ },\r\n0x0096: { /* n:\"Sound\", */ },\r\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\r\n\t// 0xA3\r\n\t// 0xA8\r\n0x00a9: { /* n:\"CoordList\", */ },\r\n0x00ab: { /* n:\"GCW\", */ },\r\n0x00bc: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\r\n0x00bf: { /* n:\"ToolbarHdr\", */ },\r\n0x00c0: { /* n:\"ToolbarEnd\", */ },\r\n0x00c2: { /* n:\"AddMenu\", */ },\r\n0x00c3: { /* n:\"DelMenu\", */ },\r\n0x00d6: { /* n:\"RString\", */ f:parse_RString },\r\n0x00df: { /* n:\"UDDesc\", */ },\r\n0x00ea: { /* n:\"TabIdConf\", */ },\r\n0x0162: { /* n:\"XL5Modify\", */ },\r\n0x01a5: { /* n:\"FileSharing2\", */ },\r\n0x0206: { /* n:\"Formula\", */ f:parse_Formula },\r\n0x0209: { /* n:\"BOF\", */ f:parse_BOF },\r\n0x0218: { /* n:\"Lbl\", */ f:parse_Lbl },\r\n0x0223: { /* n:\"ExternName\", */ f:parse_ExternName },\r\n0x0231: { /* n:\"Font\", */ },\r\n0x0243: { /* n:\"BIFF3XF\", */ },\r\n0x0406: { /* n:\"Formula\", */ f:parse_Formula },\r\n0x0409: { /* n:\"BOF\", */ f:parse_BOF },\r\n0x0443: { /* n:\"BIFF4XF\", */ },\r\n0x086d: { /* n:\"FeatInfo\", */ },\r\n0x0873: { /* n:\"FeatInfo11\", */ },\r\n0x0881: { /* n:\"SXAddl12\", */ },\r\n0x08c0: { /* n:\"AutoWebPub\", */ },\r\n0x08c1: { /* n:\"ListObj\", */ },\r\n0x08c2: { /* n:\"ListField\", */ },\r\n0x08c3: { /* n:\"ListDV\", */ },\r\n0x08c4: { /* n:\"ListCondFmt\", */ },\r\n0x08c5: { /* n:\"ListCF\", */ },\r\n0x08c6: { /* n:\"FMQry\", */ },\r\n0x08c7: { /* n:\"FMSQry\", */ },\r\n0x08c8: { /* n:\"PLV\", */ },\r\n0x08c9: { /* n:\"LnExt\", */ },\r\n0x08ca: { /* n:\"MkrExt\", */ },\r\n0x08cb: { /* n:\"CrtCoopt\", */ },\r\n0x08d6: { /* n:\"FRTArchId$\", */ r:12 },\r\n\r\n\t/* --- multiplan 4 records --- */\r\n0x0065: { /* n:\"\", */ }, // one per window\r\n0x0066: { /* n:\"\", */ }, // calc settings\r\n0x0069: { /* n:\"\", */ }, // print header\r\n0x006a: { /* n:\"\", */ }, // print footer\r\n0x006b: { /* n:\"\", */ }, // print settings\r\n0x006d: { /* n:\"\", */ }, // one per window\r\n0x0070: { /* n:\"\", */ }, // includes default col width\r\n0x0072: { /* n:\"\", */ }, // includes selected cell\r\n\r\n0x7262: {}\r\n};\r\n\r\nfunction write_biff_rec(ba, type, payload, length) {\r\n\tvar t = type;\r\n\tif(isNaN(t)) return;\r\n\tvar len = length || (payload||[]).length || 0;\r\n\tvar o = ba.next(4);\r\n\to.write_shift(2, t);\r\n\to.write_shift(2, len);\r\n\tif(len > 0 && is_buf(payload)) ba.push(payload);\r\n}\r\n\r\nfunction write_biff_continue(ba, type, payload, length) {\r\n\tvar len = length || (payload||[]).length || 0;\r\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\r\n\tvar t = type;\r\n\tif(isNaN(t)) return;\r\n\tvar parts = payload.parts || [], sidx = 0;\r\n\tvar i = 0, w = 0;\r\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\r\n\tvar o = ba.next(4);\r\n\to.write_shift(2, t);\r\n\to.write_shift(2, w);\r\n\tba.push(payload.slice(i, i + w));\r\n\ti += w;\r\n\twhile(i < len) {\r\n\t\to = ba.next(4);\r\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\r\n\t\tw = 0;\r\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\r\n\t\to.write_shift(2, w);\r\n\t\tba.push(payload.slice(i, i+w)); i+= w;\r\n\t}\r\n}\r\n\r\nfunction write_BIFF2Cell(out, r, c) {\r\n\tif(!out) out = new_buf(7);\r\n\tout.write_shift(2, r);\r\n\tout.write_shift(2, c);\r\n\tout.write_shift(2, 0);\r\n\tout.write_shift(1, 0);\r\n\treturn out;\r\n}\r\n\r\nfunction write_BIFF2BERR(r, c, val, t) {\r\n\tvar out = new_buf(9);\r\n\twrite_BIFF2Cell(out, r, c);\r\n\twrite_Bes(val, t || 'b', out);\r\n\treturn out;\r\n}\r\n\r\n/* TODO: codepage, large strings */\r\nfunction write_BIFF2LABEL(r, c, val) {\r\n\tvar out = new_buf(8 + 2*val.length);\r\n\twrite_BIFF2Cell(out, r, c);\r\n\tout.write_shift(1, val.length);\r\n\tout.write_shift(val.length, val, 'sbcs');\r\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\r\n}\r\n\r\nfunction write_ws_biff2_cell(ba, cell, R, C) {\r\n\tif(cell.v != null) switch(cell.t) {\r\n\t\tcase 'd': case 'n':\r\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\r\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\r\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\r\n\t\t\telse\r\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\r\n\t\t\treturn;\r\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\r\n\t\t/* TODO: codepage, sst */\r\n\t\tcase 's': case 'str':\r\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||\"\").slice(0,255)));\r\n\t\t\treturn;\r\n\t}\r\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\r\n}\r\n\r\nfunction write_ws_biff2(ba, ws, idx, opts) {\r\n\tvar dense = Array.isArray(ws);\r\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols = [];\r\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\r\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\r\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\r\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\r\n\t\tref = encode_range(range);\r\n\t}\r\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\r\n\t\trr = encode_row(R);\r\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\r\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\r\n\t\t\tref = cols[C] + rr;\r\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\r\n\t\t\tif(!cell) continue;\r\n\t\t\t/* write cell */\r\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/* Based on test files */\r\nfunction write_biff2_buf(wb, opts) {\r\n\tvar o = opts || {};\r\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\r\n\tvar ba = buf_array();\r\n\tvar idx = 0;\r\n\tfor(var i=0;i 0xFF || range.e.r >= MAX_ROWS) {\r\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\r\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\r\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\r\n\t}\r\n\r\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\r\n\t/* [Uncalced] Index */\r\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\r\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\r\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\r\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\r\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\r\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\r\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\r\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\r\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\r\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\r\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\r\n\t/* Header (string) */\r\n\t/* Footer (string) */\r\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\r\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\r\n\t/* ... */\r\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\r\n\t/* ... */\r\n\twrite_biff_rec(ba, 0x0200 /* Dimensions */, write_Dimensions(range, opts));\r\n\t/* ... */\r\n\r\n\tif(b8) ws['!links'] = [];\r\n\tvar comments = [];\r\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\r\n\t\trr = encode_row(R);\r\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\r\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\r\n\t\t\tref = cols[C] + rr;\r\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\r\n\t\t\tif(!cell) continue;\r\n\t\t\t/* write cell */\r\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\r\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\r\n\t\t\tif(b8 && cell.c) comments.push([ref, cell.c]);\r\n\t\t}\r\n\t}\r\n\tvar cname = _sheet.CodeName || _sheet.name || s;\r\n\t/* ... */\r\n\t// if(b8) comments.forEach(function(comment) { write_biff_rec(ba, 0x001c /* Note */, write_NoteSh(comment)); });\r\n\t/* ... */\r\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\r\n\t/* ... */\r\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\r\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\r\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\r\n\t/* [DVAL] */\r\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\r\n\t/* *WebPub *CellWatch [SheetExt] */\r\n\tif(b8) write_FEAT(ba, ws);\r\n\t/* *FEAT11 *RECORD12 */\r\n\twrite_biff_rec(ba, 0x000a /* EOF */);\r\n\treturn ba.end();\r\n}\r\n\r\n/* [MS-XLS] 2.1.7.20.3 */\r\nfunction write_biff8_global(wb, bufs, opts) {\r\n\tvar A = buf_array();\r\n\tvar _WB = ((wb||{}).Workbook||{});\r\n\tvar _sheets = (_WB.Sheets||[]);\r\n\tvar _wb = _WB.WBProps||{};\r\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\r\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\r\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\r\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\r\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\r\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\r\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\r\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\r\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\r\n\t/* [FileSharing] */\r\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\r\n\t/* *2047 Lel */\r\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\r\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\r\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\r\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\r\n\t/* [ObNoMacros] */\r\n\tif(b8 && wb.vbaraw) {\r\n\t\tvar cname = _wb.CodeName || \"ThisWorkbook\";\r\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\r\n\t}\r\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\r\n\t/* *FnGroupName *FnGrp12 */\r\n\t/* *Lbl */\r\n\t/* [OleObjectSize] */\r\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\r\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\r\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\r\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\r\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\r\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\r\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\r\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\r\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\r\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\r\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\r\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\r\n\t/* ... */\r\n\twrite_FONTS_biff8(A, wb, opts);\r\n\twrite_FMTS_biff8(A, wb.SSF, opts);\r\n\twrite_CELLXFS_biff8(A, opts);\r\n\t/* ... */\r\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\r\n\tvar a = A.end();\r\n\r\n\tvar C = buf_array();\r\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\r\n\tif(b8) write_biff_rec(C, 0x008C /* Country */, write_Country());\r\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\r\n\r\n\t/* BIFF8: [SST *Continue] ExtSST */\r\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC /* SST */, write_SST(opts.Strings, opts));\r\n\r\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\r\n\twrite_biff_rec(C, 0x000A /* EOF */);\r\n\tvar c = C.end();\r\n\r\n\tvar B = buf_array();\r\n\tvar blen = 0, j = 0;\r\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\r\n\tvar start = a.length + blen + c.length;\r\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\r\n\t\tvar _sheet = _sheets[j] || ({});\r\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\r\n\t\tstart += bufs[j].length;\r\n\t}\r\n\t/* 1*BoundSheet8 */\r\n\tvar b = B.end();\r\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\r\n\r\n\tvar out = [];\r\n\tif(a.length) out.push(a);\r\n\tif(b.length) out.push(b);\r\n\tif(c.length) out.push(c);\r\n\treturn bconcat(out);\r\n}\r\n\r\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\r\nfunction write_biff8_buf(wb, opts) {\r\n\tvar o = opts || {};\r\n\tvar bufs = [];\r\n\r\n\tif(wb && !wb.SSF) {\r\n\t\twb.SSF = dup(table_fmt);\r\n\t}\r\n\tif(wb && wb.SSF) {\r\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\r\n\t\t// $FlowIgnore\r\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\r\n\t\to.ssf = wb.SSF;\r\n\t}\r\n\r\n\to.Strings = []; o.Strings.Count = 0; o.Strings.Unique = 0;\r\n\tfix_write_opts(o);\r\n\r\n\to.cellXfs = [];\r\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\r\n\r\n\tif(!wb.Props) wb.Props = {};\r\n\r\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\r\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\r\n\treturn bconcat(bufs);\r\n}\r\n\r\nfunction write_biff_buf(wb, opts) {\r\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\r\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\r\n\t\tif(!ws || !ws[\"!ref\"]) continue;\r\n\t\tvar range = decode_range(ws[\"!ref\"]);\r\n\t\tif(range.e.c > 255) { // note: 255 is IV\r\n\t\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255). Data may be lost.\");\r\n\t\t}\r\n\t}\r\n\r\n\tvar o = opts || {};\r\n\tswitch(o.biff || 2) {\r\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\r\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\r\n\t}\r\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\r\n}\r\n/* note: browser DOM element cannot see mso- style attrs, must parse */\r\nfunction html_to_sheet(str, _opts) {\r\n\tvar opts = _opts || {};\r\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\r\n\tvar ws = opts.dense ? ([]) : ({});\r\n\tstr = str.replace(//g, \"\");\r\n\tvar mtch = str.match(/\");\r\n\tvar mtch2 = str.match(/<\\/table/i);\r\n\tvar i = mtch.index, j = mtch2 && mtch2.index || str.length;\r\n\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, \"\");\r\n\tvar R = -1, C = 0, RS = 0, CS = 0;\r\n\tvar range = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\r\n\tvar merges = [];\r\n\tfor(i = 0; i < rows.length; ++i) {\r\n\t\tvar row = rows[i].trim();\r\n\t\tvar hd = row.slice(0,3).toLowerCase();\r\n\t\tif(hd == \"/i);\r\n\t\tfor(j = 0; j < cells.length; ++j) {\r\n\t\t\tvar cell = cells[j].trim();\r\n\t\t\tif(!cell.match(/\")) > -1) m = m.slice(cc+1);\r\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\r\n\t\t\t\tvar _merge = merges[midx];\r\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\r\n\t\t\t}\r\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\r\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\r\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\r\n\t\t\tvar _t = tag.t || tag[\"data-t\"] || \"\";\r\n\t\t\t/* TODO: generate stub cells */\r\n\t\t\tif(!m.length) { C += CS; continue; }\r\n\t\t\tm = htmldecode(m);\r\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\r\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\r\n\t\t\tif(!m.length) { C += CS; continue; }\r\n\t\t\tvar o = {t:'s', v:m};\r\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\r\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\r\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\r\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\r\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\r\n\t\t\t\to = ({t:'d', v:parseDate(m)});\r\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)});\r\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\r\n\t\t\t}\r\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\r\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\r\n\t\t\tC += CS;\r\n\t\t}\r\n\t}\r\n\tws['!ref'] = encode_range(range);\r\n\tif(merges.length) ws[\"!merges\"] = merges;\r\n\treturn ws;\r\n}\r\nfunction make_html_row(ws, r, R, o) {\r\n\tvar M = (ws['!merges'] ||[]);\r\n\tvar oo = [];\r\n\tvar sp = ({});\r\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\r\n\t\tvar RS = 0, CS = 0;\r\n\t\tfor(var j = 0; j < M.length; ++j) {\r\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\r\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\r\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\r\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\r\n\t\t}\r\n\t\tif(RS < 0) continue;\r\n\t\tvar coord = encode_cell({r:R,c:C});\r\n\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\r\n\t\t/* TODO: html entities */\r\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\r\n\t\tsp = ({});\r\n\t\tif(RS > 1) sp.rowspan = RS;\r\n\t\tif(CS > 1) sp.colspan = CS;\r\n\t\tif(o.editable) w = '' + w + '';\r\n\t\telse if(cell) {\r\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\r\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\r\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\r\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '' + w + '';\r\n\t\t}\r\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\r\n\t\too.push(writextag('td', w, sp));\r\n\t}\r\n\tvar preamble = \"\";\r\n\treturn preamble + oo.join(\"\") + \"\";\r\n}\r\n\r\nvar HTML_BEGIN = 'SheetJS Table Export';\r\nvar HTML_END = '';\r\n\r\nfunction html_to_workbook(str, opts) {\r\n\tvar mtch = str.match(/[\\s\\S]*?<\\/table>/gi);\r\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find
\");\r\n\tif(mtch.length == 1) {\r\n\t\tvar w = sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\r\n\t\tw.bookType = \"html\";\r\n\t\treturn w;\r\n\t}\r\n\tvar wb = book_new();\r\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\r\n\twb.bookType = \"html\";\r\n\treturn wb;\r\n}\r\n\r\nfunction make_html_preamble(ws, R, o) {\r\n\tvar out = [];\r\n\treturn out.join(\"\") + '';\r\n}\r\n\r\nfunction sheet_to_html(ws, opts/*, wb:?Workbook*/) {\r\n\tvar o = opts || {};\r\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\r\n\tvar footer = o.footer != null ? o.footer : HTML_END;\r\n\tvar out = [header];\r\n\tvar r = decode_range(ws['!ref']);\r\n\to.dense = Array.isArray(ws);\r\n\tout.push(make_html_preamble(ws, r, o));\r\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\r\n\tout.push(\"
\" + footer);\r\n\treturn out.join(\"\");\r\n}\r\n\r\nfunction sheet_add_dom(ws, table, _opts) {\r\n\tvar rows = table.rows;\r\n\tif(!rows) {\r\n\t\t/* not an HTML TABLE */\r\n\t\tthrow \"Unsupported origin when \" + table.tagName + \" is not a TABLE\";\r\n\t}\r\n\r\n\tvar opts = _opts || {};\r\n\tif(DENSE != null) opts.dense = DENSE;\r\n\tvar or_R = 0, or_C = 0;\r\n\tif(opts.origin != null) {\r\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\r\n\t\telse {\r\n\t\t\tvar _origin = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\r\n\t\t\tor_R = _origin.r; or_C = _origin.c;\r\n\t\t}\r\n\t}\r\n\r\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\r\n\tvar range = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\r\n\tif(ws[\"!ref\"]) {\r\n\t\tvar _range = decode_range(ws[\"!ref\"]);\r\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\r\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\r\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\r\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\r\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\r\n\t}\r\n\tvar merges = [], midx = 0;\r\n\tvar rowinfo = ws[\"!rows\"] || (ws[\"!rows\"] = []);\r\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\r\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\r\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\r\n\t\tvar row = rows[_R];\r\n\t\tif (is_dom_element_hidden(row)) {\r\n\t\t\tif (opts.display) continue;\r\n\t\t\trowinfo[R] = {hidden: true};\r\n\t\t}\r\n\t\tvar elts = (row.cells);\r\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\r\n\t\t\tvar elt = elts[_C];\r\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\r\n\t\t\tvar v = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\r\n\t\t\tvar z = elt.getAttribute('data-z') || elt.getAttribute('z');\r\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\r\n\t\t\t\tvar m = merges[midx];\r\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\r\n\t\t\t}\r\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\r\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\r\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\r\n\t\t\tvar o = {t:'s', v:v};\r\n\t\t\tvar _t = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\r\n\t\t\tif(v != null) {\r\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\r\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\r\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\r\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\r\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\r\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\r\n\t\t\t\t\to = ({t:'d', v:parseDate(v)});\r\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)});\r\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(o.z === undefined && z != null) o.z = z;\r\n\t\t\t/* The first link is used. Links are assumed to be fully specified.\r\n\t\t\t * TODO: The right way to process relative links is to make a new */\r\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\r\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\r\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\r\n\t\t\t}\r\n\t\t\tif(l && l.charAt(0) != \"#\" &&\tl.slice(0, 11).toLowerCase() != 'javascript:') o.l = ({ Target: l });\r\n\t\t\tif(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; }\r\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\r\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\r\n\t\t\tC += CS;\r\n\t\t}\r\n\t\t++R;\r\n\t}\r\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\r\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\r\n\tws['!ref'] = encode_range(range);\r\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\r\n\treturn ws;\r\n}\r\n\r\nfunction parse_dom_table(table, _opts) {\r\n\tvar opts = _opts || {};\r\n\tvar ws = opts.dense ? ([]) : ({});\r\n\treturn sheet_add_dom(ws, table, _opts);\r\n}\r\n\r\nfunction table_to_book(table, opts) {\r\n\tvar o = sheet_to_workbook(parse_dom_table(table, opts), opts);\r\n\t//o.bookType = \"dom\"; // TODO: define a type for this\r\n\treturn o;\r\n}\r\n\r\nfunction is_dom_element_hidden(element) {\r\n\tvar display = '';\r\n\tvar get_computed_style = get_get_computed_style_function(element);\r\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\r\n\tif(!display) display = element.style && element.style.display;\r\n\treturn display === 'none';\r\n}\r\n\r\n/* global getComputedStyle */\r\nfunction get_get_computed_style_function(element) {\r\n\t// The proper getComputedStyle implementation is the one defined in the element window\r\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\r\n\t// If it is not available, try to get one from the global namespace\r\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\r\n\treturn null;\r\n}\r\n/* OpenDocument */\r\nfunction parse_text_p(text) {\r\n\t/* 6.1.2 White Space Characters */\r\n\tvar fixed = text\r\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\r\n\t\t.replace(//g,\" \")\r\n\t\t.replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\r\n\t\t.replace(/]*\\/>/g,\"\\t\")\r\n\t\t.replace(//g,\"\\n\");\r\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\r\n\r\n\treturn [v];\r\n}\r\n\r\n/* Note: ODS can stick styles in content.xml or styles.xml, FODS blurs lines */\r\nfunction parse_ods_styles(d, _opts, _nfm) {\r\n\tvar number_format_map = _nfm || {};\r\n\tvar str = xlml_normalize(d);\r\n\txlmlregex.lastIndex = 0;\r\n\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\r\n\tvar Rn, NFtag, NF = \"\", tNF = \"\", y, etpos = 0, tidx = -1, infmt = false, payload = \"\";\r\n\twhile((Rn = xlmlregex.exec(str))) {\r\n\t\tswitch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\r\n\t\t/* Number Format Definitions */\r\n\t\tcase 'number-style': // 16.29.2\r\n\t\tcase 'currency-style': // 16.29.8\r\n\t\tcase 'percentage-style': // 16.29.10\r\n\t\tcase 'date-style': // 16.29.11\r\n\t\tcase 'time-style': // 16.29.19\r\n\t\tcase 'text-style': // 16.29.26\r\n\t\t\tif(Rn[1]==='/') {\r\n\t\t\t\tinfmt = false;\r\n\t\t\t\tif(NFtag['truncate-on-overflow'] == \"false\") {\r\n\t\t\t\t\tif(NF.match(/h/)) NF = NF.replace(/h+/, \"[$&]\");\r\n\t\t\t\t\telse if(NF.match(/m/)) NF = NF.replace(/m+/, \"[$&]\");\r\n\t\t\t\t\telse if(NF.match(/s/)) NF = NF.replace(/s+/, \"[$&]\");\r\n\t\t\t\t}\r\n\t\t\t\tnumber_format_map[NFtag.name] = NF;\r\n\t\t\t\tNF = \"\";\r\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\r\n\t\t\t\tinfmt = true;\r\n\t\t\t\tNF = \"\";\r\n\t\t\t\tNFtag = parsexmltag(Rn[0], false);\r\n\t\t\t} break;\r\n\r\n\t\t// LibreOffice bug https://bugs.documentfoundation.org/show_bug.cgi?id=149484\r\n\t\tcase 'boolean-style': // 16.29.24\r\n\t\t\tif(Rn[1]==='/') {\r\n\t\t\t\tinfmt = false;\r\n\t\t\t\tnumber_format_map[NFtag.name] = \"General\";\r\n\t\t\t\tNF = \"\";\r\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\r\n\t\t\t\tinfmt = true;\r\n\t\t\t\tNF = \"\";\r\n\t\t\t\tNFtag = parsexmltag(Rn[0], false);\r\n\t\t\t} break;\r\n\r\n\t\t/* Number Format Elements */\r\n\t\tcase 'boolean': // 16.29.25\r\n\t\t\tNF += \"General\"; // ODF spec is unfortunately underspecified here\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'text': // 16.29.27\r\n\t\t\tif(Rn[1]==='/') {\r\n\t\t\t\tpayload = str.slice(tidx, xlmlregex.lastIndex - Rn[0].length);\r\n\t\t\t\t// NOTE: Excel has a different interpretation of \"%%\" and friends\r\n\t\t\t\tif(payload == \"%\" && NFtag[0] == ' 16.29.12\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\tswitch(y[\"style\"]) {\r\n\t\t\t\tcase \"short\": NF += \"d\"; break;\r\n\t\t\t\tcase \"long\": NF += \"dd\"; break;\r\n\t\t\t\tdefault: NF += \"dd\"; break; // TODO: error condition\r\n\t\t\t}\r\n\t\t} break;\r\n\r\n\t\tcase 'day-of-week': { // 16.29.16\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\tswitch(y[\"style\"]) {\r\n\t\t\t\tcase \"short\": NF += \"ddd\"; break;\r\n\t\t\t\tcase \"long\": NF += \"dddd\"; break;\r\n\t\t\t\tdefault: NF += \"ddd\"; break;\r\n\t\t\t}\r\n\t\t} break;\r\n\r\n\t\tcase 'era': { // 16.29.15 TODO: proper mapping\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\tswitch(y[\"style\"]) {\r\n\t\t\t\tcase \"short\": NF += \"ee\"; break;\r\n\t\t\t\tcase \"long\": NF += \"eeee\"; break;\r\n\t\t\t\tdefault: NF += \"eeee\"; break; // TODO: error condition\r\n\t\t\t}\r\n\t\t} break;\r\n\r\n\t\tcase 'hours': { // 16.29.20\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\tswitch(y[\"style\"]) {\r\n\t\t\t\tcase \"short\": NF += \"h\"; break;\r\n\t\t\t\tcase \"long\": NF += \"hh\"; break;\r\n\t\t\t\tdefault: NF += \"hh\"; break; // TODO: error condition\r\n\t\t\t}\r\n\t\t} break;\r\n\r\n\t\tcase 'minutes': { // 16.29.21\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\tswitch(y[\"style\"]) {\r\n\t\t\t\tcase \"short\": NF += \"m\"; break;\r\n\t\t\t\tcase \"long\": NF += \"mm\"; break;\r\n\t\t\t\tdefault: NF += \"mm\"; break; // TODO: error condition\r\n\t\t\t}\r\n\t\t} break;\r\n\r\n\t\tcase 'month': { // 16.29.13\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\tif(y[\"textual\"]) NF += \"mm\";\r\n\t\t\tswitch(y[\"style\"]) {\r\n\t\t\t\tcase \"short\": NF += \"m\"; break;\r\n\t\t\t\tcase \"long\": NF += \"mm\"; break;\r\n\t\t\t\tdefault: NF += \"m\"; break;\r\n\t\t\t}\r\n\t\t} break;\r\n\r\n\t\tcase 'seconds': { // 16.29.22\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\tswitch(y[\"style\"]) {\r\n\t\t\t\tcase \"short\": NF += \"s\"; break;\r\n\t\t\t\tcase \"long\": NF += \"ss\"; break;\r\n\t\t\t\tdefault: NF += \"ss\"; break; // TODO: error condition\r\n\t\t\t}\r\n\t\t\tif(y[\"decimal-places\"]) NF += \".\" + fill(\"0\", +y[\"decimal-places\"]);\r\n\t\t} break;\r\n\r\n\t\tcase 'year': { // 16.29.14\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\tswitch(y[\"style\"]) {\r\n\t\t\t\tcase \"short\": NF += \"yy\"; break;\r\n\t\t\t\tcase \"long\": NF += \"yyyy\"; break;\r\n\t\t\t\tdefault: NF += \"yy\"; break; // TODO: error condition\r\n\t\t\t}\r\n\t\t} break;\r\n\r\n\t\tcase 'am-pm': // 16.29.23\r\n\t\t\tNF += \"AM/PM\"; // LO autocorrects A/P -> AM/PM\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'week-of-year': // 16.29.17\r\n\t\tcase 'quarter': // 16.29.18\r\n\t\t\tconsole.error(\"Excel does not support ODS format token \" + Rn[3]);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'fill-character': // 16.29.5\r\n\t\t\tif(Rn[1]==='/') {\r\n\t\t\t\tpayload = str.slice(tidx, xlmlregex.lastIndex - Rn[0].length);\r\n\t\t\t\t// NOTE: Excel has a different interpretation of \"%%\" and friends\r\n\t\t\t\tNF += '\"' + payload.replace(/\"/g, '\"\"') + '\"*';\r\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\r\n\t\t\t\ttidx = xlmlregex.lastIndex;\r\n\t\t\t} break;\r\n\r\n\t\tcase 'scientific-number': // 16.29.6\r\n\t\t\t// TODO: find a mapping for all parameters\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\tNF += \"0.\" + fill(\"0\", +y[\"min-decimal-places\"] || +y[\"decimal-places\"] || 2) + fill(\"?\", +y[\"decimal-places\"] - +y[\"min-decimal-places\"] || 0) + \"E\" + (parsexmlbool(y[\"forced-exponent-sign\"]) ? \"+\" : \"\") + fill(\"0\", +y[\"min-exponent-digits\"] || 2);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'fraction': // 16.29.7\r\n\t\t\t// TODO: find a mapping for all parameters\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\tif(!+y[\"min-integer-digits\"]) NF += \"#\";\r\n\t\t\telse NF += fill(\"0\", +y[\"min-integer-digits\"]);\r\n\t\t\tNF += \" \";\r\n\t\t\tNF += fill(\"?\", +y[\"min-numerator-digits\"] || 1);\r\n\t\t\tNF += \"/\";\r\n\t\t\tif(+y[\"denominator-value\"]) NF += y[\"denominator-value\"];\r\n\t\t\telse NF += fill(\"?\", +y[\"min-denominator-digits\"] || 1);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'currency-symbol': // 16.29.9\r\n\t\t\t// TODO: localization with [$-...]\r\n\t\t\tif(Rn[1]==='/') {\r\n\t\t\t\tNF += '\"' + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/\"/g, '\"\"') + '\"';\r\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\r\n\t\t\t\ttidx = xlmlregex.lastIndex;\r\n\t\t\t} else NF += \"$\";\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'text-properties': // 16.29.29\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\tswitch((y[\"color\"]||\"\").toLowerCase().replace(\"#\", \"\")) {\r\n\t\t\t\tcase \"ff0000\": case \"red\": NF = \"[Red]\" + NF; break;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'text-content': // 16.29.28\r\n\t\t\tNF += \"@\";\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'map': // 16.3\r\n\t\t\t// TODO: handle more complex maps\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\tif(unescapexml(y[\"condition\"]) == \"value()>=0\") NF = number_format_map[y[\"apply-style-name\"]] + \";\" + NF;\r\n\t\t\telse console.error(\"ODS number format may be incorrect: \" + y[\"condition\"]);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'number': // 16.29.3\r\n\t\t\t// TODO: handle all the attributes\r\n\t\t\tif(Rn[1]==='/') break;\r\n\t\t\ty = parsexmltag(Rn[0], false);\r\n\t\t\ttNF = \"\";\r\n\t\t\ttNF += fill(\"0\", +y[\"min-integer-digits\"] || 1);\r\n\t\t\tif(parsexmlbool(y[\"grouping\"])) tNF = commaify(fill(\"#\", Math.max(0, 4 - tNF.length)) + tNF);\r\n\t\t\tif(+y[\"min-decimal-places\"] || +y[\"decimal-places\"]) tNF += \".\";\r\n\t\t\tif(+y[\"min-decimal-places\"]) tNF += fill(\"0\", +y[\"min-decimal-places\"] || 1);\r\n\t\t\tif(+y[\"decimal-places\"] - (+y[\"min-decimal-places\"]||0)) tNF += fill(\"0\", +y[\"decimal-places\"] - (+y[\"min-decimal-places\"]||0)); // TODO: should this be \"#\" ?\r\n\t\t\tNF += tNF;\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'embedded-text': // 16.29.4\r\n\t\t\t// TODO: verify interplay with grouping et al\r\n\t\t\tif(Rn[1]==='/') {\r\n\t\t\t\tif(etpos == 0) NF += '\"' + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/\"/g, '\"\"') + '\"';\r\n\t\t\t\telse NF = NF.slice(0, etpos) + '\"' + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/\"/g, '\"\"') + '\"' + NF.slice(etpos);\r\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\r\n\t\t\t\ttidx = xlmlregex.lastIndex;\r\n\t\t\t\tetpos = -+parsexmltag(Rn[0], false)[\"position\"] || 0;\r\n\t\t\t} break;\r\n\r\n\t}}\r\n\treturn number_format_map;\r\n}\r\n\r\nfunction parse_content_xml(d, _opts, _nfm) {\r\n\t\tvar opts = _opts || {};\r\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\r\n\t\tvar str = xlml_normalize(d);\r\n\t\tvar state = [], tmp;\r\n\t\tvar tag;\r\n\t\tvar nfidx, NF = \"\", pidx = 0;\r\n\t\tvar sheetag;\r\n\t\tvar rowtag;\r\n\t\tvar Sheets = {}, SheetNames = [];\r\n\t\tvar ws = opts.dense ? ([]) : ({});\r\n\t\tvar Rn, q;\r\n\t\tvar ctag = ({value:\"\"});\r\n\t\tvar textp = \"\", textpidx = 0, textptag;\r\n\t\tvar textR = [];\r\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\r\n\t\tvar row_ol = 0;\r\n\t\tvar number_format_map = _nfm || {}, styles = {};\r\n\t\tvar merges = [], mrange = {}, mR = 0, mC = 0;\r\n\t\tvar rowinfo = [], rowpeat = 1, colpeat = 1;\r\n\t\tvar arrayf = [];\r\n\t\tvar WB = {Names:[], WBProps:{}};\r\n\t\tvar atag = ({});\r\n\t\tvar _Ref = [\"\", \"\"];\r\n\t\tvar comments = [], comment = ({});\r\n\t\tvar creator = \"\", creatoridx = 0;\r\n\t\tvar isstub = false, intable = false;\r\n\t\tvar i = 0;\r\n\t\tvar baddate = 0;\r\n\t\txlmlregex.lastIndex = 0;\r\n\t\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\r\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\r\n\r\n\t\t\tcase 'table': case '工作表': // 9.1.2 \r\n\t\t\t\tif(Rn[1]==='/') {\r\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\r\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\r\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\r\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\r\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\r\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\r\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\r\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\r\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\r\n\t\t\t\t\tSheetNames.push(sheetag.name);\r\n\t\t\t\t\tSheets[sheetag.name] = ws;\r\n\t\t\t\t\tintable = false;\r\n\t\t\t\t}\r\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\r\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\r\n\t\t\t\t\tR = C = -1;\r\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\r\n\t\t\t\t\tws = opts.dense ? ([]) : ({}); merges = [];\r\n\t\t\t\t\trowinfo = [];\r\n\t\t\t\t\tintable = true;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'table-row-group': // 9.1.9 \r\n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'table-row': case '行': // 9.1.3 \r\n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\r\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\r\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\r\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\r\n\t\t\t\t/* TODO: remove magic */\r\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\r\n\t\t\t\tC = -1; break;\r\n\t\t\tcase 'covered-table-cell': // 9.1.5 \r\n\t\t\t\tif(Rn[1] !== '/') ++C;\r\n\t\t\t\tif(opts.sheetStubs) {\r\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\r\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\r\n\t\t\t\t}\r\n\t\t\t\ttextp = \"\"; textR = [];\r\n\t\t\t\tbreak; /* stub */\r\n\t\t\tcase 'table-cell': case '数据':\r\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\r\n\t\t\t\t\t++C;\r\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\r\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\r\n\t\t\t\t\tq = ({t:'z', v:null});\r\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\r\n\t\t\t\t\tif(ctag[\"style-name\"] && styles[ctag[\"style-name\"]]) q.z = styles[ctag[\"style-name\"]];\r\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\r\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\r\n\t\t\t\t\t\tif(opts.dense) {\r\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\r\n\t\t\t\t\t\t\tws[R][C] = q;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tC+= colpeat-1;\r\n\t\t\t\t} else if(Rn[1]!=='/') {\r\n\t\t\t\t\t++C;\r\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\r\n\t\t\t\t\tcolpeat = 1;\r\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\r\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\r\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\r\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\r\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\r\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\r\n\t\t\t\t\tcomments = []; comment = ({});\r\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null});\r\n\t\t\t\t\tif(ctag[\"style-name\"] && styles[ctag[\"style-name\"]]) q.z = styles[ctag[\"style-name\"]];\r\n\t\t\t\t\tif(opts.cellFormula) {\r\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\r\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\r\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\r\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\r\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\r\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\r\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\r\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\r\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\r\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\r\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\r\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\r\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\r\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\r\n\t\t\t\t\t\tmerges.push(mrange);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\r\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\r\n\r\n\t\t\t\t\t/* 19.385 office:value-type */\r\n\t\t\t\t\tswitch(q.t) {\r\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']) || (+ctag['boolean-value'] >= 1); break;\r\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\r\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\r\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\r\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\r\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v, WB.WBProps.date1904) - baddate; }\r\n\t\t\t\t\t\t\tif(!q.z) q.z = 'm/d/yy'; break;\r\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\r\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\r\n\t\t\t\t\t\t\tif(!q.z) q.z = 'HH:MM:SS'; break;\r\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\r\n\t\t\t\t\t\t\t\tq.t = 's';\r\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\r\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tisstub = false;\r\n\t\t\t\t\tif(q.t === 's') {\r\n\t\t\t\t\t\tq.v = textp || '';\r\n\t\t\t\t\t\tif(textR.length) q.R = textR;\r\n\t\t\t\t\t\tisstub = textpidx == 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(atag.Target) q.l = atag;\r\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\r\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\r\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\r\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\r\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\r\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\r\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\r\n\t\t\t\t\t\t\t\tif(opts.dense) {\r\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\r\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\r\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\r\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\r\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\r\n\t\t\t\t\tq = {};\r\n\t\t\t\t\ttextp = \"\"; textR = [];\r\n\t\t\t\t}\r\n\t\t\t\tatag = ({});\r\n\t\t\t\tbreak; // 9.1.4 \r\n\r\n\t\t\t/* pure state */\r\n\t\t\tcase 'document': // TODO: is the root for FODS\r\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 \r\n\t\t\tcase 'spreadsheet': case '主体': // 3.7 \r\n\t\t\tcase 'scripts': // 3.12 \r\n\t\t\tcase 'styles': // TODO \r\n\t\t\tcase 'font-face-decls': // 3.14 \r\n\t\t\tcase 'master-styles': // 3.15.4 -- relevant for FODS\r\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\r\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'annotation': // 14.1 \r\n\t\t\t\tif(Rn[1]==='/'){\r\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\r\n\t\t\t\t\tcomment.t = textp;\r\n\t\t\t\t\tif(textR.length) comment.R = textR;\r\n\t\t\t\t\tcomment.a = creator;\r\n\t\t\t\t\tcomments.push(comment);\r\n\t\t\t\t}\r\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\r\n\t\t\t\tcreator = \"\"; creatoridx = 0;\r\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'creator': // 4.3.2.7 \r\n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\r\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t/* ignore state */\r\n\t\t\tcase 'meta': case '元数据': // TODO: FODS/UOF\r\n\t\t\tcase 'settings': // TODO: \r\n\t\t\tcase 'config-item-set': // TODO: \r\n\t\t\tcase 'config-item-map-indexed': // TODO: \r\n\t\t\tcase 'config-item-map-entry': // TODO: \r\n\t\t\tcase 'config-item-map-named': // TODO: \r\n\t\t\tcase 'shapes': // 9.2.8 \r\n\t\t\tcase 'frame': // 10.4.2 \r\n\t\t\tcase 'text-box': // 10.4.3 \r\n\t\t\tcase 'image': // 10.4.4 \r\n\t\t\tcase 'data-pilot-tables': // 9.6.2 \r\n\t\t\tcase 'list-style': // 16.30 \r\n\t\t\tcase 'form': // 13.13 \r\n\t\t\tcase 'dde-links': // 9.8 \r\n\t\t\tcase 'event-listeners': // TODO\r\n\t\t\tcase 'chart': // TODO\r\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\r\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\r\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'scientific-number': // \r\n\t\t\tcase 'currency-symbol': // \r\n\t\t\tcase 'fill-character': // 16.29.5 \r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'text-style': // 16.27.25 \r\n\t\t\tcase 'boolean-style': // 16.27.23 \r\n\t\t\tcase 'number-style': // 16.27.2 \r\n\t\t\tcase 'currency-style': // 16.29.8 \r\n\t\t\tcase 'percentage-style': // 16.27.9 \r\n\t\t\tcase 'date-style': // 16.27.10 \r\n\t\t\tcase 'time-style': // 16.27.18 \r\n\t\t\t\tif(Rn[1]==='/'){\r\n\t\t\t\t\tvar xlmlidx = xlmlregex.lastIndex;\r\n\t\t\t\t\tparse_ods_styles(str.slice(nfidx, xlmlregex.lastIndex), _opts, number_format_map);\r\n\t\t\t\t\txlmlregex.lastIndex = xlmlidx;\r\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\r\n\t\t\t\t\tnfidx = xlmlregex.lastIndex - Rn[0].length;\r\n\t\t\t\t} break;\r\n\r\n\t\t\tcase 'script': break; // 3.13 \r\n\t\t\tcase 'libraries': break; // TODO: \r\n\t\t\tcase 'automatic-styles': break; // 3.15.3 \r\n\r\n\t\t\tcase 'default-style': // TODO: \r\n\t\t\tcase 'page-layout': break; // TODO: \r\n\t\t\tcase 'style': { // 16.2 \r\n\t\t\t\tvar styletag = parsexmltag(Rn[0], false);\r\n\t\t\t\tif(styletag[\"family\"] == \"table-cell\" && number_format_map[styletag[\"data-style-name\"]]) styles[styletag[\"name\"]] = number_format_map[styletag[\"data-style-name\"]];\r\n\t\t\t} break;\r\n\t\t\tcase 'map': break; // 16.3 \r\n\t\t\tcase 'font-face': break; // 16.21 \r\n\r\n\t\t\tcase 'paragraph-properties': break; // 17.6 \r\n\t\t\tcase 'table-properties': break; // 17.15 \r\n\t\t\tcase 'table-column-properties': break; // 17.16 \r\n\t\t\tcase 'table-row-properties': break; // 17.17 \r\n\t\t\tcase 'table-cell-properties': break; // 17.18 \r\n\r\n\t\t\tcase 'number': // 16.27.3 \r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'fraction': break; // TODO 16.27.6 \r\n\r\n\t\t\tcase 'day': // 16.27.11 \r\n\t\t\tcase 'month': // 16.27.12 \r\n\t\t\tcase 'year': // 16.27.13 \r\n\t\t\tcase 'era': // 16.27.14 \r\n\t\t\tcase 'day-of-week': // 16.27.15 \r\n\t\t\tcase 'week-of-year': // 16.27.16 \r\n\t\t\tcase 'quarter': // 16.27.17 \r\n\t\t\tcase 'hours': // 16.27.19 \r\n\t\t\tcase 'minutes': // 16.27.20 \r\n\t\t\tcase 'seconds': // 16.27.21 \r\n\t\t\tcase 'am-pm': // 16.27.22 \r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'boolean': break; // 16.27.24 \r\n\t\t\tcase 'text': // 16.27.26 \r\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\r\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\r\n\t\t\t\t\tcase 'number-style':\r\n\t\t\t\t\tcase 'date-style':\r\n\t\t\t\t\tcase 'time-style':\r\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'named-range': // 9.4.12 \r\n\t\t\t\ttag = parsexmltag(Rn[0], false);\r\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\r\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]});\r\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\r\n\t\t\t\tWB.Names.push(nrange);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'text-content': break; // 16.27.27 \r\n\t\t\tcase 'text-properties': break; // 16.27.27 \r\n\t\t\tcase 'embedded-text': break; // 16.27.4 \r\n\r\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\r\n\r\n\t\t\tcase 'forms': break; // 12.25.2 13.2\r\n\t\t\tcase 'table-column': break; // 9.1.6 \r\n\t\t\tcase 'table-header-rows': break; // 9.1.7 \r\n\t\t\tcase 'table-rows': break; // 9.1.12 \r\n\t\t\t/* TODO: outline levels */\r\n\t\t\tcase 'table-column-group': break; // 9.1.10 \r\n\t\t\tcase 'table-header-columns': break; // 9.1.11 \r\n\t\t\tcase 'table-columns': break; // 9.1.12 \r\n\r\n\t\t\tcase 'null-date': // 9.4.2 \r\n\t\t\t\ttag = parsexmltag(Rn[0], false);\r\n\t\t\t\tswitch(tag[\"date-value\"]) {\r\n\t\t\t\t\tcase \"1904-01-01\": WB.WBProps.date1904 = true;\r\n\t\t\t\t\t/* falls through */\r\n\t\t\t\t\tcase \"1900-01-01\": baddate = 0;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'graphic-properties': break; // 17.21 \r\n\t\t\tcase 'calculation-settings': break; // 9.4.1 \r\n\t\t\tcase 'named-expressions': break; // 9.4.11 \r\n\t\t\tcase 'label-range': break; // 9.4.9 \r\n\t\t\tcase 'label-ranges': break; // 9.4.10 \r\n\t\t\tcase 'named-expression': break; // 9.4.13 \r\n\t\t\tcase 'sort': break; // 9.4.19 \r\n\t\t\tcase 'sort-by': break; // 9.4.20 \r\n\t\t\tcase 'sort-groups': break; // 9.4.22 \r\n\r\n\t\t\tcase 'tab': break; // 6.1.4 \r\n\t\t\tcase 'line-break': break; // 6.1.5 \r\n\t\t\tcase 'span': break; // 6.1.7 \r\n\t\t\tcase 'p': case '文本串': // 5.1.3 \r\n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\r\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\r\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\r\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\r\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\r\n\t\t\t\tbreak; // \r\n\t\t\tcase 's': break; // \r\n\r\n\t\t\tcase 'database-range': // 9.4.15 \r\n\t\t\t\tif(Rn[1]==='/') break;\r\n\t\t\t\ttry {\r\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\r\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\r\n\t\t\t\t} catch(e) {/* empty */}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'date': break; // <*:date>\r\n\r\n\t\t\tcase 'object': break; // 10.4.6.2 \r\n\t\t\tcase 'title': case '标题': break; // <*:title> OR \r\n\t\t\tcase 'desc': break; // <*:desc>\r\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\r\n\r\n\t\t\t/* 9.2 Advanced Tables */\r\n\t\t\tcase 'table-source': break; // 9.2.6\r\n\t\t\tcase 'scenario': break; // 9.2.6\r\n\r\n\t\t\tcase 'iteration': break; // 9.4.3 \r\n\t\t\tcase 'content-validations': break; // 9.4.4 \r\n\t\t\tcase 'filter': break; // 9.5.2 \r\n\t\t\tcase 'filter-and': break; // 9.5.3 \r\n\t\t\tcase 'filter-or': break; // 9.5.4 \r\n\t\t\tcase 'filter-condition': break; // 9.5.5 \r\n\r\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 \r\n\t\t\tcase 'page-count': break; // TODO \r\n\t\t\tcase 'time': break; // TODO \r\n\r\n\t\t\t/* 9.3 Advanced Table Cells */\r\n\t\t\tcase 'cell-range-source': break; // 9.3.1 \r\n\t\t\tcase 'property': break; // 13.8 \r\n\r\n\t\t\tcase 'a': // 6.1.8 hyperlink\r\n\t\t\t\tif(Rn[1]!== '/') {\r\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\r\n\t\t\t\t\tif(!atag.href) break;\r\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\r\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\r\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\r\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\r\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t/* non-standard */\r\n\t\t\tcase 'table-protection': break;\r\n\t\t\tcase 'data-pilot-grand-total': break; // ',\r\n\t\t\t'',\r\n\t\t\t\t'',\r\n\t\t\t\t'',\r\n\t\t\t\t'',\r\n\t\t\t\t'',\r\n\t\t\t'',\r\n\t\t''\r\n\t].join(\"\");\r\n\r\n\tvar payload = '' + master_styles + '';\r\n\r\n\treturn function wso() {\r\n\t\treturn XML_HEADER + payload;\r\n\t};\r\n})();\r\n\r\n// TODO: find out if anyone actually read the spec. LO has some wild errors\r\nfunction write_number_format_ods(nf, nfidx) {\r\n\tvar type = \"number\", payload = \"\", nopts = { \"style:name\": nfidx }, c = \"\", i = 0;\r\n\tnf = nf.replace(/\"[$]\"/g, \"$\");\r\n\t/* TODO: replace with an actual parser based on a real grammar */\r\n\tj: {\r\n\t\t// TODO: support style maps\r\n\t\tif(nf.indexOf(\";\") > -1) {\r\n\t\t\tconsole.error(\"Unsupported ODS Style Map exported. Using first branch of \" + nf);\r\n\t\t\tnf = nf.slice(0, nf.indexOf(\";\"));\r\n\t\t}\r\n\r\n\t\tif(nf == \"@\") { type = \"text\"; payload = \"\"; break j; }\r\n\r\n\t\t/* currency flag */\r\n\t\tif(nf.indexOf(/\\$/) > -1) { type = \"currency\"; }\r\n\r\n\t\t/* opening string literal */\r\n\t\tif(nf[i] == '\"') {\r\n\t\t\tc = \"\";\r\n\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\r\n\t\t\tif(nf[i+1] == \"*\") {\r\n\t\t\t\ti++;\r\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\r\n\t\t\t} else {\r\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\r\n\t\t\t}\r\n\t\t\tnf = nf.slice(i+1); i = 0;\r\n\t\t}\r\n\r\n\t\t/* fractions */\r\n\t\tvar t = nf.match(/# (\\?+)\\/(\\?+)/);\r\n\t\tif(t) { payload += writextag(\"number:fraction\", null, {\"number:min-integer-digits\":0, \"number:min-numerator-digits\": t[1].length, \"number:max-denominator-value\": Math.max(+(t[1].replace(/./g, \"9\")), +(t[2].replace(/./g, \"9\"))) }); break j; }\r\n\t\tif((t=nf.match(/# (\\?+)\\/(\\d+)/))) { payload += writextag(\"number:fraction\", null, {\"number:min-integer-digits\":0, \"number:min-numerator-digits\": t[1].length, \"number:denominator-value\": +t[2]}); break j; }\r\n\r\n\t\t/* percentages */\r\n\t\tif((t=nf.match(/(\\d+)(|\\.\\d+)%/))) { type = \"percentage\"; payload += writextag(\"number:number\", null, {\"number:decimal-places\": t[2] && t.length - 1 || 0, \"number:min-decimal-places\": t[2] && t.length - 1 || 0, \"number:min-integer-digits\": t[1].length }) + \"%\"; break j; }\r\n\r\n\t\t/* datetime */\r\n\t\tvar has_time = false;\r\n\t\tif([\"y\",\"m\",\"d\"].indexOf(nf[0]) > -1) {\r\n\t\t\ttype = \"date\";\r\n\t\t\tk: for(; i < nf.length; ++i) switch((c = nf[i].toLowerCase())) {\r\n\t\t\t\tcase \"h\": case \"s\": has_time = true; --i; break k;\r\n\t\t\t\tcase \"m\":\r\n\t\t\t\t\tl: for(var h = i+1; h < nf.length; ++h) switch(nf[h]) {\r\n\t\t\t\t\t\tcase \"y\": case \"d\": break l;\r\n\t\t\t\t\t\tcase \"h\": case \"s\": has_time = true; --i; break k;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t/* falls through */\r\n\t\t\t\tcase \"y\": case \"d\":\r\n\t\t\t\t\twhile((nf[++i]||\"\").toLowerCase() == c[0]) c += c[0]; --i;\r\n\t\t\t\t\tswitch(c) {\r\n\t\t\t\t\t\tcase \"y\": case \"yy\": payload += \"\"; break;\r\n\t\t\t\t\t\tcase \"yyy\": case \"yyyy\": payload += ''; break;\r\n\t\t\t\t\t\tcase \"mmmmm\": console.error(\"ODS has no equivalent of format |mmmmm|\");\r\n\t\t\t\t\t\t\t/* falls through */\r\n\t\t\t\t\t\tcase \"m\": case \"mm\": case \"mmm\": case \"mmmm\":\r\n\t\t\t\t\t\t\tpayload += '= 3 ? \"true\" : \"false\") + '\"/>';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"d\": case \"dd\": payload += ''; break;\r\n\t\t\t\t\t\tcase \"ddd\": case \"dddd\": payload += ''; break;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase '\"':\r\n\t\t\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\r\n\t\t\t\t\tpayload += '' + escapexml(c.slice(1).replace(/\"\"/g, '\"')) + '';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase '/': payload += '' + escapexml(c) + ''; break;\r\n\t\t\t\tdefault: console.error(\"unrecognized character \" + c + \" in ODF format \" + nf);\r\n\t\t\t}\r\n\t\t\tif(!has_time) break j;\r\n\t\t\tnf = nf.slice(i+1); i = 0;\r\n\t\t}\r\n\t\tif(nf.match(/^\\[?[hms]/)) {\r\n\t\t\tif(type == \"number\") type = \"time\";\r\n\t\t\tif(nf.match(/\\[/)) {\r\n\t\t\t\tnf = nf.replace(/[\\[\\]]/g, \"\");\r\n\t\t\t\tnopts['number:truncate-on-overflow'] = \"false\";\r\n\t\t\t}\r\n\t\t\tfor(; i < nf.length; ++i) switch((c = nf[i].toLowerCase())) {\r\n\t\t\t\tcase \"h\": case \"m\": case \"s\":\r\n\t\t\t\t\twhile((nf[++i]||\"\").toLowerCase() == c[0]) c += c[0]; --i;\r\n\t\t\t\t\tswitch(c) {\r\n\t\t\t\t\t\tcase \"h\": case \"hh\": payload += ''; break;\r\n\t\t\t\t\t\tcase \"m\": case \"mm\": payload += ''; break;\r\n\t\t\t\t\t\tcase \"s\": case \"ss\":\r\n\t\t\t\t\t\t\tif(nf[i+1] == \".\") do { c += nf[i+1]; ++i; } while(nf[i+1] == \"0\");\r\n\t\t\t\t\t\t\tpayload += ''; break;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase '\"':\r\n\t\t\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\r\n\t\t\t\t\tpayload += '' + escapexml(c.slice(1).replace(/\"\"/g, '\"')) + '';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase '/': payload += '' + escapexml(c) + ''; break;\r\n\t\t\t\tcase \"a\":\r\n\t\t\t\t\tif(nf.slice(i, i+3).toLowerCase() == \"a/p\") { payload += ''; i += 2; break; } // Note: ODF does not support A/P\r\n\t\t\t\t\tif(nf.slice(i, i+5).toLowerCase() == \"am/pm\") { payload += ''; i += 4; break; }\r\n\t\t\t\t\t/* falls through */\r\n\t\t\t\tdefault: console.error(\"unrecognized character \" + c + \" in ODF format \" + nf);\r\n\t\t\t}\r\n\t\t\tbreak j;\r\n\t\t}\r\n\r\n\t\t/* currency flag */\r\n\t\tif(nf.indexOf(/\\$/) > -1) { type = \"currency\"; }\r\n\r\n\t\t/* should be in a char loop */\r\n\t\tif(nf[0] == \"$\") { payload += '$'; nf = nf.slice(1); i = 0; }\r\n\t\ti = 0; if(nf[i] == '\"') {\r\n\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\r\n\t\t\tif(nf[i+1] == \"*\") {\r\n\t\t\t\ti++;\r\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\r\n\t\t\t} else {\r\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\r\n\t\t\t}\r\n\t\t\tnf = nf.slice(i+1); i = 0;\r\n\t\t}\r\n\r\n\t\t/* number TODO: interstitial text e.g. 000)000-0000 */\r\n\t\tvar np = nf.match(/([#0][0#,]*)(\\.[0#]*|)(E[+]?0*|)/i);\r\n\t\tif(!np || !np[0]) console.error(\"Could not find numeric part of \" + nf);\r\n\t\telse {\r\n\t\t\tvar base = np[1].replace(/,/g, \"\");\r\n\t\t\tpayload += ' -1 ? ' number:grouping=\"true\"' : \"\") +\r\n\t\t\t\t(np[2] && ' number:decimal-places=\"' + (np[2].length - 1) + '\"' || ' number:decimal-places=\"0\"') +\r\n\t\t\t\t(np[3] && np[3].indexOf(\"+\") > -1 ? ' number:forced-exponent-sign=\"true\"' : \"\" ) +\r\n\t\t\t\t(np[3] ? ' number:min-exponent-digits=\"' + np[3].match(/0+/)[0].length + '\"' : \"\" ) +\r\n\t\t\t\t'>' +\r\n\t\t\t\t/* TODO: interstitial text placeholders */\r\n\t\t\t\t'';\r\n\t\t\ti = np.index + np[0].length;\r\n\t\t}\r\n\r\n\t\t/* residual text */\r\n\t\tif(nf[i] == '\"') {\r\n\t\t\tc = \"\";\r\n\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\r\n\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\r\n\t\t}\r\n\t}\r\n\r\n\tif(!payload) { console.error(\"Could not generate ODS number format for |\" + nf + \"|\"); return \"\"; }\r\n\treturn writextag(\"number:\" + type + \"-style\", payload, nopts);\r\n}\r\n\r\nfunction write_names_ods(Names, SheetNames, idx) {\r\n\tvar scoped = Names.filter(function(name) { return name.Sheet == (idx == -1 ? null : idx); });\r\n\tif(!scoped.length) return \"\";\r\n\treturn \" \\n\" + scoped.map(function(name) {\r\n\t\tvar odsref = csf_to_ods_3D(name.Ref);\r\n\t\treturn \" \" + writextag(\"table:named-range\", null, {\r\n\t\t\t\"table:name\": name.Name,\r\n\t\t\t\"table:cell-range-address\": odsref,\r\n\t\t\t\"table:base-cell-address\": odsref.replace(/[\\.]?[^\\.]*$/, \".$A$1\")\r\n\t\t});\r\n\t}).join(\"\\n\") + \"\\n \\n\";\r\n}\r\nvar write_content_ods = /* @__PURE__ */(function() {\r\n\t/* 6.1.2 White Space Characters */\r\n\tvar write_text_p = function(text) {\r\n\t\treturn escapexml(text)\r\n\t\t\t.replace(/ +/g, function($$){return '';})\r\n\t\t\t.replace(/\\t/g, \"\")\r\n\t\t\t.replace(/\\n/g, \"\")\r\n\t\t\t.replace(/^ /, \"\").replace(/ $/, \"\");\r\n\t};\r\n\r\n\tvar null_cell_xml = ' \\n';\r\n\tvar covered_cell_xml = ' \\n';\r\n\tvar write_ws = function(ws, wb, i, opts, nfs) {\r\n\t\t/* Section 9 Tables */\r\n\t\tvar o = [];\r\n\t\to.push(' \\n');\r\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\r\n\t\tvar marr = ws['!merges'] || [], mi = 0;\r\n\t\tvar dense = Array.isArray(ws);\r\n\t\tif(ws[\"!cols\"]) {\r\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push(' \\n');\r\n\t\t}\r\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\r\n\t\tfor(R = 0; R < range.s.r; ++R) {\r\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\r\n\t\t\to.push(' \\n');\r\n\t\t}\r\n\t\tfor(; R <= range.e.r; ++R) {\r\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\r\n\t\t\to.push(' \\n');\r\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\r\n\t\t\tfor(; C <= range.e.c; ++C) {\r\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\r\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\r\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\r\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\r\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\r\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\r\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\r\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\r\n\t\t\t\t\tct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\r\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\r\n\t\t\t\tif(cell && cell.f) {\r\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\r\n\t\t\t\t\tif(cell.F) {\r\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\r\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\r\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\r\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\r\n\t\t\t\tswitch(cell.t) {\r\n\t\t\t\t\tcase 'b':\r\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\r\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\r\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'n':\r\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\r\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\r\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 's': case 'str':\r\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\r\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'd':\r\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\r\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\r\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\r\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t//case 'e':\r\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\r\n\t\t\t\t}\r\n\t\t\t\tvar text_p = write_text_p(textp);\r\n\t\t\t\tif(cell.l && cell.l.Target) {\r\n\t\t\t\t\tvar _tgt = cell.l.Target;\r\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\r\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\r\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\r\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&\")});\r\n\t\t\t\t}\r\n\t\t\t\tif(nfs[cell.z]) ct[\"table:style-name\"] = \"ce\" + nfs[cell.z].slice(1);\r\n\t\t\t\to.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\r\n\t\t\t}\r\n\t\t\to.push(' \\n');\r\n\t\t}\r\n\t\tif((wb.Workbook||{}).Names) o.push(write_names_ods(wb.Workbook.Names, wb.SheetNames, i));\r\n\t\to.push(' \\n');\r\n\t\treturn o.join(\"\");\r\n\t};\r\n\r\n\tvar write_automatic_styles_ods = function(o, wb) {\r\n\t\to.push(' \\n');\r\n\r\n\t\t/* column styles */\r\n\t\tvar cidx = 0;\r\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\r\n\t\t\tif(!ws) return;\r\n\t\t\tif(ws[\"!cols\"]) {\r\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\r\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\r\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\r\n\t\t\t\t\tprocess_col(colobj);\r\n\t\t\t\t\tcolobj.ods = cidx;\r\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\r\n\t\t\t\t\to.push(' \\n');\r\n\t\t\t\t\to.push(' \\n');\r\n\t\t\t\t\to.push(' \\n');\r\n\t\t\t\t\t++cidx;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/* row styles */\r\n\t\tvar ridx = 0;\r\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\r\n\t\t\tif(!ws) return;\r\n\t\t\tif(ws[\"!rows\"]) {\r\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\r\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\r\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\r\n\t\t\t\t\to.push(' \\n');\r\n\t\t\t\t\to.push(' \\n');\r\n\t\t\t\t\to.push(' \\n');\r\n\t\t\t\t\t++ridx;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/* table */\r\n\t\to.push(' \\n');\r\n\t\to.push(' \\n');\r\n\t\to.push(' \\n');\r\n\r\n\t\to.push(' \\n');\r\n\t\to.push(' \\n');\r\n\t\to.push(' /\\n');\r\n\t\to.push(' \\n');\r\n\t\to.push(' /\\n');\r\n\t\to.push(' \\n');\r\n\t\to.push(' \\n');\r\n\r\n\t\t/* number formats, table cells, text */\r\n\t\tvar nfs = {};\r\n\t\tvar nfi = 69;\r\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\r\n\t\t\tif(!ws) return;\r\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\r\n\t\t\tfor(var R = 0; R <= range.e.r; ++R) for(var C = 0; C <= range.e.c; ++C) {\r\n\t\t\t\tvar c = Array.isArray(ws) ? (ws[R]||[])[C] : ws[encode_cell({r:R,c:C})];\r\n\t\t\t\tif(!c || !c.z || c.z.toLowerCase() == \"general\") continue;\r\n\t\t\t\tif(!nfs[c.z]) {\r\n\t\t\t\t\tvar out = write_number_format_ods(c.z, \"N\" + nfi);\r\n\t\t\t\t\tif(out) { nfs[c.z] = \"N\" + nfi; ++nfi; o.push(out + \"\\n\"); }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\to.push(' \\n');\r\n\t\tkeys(nfs).forEach(function(nf) {\r\n\t\t\to.push('\\n');\r\n\t\t});\r\n\r\n\t\t/* page-layout */\r\n\r\n\t\to.push(' \\n');\r\n\t\treturn nfs;\r\n\t};\r\n\r\n\treturn function wcx(wb, opts) {\r\n\t\tvar o = [XML_HEADER];\r\n\t\t/* 3.1.3.2 */\r\n\t\tvar attr = wxt_helper({\r\n\t\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\r\n\t\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\r\n\t\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\r\n\t\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\r\n\t\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\r\n\t\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\r\n\t\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\r\n\t\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\r\n\t\t\t'xmlns:meta': \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\r\n\t\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\r\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\r\n\t\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\r\n\t\t\t'xmlns:chart': \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\r\n\t\t\t'xmlns:dr3d': \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\r\n\t\t\t'xmlns:math': \"http://www.w3.org/1998/Math/MathML\",\r\n\t\t\t'xmlns:form': \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\r\n\t\t\t'xmlns:script': \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\r\n\t\t\t'xmlns:ooo': \"http://openoffice.org/2004/office\",\r\n\t\t\t'xmlns:ooow': \"http://openoffice.org/2004/writer\",\r\n\t\t\t'xmlns:oooc': \"http://openoffice.org/2004/calc\",\r\n\t\t\t'xmlns:dom': \"http://www.w3.org/2001/xml-events\",\r\n\t\t\t'xmlns:xforms': \"http://www.w3.org/2002/xforms\",\r\n\t\t\t'xmlns:xsd': \"http://www.w3.org/2001/XMLSchema\",\r\n\t\t\t'xmlns:xsi': \"http://www.w3.org/2001/XMLSchema-instance\",\r\n\t\t\t'xmlns:sheet': \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\r\n\t\t\t'xmlns:rpt': \"http://openoffice.org/2005/report\",\r\n\t\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\r\n\t\t\t'xmlns:xhtml': \"http://www.w3.org/1999/xhtml\",\r\n\t\t\t'xmlns:grddl': \"http://www.w3.org/2003/g/data-view#\",\r\n\t\t\t'xmlns:tableooo': \"http://openoffice.org/2009/table\",\r\n\t\t\t'xmlns:drawooo': \"http://openoffice.org/2010/draw\",\r\n\t\t\t'xmlns:calcext': \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\r\n\t\t\t'xmlns:loext': \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\r\n\t\t\t'xmlns:field': \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\r\n\t\t\t'xmlns:formx': \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\r\n\t\t\t'xmlns:css3t': \"http://www.w3.org/TR/css3-text/\",\r\n\t\t\t'office:version': \"1.2\"\r\n\t\t});\r\n\r\n\t\tvar fods = wxt_helper({\r\n\t\t\t'xmlns:config': \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\r\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\r\n\t\t});\r\n\r\n\t\tif(opts.bookType == \"fods\") {\r\n\t\t\to.push('\\n');\r\n\t\t\to.push(write_meta_ods().replace(//, \"\").replace(/<\\/office:document-meta>/, \"\") + \"\\n\");\r\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\r\n\t\t} else o.push('\\n');\r\n\t\t// o.push(' \\n');\r\n\t\tvar nfs = write_automatic_styles_ods(o, wb);\r\n\t\to.push(' \\n');\r\n\t\to.push(' \\n');\r\n\t\tif(((wb.Workbook||{}).WBProps||{}).date1904) o.push(' \\n \\n \\n');\r\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts, nfs));\r\n\t\tif((wb.Workbook||{}).Names) o.push(write_names_ods(wb.Workbook.Names, wb.SheetNames, -1));\r\n\t\to.push(' \\n');\r\n\t\to.push(' \\n');\r\n\t\tif(opts.bookType == \"fods\") o.push('');\r\n\t\telse o.push('');\r\n\t\treturn o.join(\"\");\r\n\t};\r\n})();\r\n\r\nfunction write_ods(wb, opts) {\r\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\r\n\r\n\tvar zip = zip_new();\r\n\tvar f = \"\";\r\n\r\n\tvar manifest = [];\r\n\tvar rdf = [];\r\n\r\n\t/* Part 3 Section 3.3 MIME Media Type */\r\n\tf = \"mimetype\";\r\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\r\n\r\n\t/* Part 1 Section 2.2 Documents */\r\n\tf = \"content.xml\";\r\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\r\n\tmanifest.push([f, \"text/xml\"]);\r\n\trdf.push([f, \"ContentFile\"]);\r\n\r\n\t/* TODO: these are hard-coded styles to satiate excel */\r\n\tf = \"styles.xml\";\r\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\r\n\tmanifest.push([f, \"text/xml\"]);\r\n\trdf.push([f, \"StylesFile\"]);\r\n\r\n\t/* TODO: this is hard-coded to satiate excel */\r\n\tf = \"meta.xml\";\r\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods());\r\n\tmanifest.push([f, \"text/xml\"]);\r\n\trdf.push([f, \"MetadataFile\"]);\r\n\r\n\t/* Part 3 Section 6 Metadata Manifest File */\r\n\tf = \"manifest.rdf\";\r\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\r\n\tmanifest.push([f, \"application/rdf+xml\"]);\r\n\r\n\t/* Part 3 Section 4 Manifest File */\r\n\tf = \"META-INF/manifest.xml\";\r\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\r\n\r\n\treturn zip;\r\n}\r\n\r\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\r\nvar subarray = function() {\r\n try {\r\n if (typeof Uint8Array == \"undefined\")\r\n return \"slice\";\r\n if (typeof Uint8Array.prototype.subarray == \"undefined\")\r\n return \"slice\";\r\n if (typeof Buffer !== \"undefined\") {\r\n if (typeof Buffer.prototype.subarray == \"undefined\")\r\n return \"slice\";\r\n if ((typeof Buffer.from == \"function\" ? Buffer.from([72, 62]) : new Buffer([72, 62])) instanceof Uint8Array)\r\n return \"subarray\";\r\n return \"slice\";\r\n }\r\n return \"subarray\";\r\n } catch (e) {\r\n return \"slice\";\r\n }\r\n}();\r\nfunction u8_to_dataview(array) {\r\n return new DataView(array.buffer, array.byteOffset, array.byteLength);\r\n}\r\nfunction u8str(u8) {\r\n return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\r\n}\r\nfunction stru8(str) {\r\n return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\r\n}\r\nfunction u8contains(body, search) {\r\n outer:\r\n for (var L = 0; L <= body.length - search.length; ++L) {\r\n for (var j = 0; j < search.length; ++j)\r\n if (body[L + j] != search[j])\r\n continue outer;\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction u8concat(u8a) {\r\n var len = u8a.reduce(function(acc, x) {\r\n return acc + x.length;\r\n }, 0);\r\n var out = new Uint8Array(len);\r\n var off = 0;\r\n u8a.forEach(function(u8) {\r\n out.set(u8, off);\r\n off += u8.length;\r\n });\r\n return out;\r\n}\r\nfunction popcnt(x) {\r\n x -= x >> 1 & 1431655765;\r\n x = (x & 858993459) + (x >> 2 & 858993459);\r\n return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\r\n}\r\nfunction readDecimal128LE(buf, offset) {\r\n var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\r\n var mantissa = buf[offset + 14] & 1;\r\n for (var j = offset + 13; j >= offset; --j)\r\n mantissa = mantissa * 256 + buf[j];\r\n return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\r\n}\r\nfunction writeDecimal128LE(buf, offset, value) {\r\n var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 16;\r\n var mantissa = value / Math.pow(10, exp - 6176);\r\n buf[offset + 15] |= exp >> 7;\r\n buf[offset + 14] |= (exp & 127) << 1;\r\n for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\r\n buf[offset + i] = mantissa & 255;\r\n buf[offset + 15] |= value >= 0 ? 0 : 128;\r\n}\r\nfunction parse_varint49(buf, ptr) {\r\n var l = ptr ? ptr[0] : 0;\r\n var usz = buf[l] & 127;\r\n varint:\r\n if (buf[l++] >= 128) {\r\n usz |= (buf[l] & 127) << 7;\r\n if (buf[l++] < 128)\r\n break varint;\r\n usz |= (buf[l] & 127) << 14;\r\n if (buf[l++] < 128)\r\n break varint;\r\n usz |= (buf[l] & 127) << 21;\r\n if (buf[l++] < 128)\r\n break varint;\r\n usz += (buf[l] & 127) * Math.pow(2, 28);\r\n ++l;\r\n if (buf[l++] < 128)\r\n break varint;\r\n usz += (buf[l] & 127) * Math.pow(2, 35);\r\n ++l;\r\n if (buf[l++] < 128)\r\n break varint;\r\n usz += (buf[l] & 127) * Math.pow(2, 42);\r\n ++l;\r\n if (buf[l++] < 128)\r\n break varint;\r\n }\r\n if (ptr)\r\n ptr[0] = l;\r\n return usz;\r\n}\r\nfunction write_varint49(v) {\r\n var usz = new Uint8Array(7);\r\n usz[0] = v & 127;\r\n var L = 1;\r\n sz:\r\n if (v > 127) {\r\n usz[L - 1] |= 128;\r\n usz[L] = v >> 7 & 127;\r\n ++L;\r\n if (v <= 16383)\r\n break sz;\r\n usz[L - 1] |= 128;\r\n usz[L] = v >> 14 & 127;\r\n ++L;\r\n if (v <= 2097151)\r\n break sz;\r\n usz[L - 1] |= 128;\r\n usz[L] = v >> 21 & 127;\r\n ++L;\r\n if (v <= 268435455)\r\n break sz;\r\n usz[L - 1] |= 128;\r\n usz[L] = v / 256 >>> 21 & 127;\r\n ++L;\r\n if (v <= 34359738367)\r\n break sz;\r\n usz[L - 1] |= 128;\r\n usz[L] = v / 65536 >>> 21 & 127;\r\n ++L;\r\n if (v <= 4398046511103)\r\n break sz;\r\n usz[L - 1] |= 128;\r\n usz[L] = v / 16777216 >>> 21 & 127;\r\n ++L;\r\n }\r\n return usz[subarray](0, L);\r\n}\r\nfunction varint_to_i32(buf) {\r\n var l = 0, i32 = buf[l] & 127;\r\n varint:\r\n if (buf[l++] >= 128) {\r\n i32 |= (buf[l] & 127) << 7;\r\n if (buf[l++] < 128)\r\n break varint;\r\n i32 |= (buf[l] & 127) << 14;\r\n if (buf[l++] < 128)\r\n break varint;\r\n i32 |= (buf[l] & 127) << 21;\r\n if (buf[l++] < 128)\r\n break varint;\r\n i32 |= (buf[l] & 127) << 28;\r\n }\r\n return i32;\r\n}\r\nfunction parse_shallow(buf) {\r\n var out = [], ptr = [0];\r\n while (ptr[0] < buf.length) {\r\n var off = ptr[0];\r\n var num = parse_varint49(buf, ptr);\r\n var type = num & 7;\r\n num = Math.floor(num / 8);\r\n var len = 0;\r\n var res;\r\n if (num == 0)\r\n break;\r\n switch (type) {\r\n case 0:\r\n {\r\n var l = ptr[0];\r\n while (buf[ptr[0]++] >= 128)\r\n ;\r\n res = buf[subarray](l, ptr[0]);\r\n }\r\n break;\r\n case 5:\r\n len = 4;\r\n res = buf[subarray](ptr[0], ptr[0] + len);\r\n ptr[0] += len;\r\n break;\r\n case 1:\r\n len = 8;\r\n res = buf[subarray](ptr[0], ptr[0] + len);\r\n ptr[0] += len;\r\n break;\r\n case 2:\r\n len = parse_varint49(buf, ptr);\r\n res = buf[subarray](ptr[0], ptr[0] + len);\r\n ptr[0] += len;\r\n break;\r\n case 3:\r\n case 4:\r\n default:\r\n throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\r\n }\r\n var v = { data: res, type: type };\r\n if (out[num] == null)\r\n out[num] = [v];\r\n else\r\n out[num].push(v);\r\n }\r\n return out;\r\n}\r\nfunction write_shallow(proto) {\r\n var out = [];\r\n proto.forEach(function(field, idx) {\r\n if (idx == 0)\r\n return;\r\n field.forEach(function(item) {\r\n if (!item.data)\r\n return;\r\n out.push(write_varint49(idx * 8 + item.type));\r\n if (item.type == 2)\r\n out.push(write_varint49(item.data.length));\r\n out.push(item.data);\r\n });\r\n });\r\n return u8concat(out);\r\n}\r\nfunction mappa(data, cb) {\r\n return (data == null ? void 0 : data.map(function(d) {\r\n return cb(d.data);\r\n })) || [];\r\n}\r\nfunction parse_iwa_file(buf) {\r\n var _a;\r\n var out = [], ptr = [0];\r\n while (ptr[0] < buf.length) {\r\n var len = parse_varint49(buf, ptr);\r\n var ai = parse_shallow(buf[subarray](ptr[0], ptr[0] + len));\r\n ptr[0] += len;\r\n var res = {\r\n id: varint_to_i32(ai[1][0].data),\r\n messages: []\r\n };\r\n ai[2].forEach(function(b) {\r\n var mi = parse_shallow(b.data);\r\n var fl = varint_to_i32(mi[3][0].data);\r\n res.messages.push({\r\n meta: mi,\r\n data: buf[subarray](ptr[0], ptr[0] + fl)\r\n });\r\n ptr[0] += fl;\r\n });\r\n if ((_a = ai[3]) == null ? void 0 : _a[0])\r\n res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\r\n out.push(res);\r\n }\r\n return out;\r\n}\r\nfunction write_iwa_file(ias) {\r\n var bufs = [];\r\n ias.forEach(function(ia) {\r\n var ai = [\r\n [],\r\n [{ data: write_varint49(ia.id), type: 0 }],\r\n []\r\n ];\r\n if (ia.merge != null)\r\n ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\r\n var midata = [];\r\n ia.messages.forEach(function(mi) {\r\n midata.push(mi.data);\r\n mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\r\n ai[2].push({ data: write_shallow(mi.meta), type: 2 });\r\n });\r\n var aipayload = write_shallow(ai);\r\n bufs.push(write_varint49(aipayload.length));\r\n bufs.push(aipayload);\r\n midata.forEach(function(mid) {\r\n return bufs.push(mid);\r\n });\r\n });\r\n return u8concat(bufs);\r\n}\r\nfunction parse_snappy_chunk(type, buf) {\r\n if (type != 0)\r\n throw new Error(\"Unexpected Snappy chunk type \".concat(type));\r\n var ptr = [0];\r\n var usz = parse_varint49(buf, ptr);\r\n var chunks = [];\r\n while (ptr[0] < buf.length) {\r\n var tag = buf[ptr[0]] & 3;\r\n if (tag == 0) {\r\n var len = buf[ptr[0]++] >> 2;\r\n if (len < 60)\r\n ++len;\r\n else {\r\n var c = len - 59;\r\n len = buf[ptr[0]];\r\n if (c > 1)\r\n len |= buf[ptr[0] + 1] << 8;\r\n if (c > 2)\r\n len |= buf[ptr[0] + 2] << 16;\r\n if (c > 3)\r\n len |= buf[ptr[0] + 3] << 24;\r\n len >>>= 0;\r\n len++;\r\n ptr[0] += c;\r\n }\r\n chunks.push(buf[subarray](ptr[0], ptr[0] + len));\r\n ptr[0] += len;\r\n continue;\r\n } else {\r\n var offset = 0, length = 0;\r\n if (tag == 1) {\r\n length = (buf[ptr[0]] >> 2 & 7) + 4;\r\n offset = (buf[ptr[0]++] & 224) << 3;\r\n offset |= buf[ptr[0]++];\r\n } else {\r\n length = (buf[ptr[0]++] >> 2) + 1;\r\n if (tag == 2) {\r\n offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8;\r\n ptr[0] += 2;\r\n } else {\r\n offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0;\r\n ptr[0] += 4;\r\n }\r\n }\r\n if (offset == 0)\r\n throw new Error(\"Invalid offset 0\");\r\n var j = chunks.length - 1, off = offset;\r\n while (j >= 0 && off >= chunks[j].length) {\r\n off -= chunks[j].length;\r\n --j;\r\n }\r\n if (j < 0) {\r\n if (off == 0)\r\n off = chunks[j = 0].length;\r\n else\r\n throw new Error(\"Invalid offset beyond length\");\r\n }\r\n if (length < off)\r\n chunks.push(chunks[j][subarray](chunks[j].length - off, chunks[j].length - off + length));\r\n else {\r\n if (off > 0) {\r\n chunks.push(chunks[j][subarray](chunks[j].length - off));\r\n length -= off;\r\n }\r\n ++j;\r\n while (length >= chunks[j].length) {\r\n chunks.push(chunks[j]);\r\n length -= chunks[j].length;\r\n ++j;\r\n }\r\n if (length)\r\n chunks.push(chunks[j][subarray](0, length));\r\n }\r\n if (chunks.length > 100)\r\n chunks = [u8concat(chunks)];\r\n }\r\n }\r\n if (chunks.reduce(function(acc, u8) {\r\n return acc + u8.length;\r\n }, 0) != usz)\r\n throw new Error(\"Unexpected length: \".concat(chunks.reduce(function(acc, u8) {\r\n return acc + u8.length;\r\n }, 0), \" != \").concat(usz));\r\n return chunks;\r\n}\r\nfunction decompress_iwa_file(buf) {\r\n if (Array.isArray(buf))\r\n buf = new Uint8Array(buf);\r\n var out = [];\r\n var l = 0;\r\n while (l < buf.length) {\r\n var t = buf[l++];\r\n var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\r\n l += 3;\r\n out.push.apply(out, parse_snappy_chunk(t, buf[subarray](l, l + len)));\r\n l += len;\r\n }\r\n if (l !== buf.length)\r\n throw new Error(\"data is not a valid framed stream!\");\r\n return u8concat(out);\r\n}\r\nfunction compress_iwa_file(buf) {\r\n var out = [];\r\n var l = 0;\r\n while (l < buf.length) {\r\n var c = Math.min(buf.length - l, 268435455);\r\n var frame = new Uint8Array(4);\r\n out.push(frame);\r\n var usz = write_varint49(c);\r\n var L = usz.length;\r\n out.push(usz);\r\n if (c <= 60) {\r\n L++;\r\n out.push(new Uint8Array([c - 1 << 2]));\r\n } else if (c <= 256) {\r\n L += 2;\r\n out.push(new Uint8Array([240, c - 1 & 255]));\r\n } else if (c <= 65536) {\r\n L += 3;\r\n out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\r\n } else if (c <= 16777216) {\r\n L += 4;\r\n out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\r\n } else if (c <= 4294967296) {\r\n L += 5;\r\n out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\r\n }\r\n out.push(buf[subarray](l, l + c));\r\n L += c;\r\n frame[0] = 0;\r\n frame[1] = L & 255;\r\n frame[2] = L >> 8 & 255;\r\n frame[3] = L >> 16 & 255;\r\n l += c;\r\n }\r\n return u8concat(out);\r\n}\r\nfunction parse_old_storage(buf, sst, rsst, v) {\r\n var dv = u8_to_dataview(buf);\r\n var flags = dv.getUint32(4, true);\r\n var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4;\r\n var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\r\n if (flags & 512) {\r\n ridx = dv.getUint32(data_offset, true);\r\n data_offset += 4;\r\n }\r\n data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\r\n if (flags & 16) {\r\n sidx = dv.getUint32(data_offset, true);\r\n data_offset += 4;\r\n }\r\n if (flags & 32) {\r\n ieee = dv.getFloat64(data_offset, true);\r\n data_offset += 8;\r\n }\r\n if (flags & 64) {\r\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\r\n data_offset += 8;\r\n }\r\n var ret;\r\n switch (buf[2]) {\r\n case 0:\r\n return void 0;\r\n case 2:\r\n ret = { t: \"n\", v: ieee };\r\n break;\r\n case 3:\r\n ret = { t: \"s\", v: sst[sidx] };\r\n break;\r\n case 5:\r\n ret = { t: \"d\", v: dt };\r\n break;\r\n case 6:\r\n ret = { t: \"b\", v: ieee > 0 };\r\n break;\r\n case 7:\r\n ret = { t: \"n\", v: ieee / 86400 };\r\n break;\r\n case 8:\r\n ret = { t: \"e\", v: 0 };\r\n break;\r\n case 9:\r\n {\r\n if (ridx > -1)\r\n ret = { t: \"s\", v: rsst[ridx] };\r\n else\r\n throw new Error(\"Unsupported cell type \".concat(buf[subarray](0, 4)));\r\n }\r\n break;\r\n default:\r\n throw new Error(\"Unsupported cell type \".concat(buf[subarray](0, 4)));\r\n }\r\n return ret;\r\n}\r\nfunction parse_new_storage(buf, sst, rsst) {\r\n var dv = u8_to_dataview(buf);\r\n var flags = dv.getUint32(8, true);\r\n var data_offset = 12;\r\n var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\r\n if (flags & 1) {\r\n d128 = readDecimal128LE(buf, data_offset);\r\n data_offset += 16;\r\n }\r\n if (flags & 2) {\r\n ieee = dv.getFloat64(data_offset, true);\r\n data_offset += 8;\r\n }\r\n if (flags & 4) {\r\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\r\n data_offset += 8;\r\n }\r\n if (flags & 8) {\r\n sidx = dv.getUint32(data_offset, true);\r\n data_offset += 4;\r\n }\r\n if (flags & 16) {\r\n ridx = dv.getUint32(data_offset, true);\r\n data_offset += 4;\r\n }\r\n var ret;\r\n switch (buf[1]) {\r\n case 0:\r\n return void 0;\r\n case 2:\r\n ret = { t: \"n\", v: d128 };\r\n break;\r\n case 3:\r\n ret = { t: \"s\", v: sst[sidx] };\r\n break;\r\n case 5:\r\n ret = { t: \"d\", v: dt };\r\n break;\r\n case 6:\r\n ret = { t: \"b\", v: ieee > 0 };\r\n break;\r\n case 7:\r\n ret = { t: \"n\", v: ieee / 86400 };\r\n break;\r\n case 8:\r\n ret = { t: \"e\", v: 0 };\r\n break;\r\n case 9:\r\n {\r\n if (ridx > -1)\r\n ret = { t: \"s\", v: rsst[ridx] };\r\n else\r\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf[subarray](0, 4)));\r\n }\r\n break;\r\n case 10:\r\n ret = { t: \"n\", v: d128 };\r\n break;\r\n default:\r\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf[subarray](0, 4)));\r\n }\r\n return ret;\r\n}\r\nfunction write_new_storage(cell, sst) {\r\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\r\n out[0] = 5;\r\n switch (cell.t) {\r\n case \"n\":\r\n out[1] = 2;\r\n writeDecimal128LE(out, l, cell.v);\r\n flags |= 1;\r\n l += 16;\r\n break;\r\n case \"b\":\r\n out[1] = 6;\r\n dv.setFloat64(l, cell.v ? 1 : 0, true);\r\n flags |= 2;\r\n l += 8;\r\n break;\r\n case \"s\":\r\n if (sst.indexOf(cell.v) == -1)\r\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\r\n out[1] = 3;\r\n dv.setUint32(l, sst.indexOf(cell.v), true);\r\n flags |= 8;\r\n l += 4;\r\n break;\r\n default:\r\n throw \"unsupported cell type \" + cell.t;\r\n }\r\n dv.setUint32(8, flags, true);\r\n return out[subarray](0, l);\r\n}\r\nfunction write_old_storage(cell, sst) {\r\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\r\n out[0] = 3;\r\n switch (cell.t) {\r\n case \"n\":\r\n out[2] = 2;\r\n dv.setFloat64(l, cell.v, true);\r\n flags |= 32;\r\n l += 8;\r\n break;\r\n case \"b\":\r\n out[2] = 6;\r\n dv.setFloat64(l, cell.v ? 1 : 0, true);\r\n flags |= 32;\r\n l += 8;\r\n break;\r\n case \"s\":\r\n if (sst.indexOf(cell.v) == -1)\r\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\r\n out[2] = 3;\r\n dv.setUint32(l, sst.indexOf(cell.v), true);\r\n flags |= 16;\r\n l += 4;\r\n break;\r\n default:\r\n throw \"unsupported cell type \" + cell.t;\r\n }\r\n dv.setUint32(4, flags, true);\r\n return out[subarray](0, l);\r\n}\r\nfunction parse_cell_storage(buf, sst, rsst) {\r\n switch (buf[0]) {\r\n case 0:\r\n case 1:\r\n case 2:\r\n case 3:\r\n return parse_old_storage(buf, sst, rsst, buf[0]);\r\n case 5:\r\n return parse_new_storage(buf, sst, rsst);\r\n default:\r\n throw new Error(\"Unsupported payload version \".concat(buf[0]));\r\n }\r\n}\r\nfunction parse_TSP_Reference(buf) {\r\n var pb = parse_shallow(buf);\r\n return parse_varint49(pb[1][0].data);\r\n}\r\nfunction write_TSP_Reference(idx) {\r\n return write_shallow([\r\n [],\r\n [{ type: 0, data: write_varint49(idx) }]\r\n ]);\r\n}\r\nfunction parse_TST_TableDataList(M, root) {\r\n var pb = parse_shallow(root.data);\r\n var type = varint_to_i32(pb[1][0].data);\r\n var entries = pb[3];\r\n var data = [];\r\n (entries || []).forEach(function(entry) {\r\n var le = parse_shallow(entry.data);\r\n var key = varint_to_i32(le[1][0].data) >>> 0;\r\n switch (type) {\r\n case 1:\r\n data[key] = u8str(le[3][0].data);\r\n break;\r\n case 8:\r\n {\r\n var rt = M[parse_TSP_Reference(le[9][0].data)][0];\r\n var rtp = parse_shallow(rt.data);\r\n var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\r\n var mtype = varint_to_i32(rtpref.meta[1][0].data);\r\n if (mtype != 2001)\r\n throw new Error(\"2000 unexpected reference to \".concat(mtype));\r\n var tswpsa = parse_shallow(rtpref.data);\r\n data[key] = tswpsa[3].map(function(x) {\r\n return u8str(x.data);\r\n }).join(\"\");\r\n }\r\n break;\r\n }\r\n });\r\n return data;\r\n}\r\nfunction parse_TST_TileRowInfo(u8, type) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\r\n var pb = parse_shallow(u8);\r\n var R = varint_to_i32(pb[1][0].data) >>> 0;\r\n var cnt = varint_to_i32(pb[2][0].data) >>> 0;\r\n var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\r\n var used_storage_u8, used_storage;\r\n if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\r\n used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\r\n used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\r\n } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\r\n used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\r\n used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\r\n } else\r\n throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\r\n var width = wide_offsets ? 4 : 1;\r\n var used_storage_offsets = u8_to_dataview(used_storage_u8);\r\n var offsets = [];\r\n for (var C = 0; C < used_storage_u8.length / 2; ++C) {\r\n var off = used_storage_offsets.getUint16(C * 2, true);\r\n if (off < 65535)\r\n offsets.push([C, off]);\r\n }\r\n if (offsets.length != cnt)\r\n throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\r\n var cells = [];\r\n for (C = 0; C < offsets.length - 1; ++C)\r\n cells[offsets[C][0]] = used_storage[subarray](offsets[C][1] * width, offsets[C + 1][1] * width);\r\n if (offsets.length >= 1)\r\n cells[offsets[offsets.length - 1][0]] = used_storage[subarray](offsets[offsets.length - 1][1] * width);\r\n return { R: R, cells: cells };\r\n}\r\nfunction parse_TST_Tile(M, root) {\r\n var _a;\r\n var pb = parse_shallow(root.data);\r\n var storage = -1;\r\n if ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) {\r\n if (varint_to_i32(pb[7][0].data) >>> 0)\r\n storage = 1;\r\n else\r\n storage = 0;\r\n }\r\n var ri = mappa(pb[5], function(u8) {\r\n return parse_TST_TileRowInfo(u8, storage);\r\n });\r\n return {\r\n nrows: varint_to_i32(pb[4][0].data) >>> 0,\r\n data: ri.reduce(function(acc, x) {\r\n if (!acc[x.R])\r\n acc[x.R] = [];\r\n x.cells.forEach(function(cell, C) {\r\n if (acc[x.R][C])\r\n throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\r\n acc[x.R][C] = cell;\r\n });\r\n return acc;\r\n }, [])\r\n };\r\n}\r\nfunction parse_TST_TableModelArchive(M, root, ws) {\r\n var _a, _b, _c;\r\n var pb = parse_shallow(root.data);\r\n var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\r\n range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\r\n if (range.e.r < 0)\r\n throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\r\n range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\r\n if (range.e.c < 0)\r\n throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\r\n ws[\"!ref\"] = encode_range(range);\r\n var dense = Array.isArray(ws);\r\n var store = parse_shallow(pb[4][0].data);\r\n var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\r\n var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : [];\r\n var tile = parse_shallow(store[3][0].data);\r\n var _R = 0;\r\n tile[1].forEach(function(t) {\r\n var tl = parse_shallow(t.data);\r\n var ref2 = M[parse_TSP_Reference(tl[2][0].data)][0];\r\n var mtype2 = varint_to_i32(ref2.meta[1][0].data);\r\n if (mtype2 != 6002)\r\n throw new Error(\"6001 unexpected reference to \".concat(mtype2));\r\n var _tile = parse_TST_Tile(M, ref2);\r\n _tile.data.forEach(function(row, R) {\r\n row.forEach(function(buf, C) {\r\n var res = parse_cell_storage(buf, sst, rsst);\r\n if (res) {\r\n if (dense) {\r\n if (!ws[_R + R])\r\n ws[_R + R] = [];\r\n ws[_R + R][C] = res;\r\n } else {\r\n var addr = encode_cell({ r: _R + R, c: C });\r\n ws[addr] = res;\r\n }\r\n }\r\n });\r\n });\r\n _R += _tile.nrows;\r\n });\r\n if ((_b = store[13]) == null ? void 0 : _b[0]) {\r\n var ref = M[parse_TSP_Reference(store[13][0].data)][0];\r\n var mtype = varint_to_i32(ref.meta[1][0].data);\r\n if (mtype != 6144)\r\n throw new Error(\"Expected merge type 6144, found \".concat(mtype));\r\n ws[\"!merges\"] = (_c = parse_shallow(ref.data)) == null ? void 0 : _c[1].map(function(pi) {\r\n var merge = parse_shallow(pi.data);\r\n var origin = u8_to_dataview(parse_shallow(merge[1][0].data)[1][0].data), size = u8_to_dataview(parse_shallow(merge[2][0].data)[1][0].data);\r\n return {\r\n s: { r: origin.getUint16(0, true), c: origin.getUint16(2, true) },\r\n e: {\r\n r: origin.getUint16(0, true) + size.getUint16(0, true) - 1,\r\n c: origin.getUint16(2, true) + size.getUint16(2, true) - 1\r\n }\r\n };\r\n });\r\n }\r\n}\r\nfunction parse_TST_TableInfoArchive(M, root, opts) {\r\n var pb = parse_shallow(root.data);\r\n var out;\r\n if (!(opts == null ? void 0 : opts.dense))\r\n out = { \"!ref\": \"A1\" };\r\n else\r\n out = [];\r\n out[\"!ref\"] = \"A1\";\r\n var tableref = M[parse_TSP_Reference(pb[2][0].data)];\r\n var mtype = varint_to_i32(tableref[0].meta[1][0].data);\r\n if (mtype != 6001)\r\n throw new Error(\"6000 unexpected reference to \".concat(mtype));\r\n parse_TST_TableModelArchive(M, tableref[0], out);\r\n return out;\r\n}\r\nfunction parse_TN_SheetArchive(M, root, opts) {\r\n var _a;\r\n var pb = parse_shallow(root.data);\r\n var out = {\r\n name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\r\n sheets: []\r\n };\r\n var shapeoffs = mappa(pb[2], parse_TSP_Reference);\r\n shapeoffs.forEach(function(off) {\r\n M[off].forEach(function(m) {\r\n var mtype = varint_to_i32(m.meta[1][0].data);\r\n if (mtype == 6e3)\r\n out.sheets.push(parse_TST_TableInfoArchive(M, m, opts));\r\n });\r\n });\r\n return out;\r\n}\r\nfunction parse_TN_DocumentArchive(M, root, opts) {\r\n var _a;\r\n var out = book_new();\r\n var pb = parse_shallow(root.data);\r\n if ((_a = pb[2]) == null ? void 0 : _a[0])\r\n throw new Error(\"Keynote presentations are not supported\");\r\n var sheetoffs = mappa(pb[1], parse_TSP_Reference);\r\n sheetoffs.forEach(function(off) {\r\n M[off].forEach(function(m) {\r\n var mtype = varint_to_i32(m.meta[1][0].data);\r\n if (mtype == 2) {\r\n var root2 = parse_TN_SheetArchive(M, m, opts);\r\n root2.sheets.forEach(function(sheet, idx) {\r\n book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\r\n });\r\n }\r\n });\r\n });\r\n if (out.SheetNames.length == 0)\r\n throw new Error(\"Empty NUMBERS file\");\r\n out.bookType = \"numbers\";\r\n return out;\r\n}\r\nfunction parse_numbers_iwa(cfb, opts) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n var M = {}, indices = [];\r\n cfb.FullPaths.forEach(function(p) {\r\n if (p.match(/\\.iwpv2/))\r\n throw new Error(\"Unsupported password protection\");\r\n });\r\n cfb.FileIndex.forEach(function(s) {\r\n if (!s.name.match(/\\.iwa$/))\r\n return;\r\n if (s.content[0] == 98)\r\n return;\r\n var o;\r\n try {\r\n o = decompress_iwa_file(s.content);\r\n } catch (e) {\r\n return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\r\n }\r\n var packets;\r\n try {\r\n packets = parse_iwa_file(o);\r\n } catch (e) {\r\n return console.log(\"## \" + (e.message || e));\r\n }\r\n packets.forEach(function(packet) {\r\n M[packet.id] = packet.messages;\r\n indices.push(packet.id);\r\n });\r\n });\r\n if (!indices.length)\r\n throw new Error(\"File has no messages\");\r\n if (((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)\r\n throw new Error(\"Pages documents are not supported\");\r\n var docroot = ((_h = (_g = (_f = (_e = M == null ? void 0 : M[1]) == null ? void 0 : _e[0]) == null ? void 0 : _f.meta) == null ? void 0 : _g[1]) == null ? void 0 : _h[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\r\n if (!docroot)\r\n indices.forEach(function(idx) {\r\n M[idx].forEach(function(iwam) {\r\n var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\r\n if (mtype == 1) {\r\n if (!docroot)\r\n docroot = iwam;\r\n else\r\n throw new Error(\"Document has multiple roots\");\r\n }\r\n });\r\n });\r\n if (!docroot)\r\n throw new Error(\"Cannot find Document root\");\r\n return parse_TN_DocumentArchive(M, docroot, opts);\r\n}\r\nfunction write_tile_row(tri, data, SST, wide) {\r\n var _a, _b;\r\n if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\r\n throw \"Mutation only works on post-BNC storages!\";\r\n var cnt = 0;\r\n if (tri[7][0].data.length < 2 * data.length) {\r\n var new_7 = new Uint8Array(2 * data.length);\r\n new_7.set(tri[7][0].data);\r\n tri[7][0].data = new_7;\r\n }\r\n if (tri[4][0].data.length < 2 * data.length) {\r\n var new_4 = new Uint8Array(2 * data.length);\r\n new_4.set(tri[4][0].data);\r\n tri[4][0].data = new_4;\r\n }\r\n var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\r\n var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\r\n var width = wide ? 4 : 1;\r\n for (var C = 0; C < data.length; ++C) {\r\n if (data[C] == null) {\r\n dv.setUint16(C * 2, 65535, true);\r\n _dv.setUint16(C * 2, 65535);\r\n continue;\r\n }\r\n dv.setUint16(C * 2, last_offset / width, true);\r\n _dv.setUint16(C * 2, _last_offset / width, true);\r\n var celload, _celload;\r\n switch (typeof data[C]) {\r\n case \"string\":\r\n celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\r\n _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\r\n break;\r\n case \"number\":\r\n celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\r\n _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\r\n break;\r\n case \"boolean\":\r\n celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\r\n _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\r\n break;\r\n default:\r\n throw new Error(\"Unsupported value \" + data[C]);\r\n }\r\n cell_storage.push(celload);\r\n last_offset += celload.length;\r\n {\r\n _cell_storage.push(_celload);\r\n _last_offset += _celload.length;\r\n }\r\n ++cnt;\r\n }\r\n tri[2][0].data = write_varint49(cnt);\r\n tri[5][0].data = write_varint49(5);\r\n for (; C < tri[7][0].data.length / 2; ++C) {\r\n dv.setUint16(C * 2, 65535, true);\r\n _dv.setUint16(C * 2, 65535, true);\r\n }\r\n tri[6][0].data = u8concat(cell_storage);\r\n tri[3][0].data = u8concat(_cell_storage);\r\n tri[8] = [{ type: 0, data: write_varint49(wide ? 1 : 0) }];\r\n return cnt;\r\n}\r\nfunction write_iwam(type, payload) {\r\n return {\r\n meta: [[], [{ type: 0, data: write_varint49(type) }]],\r\n data: payload\r\n };\r\n}\r\nvar USE_WIDE_ROWS = true;\r\nfunction write_numbers_iwa(wb, opts) {\r\n var _a;\r\n if (!opts || !opts.numbers)\r\n throw new Error(\"Must pass a `numbers` option -- check the README\");\r\n var ws = wb.Sheets[wb.SheetNames[0]];\r\n if (wb.SheetNames.length > 1)\r\n console.error(\"The Numbers writer currently writes only the first table\");\r\n var range = decode_range(ws[\"!ref\"]);\r\n range.s.r = range.s.c = 0;\r\n var trunc = false;\r\n if (range.e.c > 999) {\r\n trunc = true;\r\n range.e.c = 999;\r\n }\r\n if (range.e.r > 254) {\r\n trunc = true;\r\n range.e.r = 254;\r\n }\r\n if (trunc)\r\n console.error(\"The Numbers writer is currently limited to \".concat(encode_range(range)));\r\n var data = sheet_to_json(ws, { range: range, header: 1 });\r\n var SST = [\"~Sh33tJ5~\"];\r\n data.forEach(function(row) {\r\n return row.forEach(function(cell) {\r\n if (typeof cell == \"string\")\r\n SST.push(cell);\r\n });\r\n });\r\n var dependents = {};\r\n var indices = [];\r\n var cfb = CFB.read(opts.numbers, { type: \"base64\" });\r\n cfb.FileIndex.map(function(fi, idx) {\r\n return [fi, cfb.FullPaths[idx]];\r\n }).forEach(function(row) {\r\n var fi = row[0], fp = row[1];\r\n if (fi.type != 2)\r\n return;\r\n if (!fi.name.match(/\\.iwa/))\r\n return;\r\n var old_content = fi.content;\r\n var raw1 = decompress_iwa_file(old_content);\r\n var x2 = parse_iwa_file(raw1);\r\n x2.forEach(function(packet2) {\r\n indices.push(packet2.id);\r\n dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) };\r\n });\r\n });\r\n indices.sort(function(x2, y) {\r\n return x2 - y;\r\n });\r\n var indices_varint = indices.filter(function(x2) {\r\n return x2 > 1;\r\n }).map(function(x2) {\r\n return [x2, write_varint49(x2)];\r\n });\r\n cfb.FileIndex.map(function(fi, idx) {\r\n return [fi, cfb.FullPaths[idx]];\r\n }).forEach(function(row) {\r\n var fi = row[0];\r\n if (!fi.name.match(/\\.iwa/))\r\n return;\r\n var x2 = parse_iwa_file(decompress_iwa_file(fi.content));\r\n x2.forEach(function(ia) {\r\n indices_varint.forEach(function(ivi) {\r\n if (ia.messages.some(function(mess) {\r\n return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]);\r\n })) {\r\n dependents[ivi[0]].deps.push(ia.id);\r\n }\r\n });\r\n });\r\n });\r\n function get_unique_msgid(dep) {\r\n for (var i = 927262; i < 2e6; ++i)\r\n if (!dependents[i]) {\r\n dependents[i] = dep;\r\n return i;\r\n }\r\n throw new Error(\"Too many messages\");\r\n }\r\n var entry = CFB.find(cfb, dependents[1].location);\r\n if (!entry)\r\n throw \"Could not find \".concat(dependents[1].location, \" in Numbers template\");\r\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\r\n var docroot;\r\n for (var xi = 0; xi < x.length; ++xi) {\r\n var packet = x[xi];\r\n if (packet.id == 1)\r\n docroot = packet;\r\n }\r\n if (docroot == null)\r\n throw \"Could not find message \".concat(1, \" in Numbers template\");\r\n var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\r\n entry = CFB.find(cfb, dependents[sheetrootref].location);\r\n if (!entry)\r\n throw \"Could not find \".concat(dependents[sheetrootref].location, \" in Numbers template\");\r\n x = parse_iwa_file(decompress_iwa_file(entry.content));\r\n for (xi = 0; xi < x.length; ++xi) {\r\n packet = x[xi];\r\n if (packet.id == sheetrootref)\r\n docroot = packet;\r\n }\r\n var sheetref = parse_shallow(docroot.messages[0].data);\r\n {\r\n sheetref[1] = [{ type: 2, data: stru8(wb.SheetNames[0]) }];\r\n }\r\n docroot.messages[0].data = write_shallow(sheetref);\r\n entry.content = compress_iwa_file(write_iwa_file(x));\r\n entry.size = entry.content.length;\r\n sheetrootref = parse_TSP_Reference(sheetref[2][0].data);\r\n entry = CFB.find(cfb, dependents[sheetrootref].location);\r\n if (!entry)\r\n throw \"Could not find \".concat(dependents[sheetrootref].location, \" in Numbers template\");\r\n x = parse_iwa_file(decompress_iwa_file(entry.content));\r\n for (xi = 0; xi < x.length; ++xi) {\r\n packet = x[xi];\r\n if (packet.id == sheetrootref)\r\n docroot = packet;\r\n }\r\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\r\n entry = CFB.find(cfb, dependents[sheetrootref].location);\r\n if (!entry)\r\n throw \"Could not find \".concat(dependents[sheetrootref].location, \" in Numbers template\");\r\n x = parse_iwa_file(decompress_iwa_file(entry.content));\r\n for (xi = 0; xi < x.length; ++xi) {\r\n packet = x[xi];\r\n if (packet.id == sheetrootref)\r\n docroot = packet;\r\n }\r\n var pb = parse_shallow(docroot.messages[0].data);\r\n {\r\n pb[6][0].data = write_varint49(range.e.r + 1);\r\n pb[7][0].data = write_varint49(range.e.c + 1);\r\n var cruidsref = parse_TSP_Reference(pb[46][0].data);\r\n var oldbucket = CFB.find(cfb, dependents[cruidsref].location);\r\n if (!oldbucket)\r\n throw \"Could not find \".concat(dependents[cruidsref].location, \" in Numbers template\");\r\n var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\r\n {\r\n for (var j = 0; j < _x.length; ++j) {\r\n if (_x[j].id == cruidsref)\r\n break;\r\n }\r\n if (_x[j].id != cruidsref)\r\n throw \"Bad ColumnRowUIDMapArchive\";\r\n var cruids = parse_shallow(_x[j].messages[0].data);\r\n cruids[1] = [];\r\n cruids[2] = [], cruids[3] = [];\r\n for (var C = 0; C <= range.e.c; ++C) {\r\n cruids[1].push({ type: 2, data: write_shallow([\r\n [],\r\n [{ type: 0, data: write_varint49(C + 420690) }],\r\n [{ type: 0, data: write_varint49(C + 420690) }]\r\n ]) });\r\n cruids[2].push({ type: 0, data: write_varint49(C) });\r\n cruids[3].push({ type: 0, data: write_varint49(C) });\r\n }\r\n cruids[4] = [];\r\n cruids[5] = [], cruids[6] = [];\r\n for (var R = 0; R <= range.e.r; ++R) {\r\n cruids[4].push({ type: 2, data: write_shallow([\r\n [],\r\n [{ type: 0, data: write_varint49(R + 726270) }],\r\n [{ type: 0, data: write_varint49(R + 726270) }]\r\n ]) });\r\n cruids[5].push({ type: 0, data: write_varint49(R) });\r\n cruids[6].push({ type: 0, data: write_varint49(R) });\r\n }\r\n _x[j].messages[0].data = write_shallow(cruids);\r\n }\r\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\r\n oldbucket.size = oldbucket.content.length;\r\n delete pb[46];\r\n var store = parse_shallow(pb[4][0].data);\r\n {\r\n store[7][0].data = write_varint49(range.e.r + 1);\r\n var row_headers = parse_shallow(store[1][0].data);\r\n var row_header_ref = parse_TSP_Reference(row_headers[2][0].data);\r\n oldbucket = CFB.find(cfb, dependents[row_header_ref].location);\r\n if (!oldbucket)\r\n throw \"Could not find \".concat(dependents[cruidsref].location, \" in Numbers template\");\r\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\r\n {\r\n if (_x[0].id != row_header_ref)\r\n throw \"Bad HeaderStorageBucket\";\r\n var base_bucket = parse_shallow(_x[0].messages[0].data);\r\n if ((_a = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a[0])\r\n for (R = 0; R < data.length; ++R) {\r\n var _bucket = parse_shallow(base_bucket[2][0].data);\r\n _bucket[1][0].data = write_varint49(R);\r\n _bucket[4][0].data = write_varint49(data[R].length);\r\n base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\r\n }\r\n _x[0].messages[0].data = write_shallow(base_bucket);\r\n }\r\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\r\n oldbucket.size = oldbucket.content.length;\r\n var col_header_ref = parse_TSP_Reference(store[2][0].data);\r\n oldbucket = CFB.find(cfb, dependents[col_header_ref].location);\r\n if (!oldbucket)\r\n throw \"Could not find \".concat(dependents[cruidsref].location, \" in Numbers template\");\r\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\r\n {\r\n if (_x[0].id != col_header_ref)\r\n throw \"Bad HeaderStorageBucket\";\r\n base_bucket = parse_shallow(_x[0].messages[0].data);\r\n for (C = 0; C <= range.e.c; ++C) {\r\n _bucket = parse_shallow(base_bucket[2][0].data);\r\n _bucket[1][0].data = write_varint49(C);\r\n _bucket[4][0].data = write_varint49(range.e.r + 1);\r\n base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\r\n }\r\n _x[0].messages[0].data = write_shallow(base_bucket);\r\n }\r\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\r\n oldbucket.size = oldbucket.content.length;\r\n if (ws[\"!merges\"]) {\r\n var mergeid = get_unique_msgid({\r\n type: 6144,\r\n deps: [sheetrootref],\r\n location: dependents[sheetrootref].location\r\n });\r\n var mergedata = [[], []];\r\n ws[\"!merges\"].forEach(function(m) {\r\n mergedata[1].push({ type: 2, data: write_shallow([\r\n [],\r\n [{ type: 2, data: write_shallow([\r\n [],\r\n [{ type: 5, data: new Uint8Array(new Uint16Array([m.s.r, m.s.c]).buffer) }]\r\n ]) }],\r\n [{ type: 2, data: write_shallow([\r\n [],\r\n [{ type: 5, data: new Uint8Array(new Uint16Array([m.e.r - m.s.r + 1, m.e.c - m.s.c + 1]).buffer) }]\r\n ]) }]\r\n ]) });\r\n });\r\n store[13] = [{ type: 2, data: write_TSP_Reference(mergeid) }];\r\n x.push({\r\n id: mergeid,\r\n messages: [write_iwam(6144, write_shallow(mergedata))]\r\n });\r\n }\r\n var sstref = parse_TSP_Reference(store[4][0].data);\r\n (function() {\r\n var sentry = CFB.find(cfb, dependents[sstref].location);\r\n if (!sentry)\r\n throw \"Could not find \".concat(dependents[sstref].location, \" in Numbers template\");\r\n var sx = parse_iwa_file(decompress_iwa_file(sentry.content));\r\n var sstroot;\r\n for (var sxi = 0; sxi < sx.length; ++sxi) {\r\n var packet2 = sx[sxi];\r\n if (packet2.id == sstref)\r\n sstroot = packet2;\r\n }\r\n if (sstroot == null)\r\n throw \"Could not find message \".concat(sstref, \" in Numbers template\");\r\n var sstdata = parse_shallow(sstroot.messages[0].data);\r\n {\r\n sstdata[3] = [];\r\n SST.forEach(function(str, i) {\r\n sstdata[3].push({ type: 2, data: write_shallow([\r\n [],\r\n [{ type: 0, data: write_varint49(i) }],\r\n [{ type: 0, data: write_varint49(1) }],\r\n [{ type: 2, data: stru8(str) }]\r\n ]) });\r\n });\r\n }\r\n sstroot.messages[0].data = write_shallow(sstdata);\r\n sentry.content = compress_iwa_file(write_iwa_file(sx));\r\n sentry.size = sentry.content.length;\r\n })();\r\n var tile = parse_shallow(store[3][0].data);\r\n {\r\n var t = tile[1][0];\r\n tile[3] = [{ type: 0, data: write_varint49(USE_WIDE_ROWS ? 1 : 0) }];\r\n var tl = parse_shallow(t.data);\r\n {\r\n var tileref = parse_TSP_Reference(tl[2][0].data);\r\n (function() {\r\n var tentry = CFB.find(cfb, dependents[tileref].location);\r\n if (!tentry)\r\n throw \"Could not find \".concat(dependents[tileref].location, \" in Numbers template\");\r\n var tx = parse_iwa_file(decompress_iwa_file(tentry.content));\r\n var tileroot;\r\n for (var sxi = 0; sxi < tx.length; ++sxi) {\r\n var packet2 = tx[sxi];\r\n if (packet2.id == tileref)\r\n tileroot = packet2;\r\n }\r\n var tiledata = parse_shallow(tileroot.messages[0].data);\r\n {\r\n delete tiledata[6];\r\n delete tile[7];\r\n var rowload = new Uint8Array(tiledata[5][0].data);\r\n tiledata[5] = [];\r\n for (var R2 = 0; R2 <= range.e.r; ++R2) {\r\n var tilerow = parse_shallow(rowload);\r\n write_tile_row(tilerow, data[R2], SST, USE_WIDE_ROWS);\r\n tilerow[1][0].data = write_varint49(R2);\r\n tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\r\n }\r\n tiledata[1] = [{ type: 0, data: write_varint49(0) }];\r\n tiledata[2] = [{ type: 0, data: write_varint49(0) }];\r\n tiledata[3] = [{ type: 0, data: write_varint49(0) }];\r\n tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\r\n tiledata[6] = [{ type: 0, data: write_varint49(5) }];\r\n tiledata[7] = [{ type: 0, data: write_varint49(1) }];\r\n tiledata[8] = [{ type: 0, data: write_varint49(USE_WIDE_ROWS ? 1 : 0) }];\r\n }\r\n tileroot.messages[0].data = write_shallow(tiledata);\r\n tentry.content = compress_iwa_file(write_iwa_file(tx));\r\n tentry.size = tentry.content.length;\r\n })();\r\n }\r\n t.data = write_shallow(tl);\r\n }\r\n store[3][0].data = write_shallow(tile);\r\n }\r\n pb[4][0].data = write_shallow(store);\r\n }\r\n docroot.messages[0].data = write_shallow(pb);\r\n entry.content = compress_iwa_file(write_iwa_file(x));\r\n entry.size = entry.content.length;\r\n return cfb;\r\n}\r\nfunction fix_opts_func(defaults) {\r\n\treturn function fix_opts(opts) {\r\n\t\tfor(var i = 0; i != defaults.length; ++i) {\r\n\t\t\tvar d = defaults[i];\r\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\r\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction fix_read_opts(opts) {\r\nfix_opts_func([\r\n\t['cellNF', false], /* emit cell number format string as .z */\r\n\t['cellHTML', true], /* emit html string as .h */\r\n\t['cellFormula', true], /* emit formulae as .f */\r\n\t['cellStyles', false], /* emits style/theme as .s */\r\n\t['cellText', true], /* emit formatted text as .w */\r\n\t['cellDates', false], /* emit date cells with type `d` */\r\n\r\n\t['sheetStubs', false], /* emit empty cells */\r\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\r\n\r\n\t['bookDeps', false], /* parse calculation chains */\r\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\r\n\t['bookProps', false], /* only try to get properties (no Sheets) */\r\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\r\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\r\n\r\n\t['password',''], /* password */\r\n\t['WTF', false] /* WTF mode (throws errors) */\r\n])(opts);\r\n}\r\n\r\nfunction fix_write_opts(opts) {\r\nfix_opts_func([\r\n\t['cellDates', false], /* write date cells with type `d` */\r\n\r\n\t['bookSST', false], /* Generate Shared String Table */\r\n\r\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\r\n\r\n\t['compression', false], /* Use file compression */\r\n\r\n\t['WTF', false] /* WTF mode (throws errors) */\r\n])(opts);\r\n}\r\nfunction get_sheet_type(n) {\r\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\r\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\r\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\r\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\r\n\treturn (n && n.length) ? n : \"sheet\";\r\n}\r\nfunction safe_parse_wbrels(wbrels, sheets) {\r\n\tif(!wbrels) return 0;\r\n\ttry {\r\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\r\n\t} catch(e) { return null; }\r\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\r\n}\r\n\r\nfunction safe_parse_sheet(zip, path, relsPath, sheet, idx, sheetRels, sheets, stype, opts, wb, themes, styles) {\r\n\ttry {\r\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\r\n\t\tvar data = getzipdata(zip, path);\r\n\t\tvar _ws;\r\n\t\tswitch(stype) {\r\n\t\t\tcase 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\r\n\t\t\tcase 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\r\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\r\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\r\n\t\t\t\tvar drelsp = get_rels_path(dfile);\r\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\r\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\r\n\t\t\t\tvar crelsp = get_rels_path(chartp);\r\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\r\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\r\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\r\n\t\t}\r\n\t\tsheets[sheet] = _ws;\r\n\r\n\t\t/* scan rels for comments and threaded comments */\r\n\t\tvar tcomments = [];\r\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\r\n\t\t\tvar dfile = \"\";\r\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\r\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\r\n\t\t\t\tvar comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\r\n\t\t\t\tif(!comments || !comments.length) return;\r\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\r\n\t\t\t}\r\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\r\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\r\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\r\n\t\t\t}\r\n\t\t});\r\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\r\n\t} catch(e) { if(opts.WTF) throw e; }\r\n}\r\n\r\nfunction strip_front_slash(x) { return x.charAt(0) == '/' ? x.slice(1) : x; }\r\n\r\nfunction parse_zip(zip, opts) {\r\n\tmake_ssf();\r\n\topts = opts || {};\r\n\tfix_read_opts(opts);\r\n\r\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\r\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\r\n\t/* UOC */\r\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\r\n\t/* Numbers */\r\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\r\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\r\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\r\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip, opts);\r\n\t\t\tvar _zip = CFB.utils.cfb_new();\r\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\r\n\t\t\treturn parse_numbers_iwa(_zip, opts);\r\n\t\t}\r\n\t\tthrow new Error('Unsupported NUMBERS file');\r\n\t}\r\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\r\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\r\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\r\n\t\tvar index_zip = CFB.find(zip, 'Index.zip');\r\n\t\tif(index_zip) {\r\n\t\t\topts = dup(opts);\r\n\t\t\tdelete opts.type;\r\n\t\t\tif(typeof index_zip.content == \"string\") opts.type = \"binary\";\r\n\t\t\t// TODO: Bun buffer bug\r\n\t\t\tif(typeof Bun !== \"undefined\" && Buffer.isBuffer(index_zip.content)) return readSync(new Uint8Array(index_zip.content), opts);\r\n\t\t\treturn readSync(index_zip.content, opts);\r\n\t\t}\r\n\t\tthrow new Error('Unsupported ZIP file');\r\n\t}\r\n\r\n\tvar entries = zipentries(zip);\r\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')));\r\n\tvar xlsb = false;\r\n\tvar sheets, binname;\r\n\tif(dir.workbooks.length === 0) {\r\n\t\tbinname = \"xl/workbook.xml\";\r\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\r\n\t}\r\n\tif(dir.workbooks.length === 0) {\r\n\t\tbinname = \"xl/workbook.bin\";\r\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\r\n\t\tdir.workbooks.push(binname);\r\n\t\txlsb = true;\r\n\t}\r\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\r\n\r\n\tvar themes = ({});\r\n\tvar styles = ({});\r\n\tif(!opts.bookSheets && !opts.bookProps) {\r\n\t\tstrs = [];\r\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\r\n\r\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme_xml(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\", opts);\r\n\r\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\r\n\t}\r\n\r\n\t/*var externbooks = */dir.links.map(function(link) {\r\n\t\ttry {\r\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\r\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\r\n\t\t} catch(e) {}\r\n\t});\r\n\r\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\r\n\r\n\tvar props = {}, propdata = \"\";\r\n\r\n\tif(dir.coreprops.length) {\r\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\r\n\t\tif(propdata) props = parse_core_props(propdata);\r\n\t\tif(dir.extprops.length !== 0) {\r\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\r\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\r\n\t\t}\r\n\t}\r\n\r\n\tvar custprops = {};\r\n\tif(!opts.bookSheets || opts.bookProps) {\r\n\t\tif (dir.custprops.length !== 0) {\r\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\r\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\r\n\t\t}\r\n\t}\r\n\r\n\tvar out = ({});\r\n\tif(opts.bookSheets || opts.bookProps) {\r\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\r\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\r\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\r\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\r\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\r\n\t}\r\n\tsheets = {};\r\n\r\n\tvar deps = {};\r\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\r\n\r\n\tvar i=0;\r\n\tvar sheetRels = ({});\r\n\tvar path, relsPath;\r\n\r\n\t{\r\n\t\tvar wbsheets = wb.Sheets;\r\n\t\tprops.Worksheets = wbsheets.length;\r\n\t\tprops.SheetNames = [];\r\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\r\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\r\n\t\t}\r\n\t}\r\n\r\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\r\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\r\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\r\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\r\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\r\n\r\n\tif((dir.metadata || []).length >= 1) {\r\n\t\t/* TODO: MDX and other types of metadata */\r\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\r\n\t}\r\n\r\n\tif((dir.people || []).length >= 1) {\r\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\r\n\t}\r\n\r\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\r\n\r\n\t/* Numbers iOS hack */\r\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\r\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\r\n\t\tvar stype = \"sheet\";\r\n\t\tif(wbrels && wbrels[i]) {\r\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\r\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\r\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\r\n\t\t\tstype = wbrels[i][2];\r\n\t\t} else {\r\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\r\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\r\n\t\t}\r\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\r\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\r\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\r\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\r\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\r\n\t\t\t\tvar snjseen = false;\r\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\r\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\r\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\r\n\t\t\t\t}\r\n\t\t\t\tif(!snjseen) continue wsloop;\r\n\t\t\t}\r\n\t\t}\r\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\r\n\t}\r\n\r\n\tout = ({\r\n\t\tDirectory: dir,\r\n\t\tWorkbook: wb,\r\n\t\tProps: props,\r\n\t\tCustprops: custprops,\r\n\t\tDeps: deps,\r\n\t\tSheets: sheets,\r\n\t\tSheetNames: props.SheetNames,\r\n\t\tStrings: strs,\r\n\t\tStyles: styles,\r\n\t\tThemes: themes,\r\n\t\tSSF: dup(table_fmt)\r\n\t});\r\n\tif(opts && opts.bookFiles) {\r\n\t\tif(zip.files) {\r\n\t\t\tout.keys = entries;\r\n\t\t\tout.files = zip.files;\r\n\t\t} else {\r\n\t\t\tout.keys = [];\r\n\t\t\tout.files = {};\r\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\r\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\r\n\t\t\t\tout.keys.push(p);\r\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tif(opts && opts.bookVBA) {\r\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\r\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\r\n\t}\r\n\t// TODO: pass back content types metdata for xlsm/xlsx resolution\r\n\tout.bookType = xlsb ? \"xlsb\" : \"xlsx\";\r\n\treturn out;\r\n}\r\n\r\n/* [MS-OFFCRYPTO] 2.1.1 */\r\nfunction parse_xlsxcfb(cfb, _opts) {\r\n\tvar opts = _opts || {};\r\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\r\n\ttry {\r\n\tf = '/!DataSpaces/Version';\r\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\r\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\r\n\r\n\t/* 2.3.4.1 */\r\n\tf = '/!DataSpaces/DataSpaceMap';\r\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\r\n\tvar dsm = parse_DataSpaceMap(data.content);\r\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\r\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\r\n\r\n\t/* 2.3.4.2 */\r\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\r\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\r\n\tvar seds = parse_DataSpaceDefinition(data.content);\r\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\r\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\r\n\r\n\t/* 2.3.4.3 */\r\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\r\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\r\n\t/*var hdr = */parse_Primary(data.content);\r\n\t} catch(e) {}\r\n\r\n\tf = '/EncryptionInfo';\r\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\r\n\tvar einfo = parse_EncryptionInfo(data.content);\r\n\r\n\t/* 2.3.4.4 */\r\n\tf = '/EncryptedPackage';\r\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\r\n\r\n/*global decrypt_agile */\r\nif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\r\n/*global decrypt_std76 */\r\nif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\r\n\tthrow new Error(\"File is password-protected\");\r\n}\r\n\r\nfunction write_zip_xlsb(wb, opts) {\r\n\tif(wb && !wb.SSF) {\r\n\t\twb.SSF = dup(table_fmt);\r\n\t}\r\n\tif(wb && wb.SSF) {\r\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\r\n\t\t// $FlowIgnore\r\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\r\n\t\topts.ssf = wb.SSF;\r\n\t}\r\n\topts.rels = {}; opts.wbrels = {};\r\n\topts.Strings = []; opts.Strings.Count = 0; opts.Strings.Unique = 0;\r\n\tif(browser_has_Map) opts.revStrings = new Map();\r\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\r\n\tvar wbext = \"bin\";\r\n\tvar vbafmt = true;\r\n\tvar ct = new_ct();\r\n\tfix_write_opts(opts = opts || {});\r\n\tvar zip = zip_new();\r\n\tvar f = \"\", rId = 0;\r\n\r\n\topts.cellXfs = [];\r\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\r\n\r\n\tif(!wb.Props) wb.Props = {};\r\n\r\n\tf = \"docProps/core.xml\";\r\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\r\n\tct.coreprops.push(f);\r\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\r\n\r\nf = \"docProps/app.xml\";\r\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\r\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\r\n\telse {\r\n\t\tvar _sn = [];\r\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\r\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\r\n\t\twb.Props.SheetNames = _sn;\r\n\t}\r\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\r\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\r\n\tct.extprops.push(f);\r\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\r\n\r\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\r\n\t\tf = \"docProps/custom.xml\";\r\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\r\n\t\tct.custprops.push(f);\r\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\r\n\t}\r\n\r\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\r\n\t\tvar wsrels = {'!id':{}};\r\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\r\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\r\n\t\tswitch(_type) {\r\n\t\tcase \"chart\":\r\n\t\t\t/* falls through */\r\n\t\tdefault:\r\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\r\n\t\t\tzip_add_file(zip, f, write_ws_bin(rId-1, opts, wb, wsrels));\r\n\t\t\tct.sheets.push(f);\r\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\r\n\t\t}\r\n\r\n\t\tif(ws) {\r\n\t\t\tvar comments = ws['!comments'];\r\n\t\t\tvar need_vml = false;\r\n\t\t\tvar cf = \"\";\r\n\t\t\tif(comments && comments.length > 0) {\r\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\r\n\t\t\t\tzip_add_file(zip, cf, write_comments_bin(comments, opts));\r\n\t\t\t\tct.comments.push(cf);\r\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\r\n\t\t\t\tneed_vml = true;\r\n\t\t\t}\r\n\t\t\tif(ws['!legacy']) {\r\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_vml(rId, ws['!comments']));\r\n\t\t\t}\r\n\t\t\tdelete ws['!comments'];\r\n\t\t\tdelete ws['!legacy'];\r\n\t\t}\r\n\r\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\r\n\t}\r\n\r\n\tif(opts.Strings != null && opts.Strings.length > 0) {\r\n\t\tf = \"xl/sharedStrings.\" + wbext;\r\n\t\tzip_add_file(zip, f, write_sst_bin(opts.Strings, opts));\r\n\t\tct.strs.push(f);\r\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\r\n\t}\r\n\r\n\tf = \"xl/workbook.\" + wbext;\r\n\tzip_add_file(zip, f, write_wb_bin(wb, opts));\r\n\tct.workbooks.push(f);\r\n\tadd_rels(opts.rels, 1, f, RELS.WB);\r\n\r\n\t/* TODO: something more intelligent with themes */\r\n\r\n\tf = \"xl/theme/theme1.xml\";\r\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\r\n\tct.themes.push(f);\r\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\r\n\r\n\t/* TODO: something more intelligent with styles */\r\n\r\n\tf = \"xl/styles.\" + wbext;\r\n\tzip_add_file(zip, f, write_sty_bin(wb, opts));\r\n\tct.styles.push(f);\r\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\r\n\r\n\tif(wb.vbaraw && vbafmt) {\r\n\t\tf = \"xl/vbaProject.bin\";\r\n\t\tzip_add_file(zip, f, wb.vbaraw);\r\n\t\tct.vba.push(f);\r\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\r\n\t}\r\n\r\n\tf = \"xl/metadata.\" + wbext;\r\n\tzip_add_file(zip, f, write_xlmeta_bin());\r\n\tct.metadata.push(f);\r\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\r\n\r\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\r\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\r\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\r\n\r\n\tdelete opts.revssf; delete opts.ssf;\r\n\treturn zip;\r\n}\r\n\r\nfunction write_zip_xlsx(wb, opts) {\r\n\tif(wb && !wb.SSF) {\r\n\t\twb.SSF = dup(table_fmt);\r\n\t}\r\n\tif(wb && wb.SSF) {\r\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\r\n\t\t// $FlowIgnore\r\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\r\n\t\topts.ssf = wb.SSF;\r\n\t}\r\n\topts.rels = {}; opts.wbrels = {};\r\n\topts.Strings = []; opts.Strings.Count = 0; opts.Strings.Unique = 0;\r\n\tif(browser_has_Map) opts.revStrings = new Map();\r\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\r\n\tvar wbext = \"xml\";\r\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\r\n\tvar ct = new_ct();\r\n\tfix_write_opts(opts = opts || {});\r\n\tvar zip = zip_new();\r\n\tvar f = \"\", rId = 0;\r\n\r\n\topts.cellXfs = [];\r\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\r\n\r\n\tif(!wb.Props) wb.Props = {};\r\n\r\n\tf = \"docProps/core.xml\";\r\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\r\n\tct.coreprops.push(f);\r\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\r\n\r\n\tf = \"docProps/app.xml\";\r\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\r\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\r\n\telse {\r\n\t\tvar _sn = [];\r\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\r\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\r\n\t\twb.Props.SheetNames = _sn;\r\n\t}\r\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\r\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\r\n\tct.extprops.push(f);\r\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\r\n\r\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\r\n\t\tf = \"docProps/custom.xml\";\r\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\r\n\t\tct.custprops.push(f);\r\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\r\n\t}\r\n\r\n\tvar people = [\"SheetJ5\"];\r\n\topts.tcid = 0;\r\n\r\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\r\n\t\tvar wsrels = {'!id':{}};\r\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\r\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\r\n\r\n\t\t/** 2022-08-15 导出图片 */\r\n\t\tvar images = ws['!images'] || [];\r\n\t\t// var rels = ws['!rels'] = [],\r\n\t\tif (images.length > 0) {\r\n\t\t\tvar rels = ws['!rels'] = [], draw_rels = [];\r\n\t\t\tfor (var sId = 1; sId < images.length + 1; ++sId) {\r\n\t\t\t\tvar image = images[sId - 1];\r\n\t\t\t\tf = 'xl/media/' + image.name;\r\n\t\t\t\t// zip.file(f, image.data, image.opts);\r\n\t\t\t\t// zip_add_file(zip, f, write_cust_props(image.data, image.opts))\r\n\t\t\t\tzip_add_file(zip, f, image.data, image.opts);\r\n\t\t\t\tadd_rels(draw_rels, sId, \"../media/\" + image.name, RELS.IMG);\r\n\t\t\t}\r\n\t\t\t// zip.file(\"xl/drawings/drawing\" + rId + \".\" + wbext, write_drawing(images, rId));\r\n\t\t\tzip_add_file(zip, \"xl/drawings/drawing\" + rId + \".\" + wbext, write_drawing(images, rId))\r\n\t\t\tadd_rels(rels, rId, \"../drawings/drawing\" + rId + \".\" + wbext, RELS.DRAW);\r\n\t\t\t// zip.file(\"xl/drawings/_rels/drawing\" + rId + \".\" + wbext + \".rels\", write_rels(draw_rels));\r\n\t\t\tzip_add_file(zip, \"xl/drawings/_rels/drawing\" + rId + \".\" + wbext + \".rels\", write_rels(draw_rels))\r\n\t\t\t// zip.file(\"xl/worksheets/_rels/sheet\" + rId + \".\" + wbext + '.rels', write_rels(rels));\r\n\t\t\tzip_add_file(zip, \"xl/worksheets/_rels/sheet\" + rId + \".\" + wbext + '.rels', write_rels(rels))\r\n\t\t}\r\n\t\t/** 2022-08-15 导出图片 */\r\n\r\n\t\tswitch(_type) {\r\n\t\tcase \"chart\":\r\n\t\t\t/* falls through */\r\n\t\tdefault:\r\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\r\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\r\n\t\t\tct.sheets.push(f);\r\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\r\n\t\t}\r\n\r\n\t\tif(ws) {\r\n\t\t\tvar comments = ws['!comments'];\r\n\t\t\tvar need_vml = false;\r\n\t\t\tvar cf = \"\";\r\n\t\t\tif(comments && comments.length > 0) {\r\n\t\t\t\tvar needtc = false;\r\n\t\t\t\tcomments.forEach(function(carr) {\r\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\r\n\t\t\t\t});\r\n\t\t\t\tif(needtc) {\r\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".xml\";\r\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\r\n\t\t\t\t\tct.threadedcomments.push(cf);\r\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".xml\", RELS.TCMNT);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\r\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\r\n\t\t\t\tct.comments.push(cf);\r\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\r\n\t\t\t\tneed_vml = true;\r\n\t\t\t}\r\n\t\t\tif(ws['!legacy']) {\r\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_vml(rId, ws['!comments']));\r\n\t\t\t}\r\n\t\t\tdelete ws['!comments'];\r\n\t\t\tdelete ws['!legacy'];\r\n\t\t}\r\n\r\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\r\n\t}\r\n\r\n\tif(opts.Strings != null && opts.Strings.length > 0) {\r\n\t\tf = \"xl/sharedStrings.\" + wbext;\r\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\r\n\t\tct.strs.push(f);\r\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\r\n\t}\r\n\r\n\tf = \"xl/workbook.\" + wbext;\r\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\r\n\tct.workbooks.push(f);\r\n\tadd_rels(opts.rels, 1, f, RELS.WB);\r\n\r\n\t/* TODO: something more intelligent with themes */\r\n\r\n\tf = \"xl/theme/theme1.xml\";\r\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\r\n\tct.themes.push(f);\r\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\r\n\r\n\t/* TODO: something more intelligent with styles */\r\n\r\n\tf = \"xl/styles.\" + wbext;\r\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\r\n\tct.styles.push(f);\r\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\r\n\r\n\tif(wb.vbaraw && vbafmt) {\r\n\t\tf = \"xl/vbaProject.bin\";\r\n\t\tzip_add_file(zip, f, wb.vbaraw);\r\n\t\tct.vba.push(f);\r\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\r\n\t}\r\n\r\n\tf = \"xl/metadata.\" + wbext;\r\n\tzip_add_file(zip, f, write_xlmeta_xml());\r\n\tct.metadata.push(f);\r\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\r\n\r\n\tif(people.length > 1) {\r\n\t\tf = \"xl/persons/person.xml\";\r\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\r\n\t\tct.people.push(f);\r\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\r\n\t}\r\n\r\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\r\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\r\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\r\n\r\n\tdelete opts.revssf; delete opts.ssf;\r\n\treturn zip;\r\n}\r\n\r\nfunction firstbyte(f,o) {\r\n\tvar x = \"\";\r\n\tswitch((o||{}).type || \"base64\") {\r\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\r\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\r\n\t\tcase 'binary': x = f; break;\r\n\t\tcase 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\r\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\r\n\t}\r\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\r\n}\r\n\r\nfunction read_cfb(cfb, opts) {\r\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\r\n\treturn parse_xlscfb(cfb, opts);\r\n}\r\n\r\nfunction read_zip(data, opts) {\r\n\tvar zip, d = data;\r\n\tvar o = opts||{};\r\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\r\n\tzip = zip_read(d, o);\r\n\treturn parse_zip(zip, o);\r\n}\r\n\r\nfunction read_plaintext(data, o) {\r\n\tvar i = 0;\r\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\r\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\r\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\r\n\t\tdefault: break main;\r\n\t}\r\n\treturn PRN.to_workbook(data, o);\r\n}\r\n\r\nfunction read_plaintext_raw(data, o) {\r\n\tvar str = \"\", bytes = firstbyte(data, o);\r\n\tswitch(o.type) {\r\n\t\tcase 'base64': str = Base64_decode(data); break;\r\n\t\tcase 'binary': str = data; break;\r\n\t\tcase 'buffer': str = data.toString('binary'); break;\r\n\t\tcase 'array': str = cc2str(data); break;\r\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\r\n\t}\r\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\r\n\to.type = \"binary\";\r\n\treturn read_plaintext(str, o);\r\n}\r\n\r\nfunction read_utf16(data, o) {\r\n\tvar d = data;\r\n\tif(o.type == 'base64') d = Base64_decode(d);\r\n\td = typeof $cptable !== \"undefined\" ? $cptable.utils.decode(1200, d.slice(2), 'str') : utf16leread(d.slice(2));\r\n\to.type = \"binary\";\r\n\treturn read_plaintext(d, o);\r\n}\r\n\r\nfunction bstrify(data) {\r\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\r\n}\r\n\r\nfunction read_prn(data, d, o, str) {\r\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\r\n\treturn PRN.to_workbook(d, o);\r\n}\r\n\r\nfunction readSync(data, opts) {\r\n\treset_cp();\r\n\tvar o = opts||{};\r\n\tif(o.codepage && typeof $cptable === \"undefined\") console.error(\"Codepage tables are not loaded. Non-ASCII characters may not give expected results\");\r\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\r\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\r\n\tvar d = data, n = [0,0,0,0], str = false;\r\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\r\n\t_ssfopts = {};\r\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\r\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\r\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\r\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\r\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\r\n\t\t// $FlowIgnore\r\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\r\n\t\t// $FlowIgnore\r\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\r\n\t}\r\n\tswitch((n = firstbyte(d, o))[0]) {\r\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\r\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\r\n\t\tcase 0x3C: return parse_xlml(d, o);\r\n\t\tcase 0x49:\r\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\r\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\r\n\t\t\tbreak;\r\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\r\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\r\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\r\n\t\tcase 0xFF:\r\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\r\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\r\n\t\t\tbreak;\r\n\t\tcase 0x00:\r\n\t\t\tif(n[1] === 0x00) {\r\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\r\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\r\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return rtf_to_workbook(d, o); break;\r\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\r\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\r\n\t\tcase 0x08: if(n[1] === 0xE7) throw new Error(\"Unsupported Multiplan 1.x file!\"); break;\r\n\t\tcase 0x0C:\r\n\t\t\tif(n[1] === 0xEC) throw new Error(\"Unsupported Multiplan 2.x file!\");\r\n\t\t\tif(n[1] === 0xED) throw new Error(\"Unsupported Multiplan 3.x file!\");\r\n\t\t\tbreak;\r\n\t}\r\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\r\n\treturn read_prn(data, d, o, str);\r\n}\r\n\r\nfunction readFileSync(filename, opts) {\r\n\tvar o = opts||{}; o.type = 'file';\r\n\treturn readSync(filename, o);\r\n}\r\nfunction write_cfb_ctr(cfb, o) {\r\n\tswitch(o.type) {\r\n\t\tcase \"base64\": case \"binary\": break;\r\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\r\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\r\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\r\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\r\n\t}\r\n\treturn CFB.write(cfb, o);\r\n}\r\n\r\n/** 2022-08-15 导出图片 */\r\nRELS.IMG = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\";\r\nRELS.DRAW = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\";\r\n\r\nfunction write_zip(wb, opts) {\r\n\tswitch(opts.bookType) {\r\n\t\tcase \"ods\": return write_ods(wb, opts);\r\n\t\tcase \"numbers\": return write_numbers_iwa(wb, opts);\r\n\t\tcase \"xlsb\": return write_zip_xlsb(wb, opts);\r\n\t\tdefault: return write_zip_xlsx(wb, opts);\r\n\t}\r\n}\r\n\r\nfunction write_zip_type(wb, opts) {\r\n\tvar o = dup(opts||{});\r\n style_builder = new StyleBuilder(o);\r\n\tvar z = write_zip(wb, o);\r\n\treturn write_zip_denouement(z, o);\r\n}\r\nfunction write_zip_typeXLSX(wb, opts) {\r\n\tvar o = dup(opts||{});\r\n style_builder = new StyleBuilder(o);\r\n\tvar z = write_zip_xlsx(wb, o);\r\n\treturn write_zip_denouement(z, o);\r\n}\r\nfunction write_zip_denouement(z, o) {\r\n\tstyle_builder = new StyleBuilder(o);\r\n\tvar oopts = {};\r\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\r\n\tif(o.compression) oopts.compression = 'DEFLATE';\r\n\tif(o.password) oopts.type = ftype;\r\n\telse switch(o.type) {\r\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\r\n\t\tcase \"binary\": oopts.type = \"string\"; break;\r\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\r\n\t\tcase \"buffer\":\r\n\t\tcase \"file\": oopts.type = ftype; break;\r\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\r\n\t}\r\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: {\"nodebuffer\": \"buffer\", \"string\": \"binary\"}[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\r\n\tif(typeof Deno !== \"undefined\") {\r\n\t\tif(typeof out == \"string\") {\r\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\r\n\t\t\tout = new Uint8Array(s2ab(out));\r\n\t\t}\r\n\t}\r\n/*jshint -W083 */\r\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\r\n/*jshint +W083 */\r\n\tif(o.type === \"file\") return write_dl(o.file, out);\r\n\treturn o.type == \"string\" ? utf8read(out) : out;\r\n}\r\n\r\nfunction write_cfb_type(wb, opts) {\r\n\tvar o = opts||{};\r\n\tvar cfb = write_xlscfb(wb, o);\r\n\treturn write_cfb_ctr(cfb, o);\r\n}\r\n\r\nfunction write_string_type(out, opts, bom) {\r\n\tif(!bom) bom = \"\";\r\n\tvar o = bom + out;\r\n\tswitch(opts.type) {\r\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\r\n\t\tcase \"binary\": return utf8write(o);\r\n\t\tcase \"string\": return out;\r\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\r\n\t\tcase \"buffer\": {\r\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\r\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\r\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\r\n\t\t}\r\n\t}\r\n\tthrow new Error(\"Unrecognized type \" + opts.type);\r\n}\r\n\r\nfunction write_stxt_type(out, opts) {\r\n\tswitch(opts.type) {\r\n\t\tcase \"base64\": return Base64_encode_pass(out);\r\n\t\tcase \"binary\": return out;\r\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\r\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\r\n\t\tcase \"buffer\": {\r\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\r\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\r\n\t\t}\r\n\t}\r\n\tthrow new Error(\"Unrecognized type \" + opts.type);\r\n}\r\n\r\n/* TODO: test consistency */\r\nfunction write_binary_type(out, opts) {\r\n\tswitch(opts.type) {\r\n\t\tcase \"string\":\r\n\t\tcase \"base64\":\r\n\t\tcase \"binary\":\r\n\t\t\tvar bstr = \"\";\r\n\t\t\t// $FlowIgnore\r\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\r\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\r\n\t\tcase \"file\": return write_dl(opts.file, out);\r\n\t\tcase \"buffer\": return out;\r\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\r\n\t}\r\n}\r\n\r\nfunction writeSyncXLSX(wb, opts) {\r\n\treset_cp();\r\n\tcheck_wb(wb);\r\n\tvar o = dup(opts||{});\r\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\r\n\tif(o.type == \"array\") { o.type = \"binary\"; var out = (writeSyncXLSX(wb, o)); o.type = \"array\"; return s2ab(out); }\r\n\treturn write_zip_typeXLSX(wb, o);\r\n}\r\n\r\nfunction writeSync(wb, opts) {\r\n\treset_cp();\r\n\tcheck_wb(wb);\r\n\tvar o = dup(opts||{});\r\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\r\n\tif(o.type == \"array\") { o.type = \"binary\"; var out = (writeSync(wb, o)); o.type = \"array\"; return s2ab(out); }\r\n\tvar idx = 0;\r\n\tif(o.sheet) {\r\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\r\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\r\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\r\n\t}\r\n\tswitch(o.bookType || 'xlsb') {\r\n\t\tcase 'xml':\r\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\r\n\t\tcase 'slk':\r\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o, wb), o);\r\n\t\tcase 'htm':\r\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\r\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\r\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\r\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\r\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\r\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\r\n\t\tcase 'rtf': return write_string_type(sheet_to_rtf(wb.Sheets[wb.SheetNames[idx]], o), o);\r\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\r\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\r\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\r\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\r\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\r\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\r\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\r\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\r\n\t\tcase 'biff8':\r\n\t\tcase 'xla':\r\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\r\n\t\tcase 'xlsx':\r\n\t\tcase 'xlsm':\r\n\t\tcase 'xlam':\r\n\t\tcase 'xlsb':\r\n\t\tcase 'numbers':\r\n\t\tcase 'ods': return write_zip_type(wb, o);\r\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\r\n\t}\r\n}\r\n\r\nfunction resolve_book_type(o) {\r\n\tif(o.bookType) return;\r\n\tvar _BT = {\r\n\t\t\"xls\": \"biff8\",\r\n\t\t\"htm\": \"html\",\r\n\t\t\"slk\": \"sylk\",\r\n\t\t\"socialcalc\": \"eth\",\r\n\t\t\"Sh33tJS\": \"WTF\"\r\n\t};\r\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\r\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\r\n\to.bookType = _BT[o.bookType] || o.bookType;\r\n}\r\n\r\nfunction writeFileSync(wb, filename, opts) {\r\n\tvar o = opts||{}; o.type = 'file';\r\n\to.file = filename;\r\n\tresolve_book_type(o);\r\n\treturn writeSync(wb, o);\r\n}\r\n\r\nfunction writeFileSyncXLSX(wb, filename, opts) {\r\n\tvar o = opts||{}; o.type = 'file';\r\n\to.file = filename;\r\n\tresolve_book_type(o);\r\n\treturn writeSyncXLSX(wb, o);\r\n}\r\n\r\n\r\nfunction writeFileAsync(filename, wb, opts, cb) {\r\n\tvar o = opts||{}; o.type = 'file';\r\n\to.file = filename;\r\n\tresolve_book_type(o);\r\n\to.type = 'buffer';\r\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts);\r\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\r\n}\r\nfunction make_json_row(sheet, r, R, cols, header, hdr, dense, o) {\r\n\tvar rr = encode_row(R);\r\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\r\n\tvar isempty = true;\r\n\tvar row = (header === 1) ? [] : {};\r\n\tif(header !== 1) {\r\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\r\n\t\telse row.__rowNum__ = R;\r\n\t}\r\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\r\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\r\n\t\tif(val === undefined || val.t === undefined) {\r\n\t\t\tif(defval === undefined) continue;\r\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tvar v = val.v;\r\n\t\tswitch(val.t){\r\n\t\t\tcase 'z': if(v == null) break; continue;\r\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\r\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\r\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\r\n\t\t}\r\n\t\tif(hdr[C] != null) {\r\n\t\t\tif(v == null) {\r\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\r\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\r\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\r\n\t\t\t\telse continue;\r\n\t\t\t} else {\r\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\r\n\t\t\t}\r\n\t\t\tif(v != null) isempty = false;\r\n\t\t}\r\n\t}\r\n\treturn { row: row, isempty: isempty };\r\n}\r\n\r\n\r\nfunction sheet_to_json(sheet, opts) {\r\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\r\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr = [], v=0, vv=\"\";\r\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\r\n\tvar o = opts || {};\r\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\r\n\tif(o.header === 1) header = 1;\r\n\telse if(o.header === \"A\") header = 2;\r\n\telse if(Array.isArray(o.header)) header = 3;\r\n\telse if(o.header == null) header = 0;\r\n\tswitch(typeof range) {\r\n\t\tcase 'string': r = safe_decode_range(range); break;\r\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\r\n\t\tdefault: r = range;\r\n\t}\r\n\tif(header > 0) offset = 0;\r\n\tvar rr = encode_row(r.s.r);\r\n\tvar cols = [];\r\n\tvar out = [];\r\n\tvar outi = 0, counter = 0;\r\n\tvar dense = Array.isArray(sheet);\r\n\tvar R = r.s.r, C = 0;\r\n\tvar header_cnt = {};\r\n\tif(dense && !sheet[R]) sheet[R] = [];\r\n\tvar colinfo = o.skipHidden && sheet[\"!cols\"] || [];\r\n\tvar rowinfo = o.skipHidden && sheet[\"!rows\"] || [];\r\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\r\n\t\tif(((colinfo[C]||{}).hidden)) continue;\r\n\t\tcols[C] = encode_col(C);\r\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\r\n\t\tswitch(header) {\r\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\r\n\t\t\tcase 2: hdr[C] = cols[C]; break;\r\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\r\n\t\t\tdefault:\r\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\r\n\t\t\t\tvv = v = format_cell(val, null, o);\r\n\t\t\t\tcounter = header_cnt[v] || 0;\r\n\t\t\t\tif(!counter) header_cnt[v] = 1;\r\n\t\t\t\telse {\r\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\r\n\t\t\t\t\theader_cnt[vv] = 1;\r\n\t\t\t\t}\r\n\t\t\t\thdr[C] = vv;\r\n\t\t}\r\n\t}\r\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\r\n\t\tif ((rowinfo[R]||{}).hidden) continue;\r\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\r\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\r\n\t}\r\n\tout.length = outi;\r\n\treturn out;\r\n}\r\n\r\nvar qreg = /\"/g;\r\nfunction make_csv_row(sheet, r, R, cols, fs, rs, FS, o) {\r\n\tvar isempty = true;\r\n\tvar row = [], txt = \"\", rr = encode_row(R);\r\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\r\n\t\tif (!cols[C]) continue;\r\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\r\n\t\tif(val == null) txt = \"\";\r\n\t\telse if(val.v != null) {\r\n\t\t\tisempty = false;\r\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\r\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\r\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\r\n\t\t} else if(val.f != null && !val.F) {\r\n\t\t\tisempty = false;\r\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\r\n\t\t} else txt = \"\";\r\n\t\t/* NOTE: Excel CSV does not support array formulae */\r\n\t\trow.push(txt);\r\n\t}\r\n\tif(o.blankrows === false && isempty) return null;\r\n\treturn row.join(FS);\r\n}\r\n\r\nfunction sheet_to_csv(sheet, opts) {\r\n\tvar out = [];\r\n\tvar o = opts == null ? {} : opts;\r\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\r\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\r\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\r\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\r\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\r\n\tvar row = \"\", cols = [];\r\n\to.dense = Array.isArray(sheet);\r\n\tvar colinfo = o.skipHidden && sheet[\"!cols\"] || [];\r\n\tvar rowinfo = o.skipHidden && sheet[\"!rows\"] || [];\r\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\r\n\tvar w = 0;\r\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\r\n\t\tif ((rowinfo[R]||{}).hidden) continue;\r\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\r\n\t\tif(row == null) { continue; }\r\n\t\tif(o.strip) row = row.replace(endregex,\"\");\r\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\r\n\t}\r\n\tdelete o.dense;\r\n\treturn out.join(\"\");\r\n}\r\n\r\nfunction sheet_to_txt(sheet, opts) {\r\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\r\n\tvar s = sheet_to_csv(sheet, opts);\r\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\r\n\tvar o = $cptable.utils.encode(1200, s, 'str');\r\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\r\n}\r\n\r\nfunction sheet_to_formulae(sheet) {\r\n\tvar y = \"\", x, val=\"\";\r\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\r\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols = [], C;\r\n\tvar cmds = [];\r\n\tvar dense = Array.isArray(sheet);\r\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\r\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\r\n\t\trr = encode_row(R);\r\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\r\n\t\t\ty = cols[C] + rr;\r\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\r\n\t\t\tval = \"\";\r\n\t\t\tif(x === undefined) continue;\r\n\t\t\telse if(x.F != null) {\r\n\t\t\t\ty = x.F;\r\n\t\t\t\tif(!x.f) continue;\r\n\t\t\t\tval = x.f;\r\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\r\n\t\t\t}\r\n\t\t\tif(x.f != null) val = x.f;\r\n\t\t\telse if(x.t == 'z') continue;\r\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\r\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\r\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\r\n\t\t\telse if(x.v === undefined) continue;\r\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\r\n\t\t\telse val = \"\"+x.v;\r\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\r\n\t\t}\r\n\t}\r\n\treturn cmds;\r\n}\r\n\r\nfunction sheet_add_json(_ws, js, opts) {\r\n\tvar o = opts || {};\r\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\r\n\tif(DENSE != null && dense == null) dense = DENSE;\r\n\tvar offset = +!o.skipHeader;\r\n\tvar ws = _ws || (dense ? ([]) : ({}));\r\n\tvar _R = 0, _C = 0;\r\n\tif(ws && o.origin != null) {\r\n\t\tif(typeof o.origin == 'number') _R = o.origin;\r\n\t\telse {\r\n\t\t\tvar _origin = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\r\n\t\t\t_R = _origin.r; _C = _origin.c;\r\n\t\t}\r\n\t}\r\n\tvar range = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}});\r\n\tif(ws['!ref']) {\r\n\t\tvar _range = safe_decode_range(ws['!ref']);\r\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\r\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\r\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\r\n\t} else {\r\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\r\n\t}\r\n\tvar hdr = o.header || [], C = 0;\r\n\r\n\tjs.forEach(function (JS, R) {\r\n\t\tif(!ws[_R + R + offset]) ws[_R + R + offset] = [];\r\n\t\tvar ROW = ws[_R + R + offset];\r\n\t\tkeys(JS).forEach(function(k) {\r\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\r\n\t\t\tvar v = JS[k];\r\n\t\t\tvar t = 'z';\r\n\t\t\tvar z = \"\";\r\n\t\t\tvar ref = dense ? \"\" : encode_cell({c:_C + C,r:_R + R + offset});\r\n\t\t\tvar cell = dense ? ROW[_C + C] : ws[ref];\r\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\r\n\t\t\t\tws[ref] = v;\r\n\t\t\t} else {\r\n\t\t\t\tif(typeof v == 'number') t = 'n';\r\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\r\n\t\t\t\telse if(typeof v == 'string') t = 's';\r\n\t\t\t\telse if(v instanceof Date) {\r\n\t\t\t\t\tt = 'd';\r\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\r\n\t\t\t\t\tz = (cell != null && cell.z && fmt_is_date(cell.z)) ? cell.z : (o.dateNF || table_fmt[14]);\r\n\t\t\t\t}\r\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\r\n\t\t\t\tif(!cell) {\r\n\t\t\t\t\tif(!dense) ws[ref] = cell = ({t:t, v:v});\r\n\t\t\t\t\telse ROW[_C + C] = cell = ({t:t, v:v});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcell.t = t; cell.v = v;\r\n\t\t\t\t\tdelete cell.w; delete cell.R;\r\n\t\t\t\t\tif(z) cell.z = z;\r\n\t\t\t\t}\r\n\t\t\t\tif(z) cell.z = z;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\r\n\tvar __R = encode_row(_R);\r\n\tif(dense && !ws[_R]) ws[_R] = [];\r\n\tif(offset) for(C = 0; C < hdr.length; ++C) {\r\n\t\tif(dense) ws[_R][C + _C] = {t:'s', v:hdr[C]};\r\n\t\telse ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\r\n\t}\r\n\tws['!ref'] = encode_range(range);\r\n\treturn ws;\r\n}\r\nfunction json_to_sheet(js, opts) { return sheet_add_json(null, js, opts); }\r\n\r\n/* get cell, creating a stub if necessary */\r\nfunction ws_get_cell_stub(ws, R, C) {\r\n\t/* A1 cell address */\r\n\tif(typeof R == \"string\") {\r\n\t\t/* dense */\r\n\t\tif(Array.isArray(ws)) {\r\n\t\t\tvar RC = decode_cell(R);\r\n\t\t\tif(!ws[RC.r]) ws[RC.r] = [];\r\n\t\t\treturn ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'});\r\n\t\t}\r\n\t\treturn ws[R] || (ws[R] = {t:'z'});\r\n\t}\r\n\t/* cell address object */\r\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\r\n\t/* R and C are 0-based indices */\r\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\r\n}\r\n\r\n/* find sheet index for given name / validate index */\r\nfunction wb_sheet_idx(wb, sh) {\r\n\tif(typeof sh == \"number\") {\r\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\r\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\r\n\t} else if(typeof sh == \"string\") {\r\n\t\tvar idx = wb.SheetNames.indexOf(sh);\r\n\t\tif(idx > -1) return idx;\r\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\r\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\r\n}\r\n\r\n/* simple blank workbook object */\r\nfunction book_new() {\r\n\treturn { SheetNames: [], Sheets: {} };\r\n}\r\n\r\n/* add a worksheet to the end of a given workbook */\r\nfunction book_append_sheet(wb, ws, name, roll) {\r\n\tvar i = 1;\r\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\r\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\r\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\r\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\r\n\t\ti = m && +m[2] || 0;\r\n\t\tvar root = m && m[1] || name;\r\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\r\n\t}\r\n\tcheck_ws_name(name);\r\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\r\n\r\n\twb.SheetNames.push(name);\r\n\twb.Sheets[name] = ws;\r\n\treturn name;\r\n}\r\n\r\n/* set sheet visibility (visible/hidden/very hidden) */\r\nfunction book_set_sheet_visibility(wb, sh, vis) {\r\n\tif(!wb.Workbook) wb.Workbook = {};\r\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\r\n\r\n\tvar idx = wb_sheet_idx(wb, sh);\r\n\t// $FlowIgnore\r\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\r\n\r\n\tswitch(vis) {\r\n\t\tcase 0: case 1: case 2: break;\r\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\r\n\t}\r\n\t// $FlowIgnore\r\n\twb.Workbook.Sheets[idx].Hidden = vis;\r\n}\r\n\r\n/* set number format */\r\nfunction cell_set_number_format(cell, fmt) {\r\n\tcell.z = fmt;\r\n\treturn cell;\r\n}\r\n\r\n/* set cell hyperlink */\r\nfunction cell_set_hyperlink(cell, target, tooltip) {\r\n\tif(!target) {\r\n\t\tdelete cell.l;\r\n\t} else {\r\n\t\tcell.l = ({ Target: target });\r\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\r\n\t}\r\n\treturn cell;\r\n}\r\nfunction cell_set_internal_link(cell, range, tooltip) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\r\n\r\n/* add to cell comments */\r\nfunction cell_add_comment(cell, text, author) {\r\n\tif(!cell.c) cell.c = [];\r\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\r\n}\r\n\r\n/* set array formula and flush related cells */\r\nfunction sheet_set_array_formula(ws, range, formula, dynamic) {\r\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\r\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\r\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\r\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\r\n\t\tcell.t = 'n';\r\n\t\tcell.F = rngstr;\r\n\t\tdelete cell.v;\r\n\t\tif(R == rng.s.r && C == rng.s.c) {\r\n\t\t\tcell.f = formula;\r\n\t\t\tif(dynamic) cell.D = true;\r\n\t\t}\r\n\t}\r\n\tvar wsr = decode_range(ws[\"!ref\"]);\r\n\tif(wsr.s.r > rng.s.r) wsr.s.r = rng.s.r;\r\n\tif(wsr.s.c > rng.s.c) wsr.s.c = rng.s.c;\r\n\tif(wsr.e.r < rng.e.r) wsr.e.r = rng.e.r;\r\n\tif(wsr.e.c < rng.e.c) wsr.e.c = rng.e.c;\r\n\tws[\"!ref\"] = encode_range(wsr);\r\n\treturn ws;\r\n}\r\n\r\nvar utils = {\r\n\tencode_col: encode_col,\r\n\tencode_row: encode_row,\r\n\tencode_cell: encode_cell,\r\n\tencode_range: encode_range,\r\n\tdecode_col: decode_col,\r\n\tdecode_row: decode_row,\r\n\tsplit_cell: split_cell,\r\n\tdecode_cell: decode_cell,\r\n\tdecode_range: decode_range,\r\n\tformat_cell: format_cell,\r\n\tsheet_add_aoa: sheet_add_aoa,\r\n\tsheet_add_json: sheet_add_json,\r\n\tsheet_add_dom: sheet_add_dom,\r\n\taoa_to_sheet: aoa_to_sheet,\r\n\tjson_to_sheet: json_to_sheet,\r\n\ttable_to_sheet: parse_dom_table,\r\n\ttable_to_book: table_to_book,\r\n\tsheet_to_csv: sheet_to_csv,\r\n\tsheet_to_txt: sheet_to_txt,\r\n\tsheet_to_json: sheet_to_json,\r\n\tsheet_to_html: sheet_to_html,\r\n\tsheet_to_formulae: sheet_to_formulae,\r\n\tsheet_to_row_object_array: sheet_to_json,\r\n\tsheet_get_cell: ws_get_cell_stub,\r\n\tbook_new: book_new,\r\n\tbook_append_sheet: book_append_sheet,\r\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\r\n\tcell_set_number_format: cell_set_number_format,\r\n\tcell_set_hyperlink: cell_set_hyperlink,\r\n\tcell_set_internal_link: cell_set_internal_link,\r\n\tcell_add_comment: cell_add_comment,\r\n\tsheet_set_array_formula: sheet_set_array_formula,\r\n\tconsts: {\r\n\t\tSHEET_VISIBLE: 0,\r\n\t\tSHEET_HIDDEN: 1,\r\n\t\tSHEET_VERY_HIDDEN: 2\r\n\t}\r\n};\r\n\r\nvar _Readable;\r\nfunction set_readable(R) { _Readable = R; }\r\n\r\nfunction write_csv_stream(sheet, opts) {\r\n\tvar stream = _Readable();\r\n\tvar o = opts == null ? {} : opts;\r\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\r\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\r\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\r\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\r\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\r\n\tvar row = \"\", cols = [];\r\n\to.dense = Array.isArray(sheet);\r\n\tvar colinfo = o.skipHidden && sheet[\"!cols\"] || [];\r\n\tvar rowinfo = o.skipHidden && sheet[\"!rows\"] || [];\r\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\r\n\tvar R = r.s.r;\r\n\tvar BOM = false, w = 0;\r\n\tstream._read = function() {\r\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\r\n\t\twhile(R <= r.e.r) {\r\n\t\t\t++R;\r\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\r\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\r\n\t\t\tif(row != null) {\r\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\r\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn stream.push(null);\r\n\t};\r\n\treturn stream;\r\n}\r\n\r\nfunction write_html_stream(ws, opts) {\r\n\tvar stream = _Readable();\r\n\r\n\tvar o = opts || {};\r\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\r\n\tvar footer = o.footer != null ? o.footer : HTML_END;\r\n\tstream.push(header);\r\n\tvar r = decode_range(ws['!ref']);\r\n\to.dense = Array.isArray(ws);\r\n\tstream.push(make_html_preamble(ws, r, o));\r\n\tvar R = r.s.r;\r\n\tvar end = false;\r\n\tstream._read = function() {\r\n\t\tif(R > r.e.r) {\r\n\t\t\tif(!end) { end = true; stream.push(\"\" + footer); }\r\n\t\t\treturn stream.push(null);\r\n\t\t}\r\n\t\twhile(R <= r.e.r) {\r\n\t\t\tstream.push(make_html_row(ws, r, R, o));\r\n\t\t\t++R;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t};\r\n\treturn stream;\r\n}\r\n\r\nfunction write_json_stream(sheet, opts) {\r\n\tvar stream = _Readable({objectMode:true});\r\n\r\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\r\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr = [], v=0, vv=\"\";\r\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\r\n\tvar o = opts || {};\r\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\r\n\tif(o.header === 1) header = 1;\r\n\telse if(o.header === \"A\") header = 2;\r\n\telse if(Array.isArray(o.header)) header = 3;\r\n\tswitch(typeof range) {\r\n\t\tcase 'string': r = safe_decode_range(range); break;\r\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\r\n\t\tdefault: r = range;\r\n\t}\r\n\tif(header > 0) offset = 0;\r\n\tvar rr = encode_row(r.s.r);\r\n\tvar cols = [];\r\n\tvar counter = 0;\r\n\tvar dense = Array.isArray(sheet);\r\n\tvar R = r.s.r, C = 0;\r\n\tvar header_cnt = {};\r\n\tif(dense && !sheet[R]) sheet[R] = [];\r\n\tvar colinfo = o.skipHidden && sheet[\"!cols\"] || [];\r\n\tvar rowinfo = o.skipHidden && sheet[\"!rows\"] || [];\r\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\r\n\t\tif(((colinfo[C]||{}).hidden)) continue;\r\n\t\tcols[C] = encode_col(C);\r\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\r\n\t\tswitch(header) {\r\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\r\n\t\t\tcase 2: hdr[C] = cols[C]; break;\r\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\r\n\t\t\tdefault:\r\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\r\n\t\t\t\tvv = v = format_cell(val, null, o);\r\n\t\t\t\tcounter = header_cnt[v] || 0;\r\n\t\t\t\tif(!counter) header_cnt[v] = 1;\r\n\t\t\t\telse {\r\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\r\n\t\t\t\t\theader_cnt[vv] = 1;\r\n\t\t\t\t}\r\n\t\t\t\thdr[C] = vv;\r\n\t\t}\r\n\t}\r\n\tR = r.s.r + offset;\r\n\tstream._read = function() {\r\n\t\twhile(R <= r.e.r) {\r\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\r\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\r\n\t\t\t++R;\r\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\r\n\t\t\t\tstream.push(row.row);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn stream.push(null);\r\n\t};\r\n\treturn stream;\r\n}\r\n\r\nvar __stream = {\r\n\tto_json: write_json_stream,\r\n\tto_html: write_html_stream,\r\n\tto_csv: write_csv_stream,\r\n\tset_readable: set_readable\r\n};\r\nif(typeof parse_xlscfb !== \"undefined\") XLSX.parse_xlscfb = parse_xlscfb;\r\n /**\r\n * 样式魔改区 -- start\r\n */\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////\r\n var XmlNode = (function () {\r\n function XmlNode(tagName, attributes, children) {\r\n\r\n if (!(this instanceof XmlNode)) {\r\n return new XmlNode(tagName, attributes, children);\r\n }\r\n this.tagName = tagName;\r\n this._attributes = attributes || {};\r\n this._children = children || [];\r\n this._prefix = '';\r\n return this;\r\n }\r\n\r\n XmlNode.prototype.createElement = function () {\r\n return new XmlNode(arguments)\r\n }\r\n\r\n XmlNode.prototype.children = function() {\r\n return this._children;\r\n }\r\n\r\n XmlNode.prototype.append = function (node) {\r\n this._children.push(node);\r\n return this;\r\n }\r\n\r\n XmlNode.prototype.prefix = function (prefix) {\r\n if (arguments.length==0) { return this._prefix;}\r\n this._prefix = prefix;\r\n return this;\r\n }\r\n\r\n XmlNode.prototype.attr = function (attr, value) {\r\n if (value == undefined) {\r\n delete this._attributes[attr];\r\n return this;\r\n }\r\n if (arguments.length == 0) {\r\n return this._attributes;\r\n }\r\n else if (typeof attr == 'string' && arguments.length == 1) {\r\n return this._attributes.attr[attr];\r\n }\r\n if (typeof attr == 'object' && arguments.length == 1) {\r\n for (var key in attr) {\r\n this._attributes[key] = attr[key];\r\n }\r\n }\r\n else if (arguments.length == 2 && typeof attr == 'string') {\r\n this._attributes[attr] = value;\r\n }\r\n return this;\r\n }\r\n\r\n var APOS = \"'\"; var QUOTE = '\"'\r\n var ESCAPED_QUOTE = { }\r\n ESCAPED_QUOTE[QUOTE] = '"'\r\n ESCAPED_QUOTE[APOS] = '''\r\n\r\n XmlNode.prototype.escapeAttributeValue = function(att_value) {\r\n return '\"' + att_value.replace(/\\\"/g,'"') + '\"';// TODO Extend with four other codes\r\n\r\n }\r\n\r\n XmlNode.prototype.toXml = function (node) {\r\n if (!node) node = this;\r\n var xml = node._prefix;\r\n xml += '<' + node.tagName;\r\n if (node._attributes) {\r\n for (var key in node._attributes) {\r\n xml += ' ' + key + '=' + this.escapeAttributeValue(''+node._attributes[key]) + ''\r\n }\r\n }\r\n if (node._children && node._children.length > 0) {\r\n xml += \">\";\r\n for (var i = 0; i < node._children.length; i++) {\r\n xml += this.toXml(node._children[i]);\r\n }\r\n xml += '';\r\n }\r\n else {\r\n xml += '/>';\r\n }\r\n return xml;\r\n }\r\n return XmlNode;\r\n })();\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////\r\n var StyleBuilder = function (options) {\r\n\r\n var customNumFmtId = 164;\r\n\r\n\r\n\r\n var table_fmt = {\r\n 0: 'General',\r\n 1: '0',\r\n 2: '0.00',\r\n 3: '#,##0',\r\n 4: '#,##0.00',\r\n 9: '0%',\r\n 10: '0.00%',\r\n 11: '0.00E+00',\r\n 12: '# ?/?',\r\n 13: '# ??/??',\r\n 14: 'm/d/yy',\r\n 15: 'd-mmm-yy',\r\n 16: 'd-mmm',\r\n 17: 'mmm-yy',\r\n 18: 'h:mm AM/PM',\r\n 19: 'h:mm:ss AM/PM',\r\n 20: 'h:mm',\r\n 21: 'h:mm:ss',\r\n 22: 'm/d/yy h:mm',\r\n 37: '#,##0 ;(#,##0)',\r\n 38: '#,##0 ;[Red](#,##0)',\r\n 39: '#,##0.00;(#,##0.00)',\r\n 40: '#,##0.00;[Red](#,##0.00)',\r\n 45: 'mm:ss',\r\n 46: '[h]:mm:ss',\r\n 47: 'mmss.0',\r\n 48: '##0.0E+0',\r\n 49: '@',\r\n 56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"' };\r\n var fmt_table = {};\r\n\r\n for (var idx in table_fmt) {\r\n fmt_table[table_fmt[idx]] = idx;\r\n }\r\n\r\n\r\n // cache style specs to avoid excessive duplication\r\n var _hashIndex = {};\r\n var _listIndex = [];\r\n\r\n return {\r\n\r\n initialize: function (options) {\r\n\r\n this.$fonts = XmlNode('fonts').attr('count',0).attr(\"x14ac:knownFonts\",\"1\");\r\n this.$fills = XmlNode('fills').attr('count',0);\r\n this.$borders = XmlNode('borders').attr('count',0);\r\n this.$numFmts = XmlNode('numFmts').attr('count',0);\r\n this.$cellStyleXfs = XmlNode('cellStyleXfs');\r\n this.$xf = XmlNode('xf')\r\n .attr('numFmtId', 0)\r\n .attr('fontId', 0)\r\n .attr('fillId', 0)\r\n .attr('borderId', 0);\r\n\r\n this.$cellXfs = XmlNode('cellXfs').attr('count',0);\r\n this.$cellStyles = XmlNode('cellStyles')\r\n .append(XmlNode('cellStyle')\r\n .attr('name', 'Normal')\r\n .attr('xfId',0)\r\n .attr('builtinId',0)\r\n );\r\n this.$dxfs = XmlNode('dxfs').attr('count', \"0\");\r\n this.$tableStyles = XmlNode('tableStyles')\r\n .attr('count','0')\r\n .attr('defaultTableStyle','TableStyleMedium9')\r\n .attr('defaultPivotStyle','PivotStyleMedium4')\r\n\r\n\r\n this.$styles = XmlNode('styleSheet')\r\n .attr('xmlns:mc','http://schemas.openxmlformats.org/markup-compatibility/2006')\r\n .attr('xmlns:x14ac','http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac')\r\n .attr('xmlns','http://schemas.openxmlformats.org/spreadsheetml/2006/main')\r\n .attr('mc:Ignorable','x14ac')\r\n .prefix('')\r\n .append(this.$numFmts)\r\n .append(this.$fonts)\r\n .append(this.$fills)\r\n .append(this.$borders)\r\n .append(this.$cellStyleXfs.append(this.$xf))\r\n .append(this.$cellXfs)\r\n .append(this.$cellStyles)\r\n .append(this.$dxfs)\r\n .append(this.$tableStyles);\r\n\r\n\r\n // need to specify styles at index 0 and 1.\r\n // the second style MUST be gray125 for some reason\r\n\r\n var defaultStyle = options.defaultCellStyle || {};\r\n if (!defaultStyle.font) defaultStyle.font = {name: 'Calibri', sz: '12'};\r\n if (!defaultStyle.font.name) defaultStyle.font.name = 'Calibri';\r\n if (!defaultStyle.font.sz) defaultStyle.font.sz = 11;\r\n if (!defaultStyle.fill) defaultStyle.fill = { patternType: \"none\", fgColor: {}};\r\n if (!defaultStyle.border) defaultStyle.border = {};\r\n if (!defaultStyle.numFmt) defaultStyle.numFmt = 0;\r\n\r\n this.defaultStyle = defaultStyle;\r\n\r\n var gray125Style = JSON.parse(JSON.stringify(defaultStyle));\r\n gray125Style.fill = {patternType: \"gray125\", fgColor: { }}\r\n\r\n this.addStyles([defaultStyle, gray125Style]);\r\n return this;\r\n },\r\n\r\n // create a style entry and returns an integer index that can be used in the cell .s property\r\n // these format of this object follows the emerging Common Spreadsheet Format\r\n addStyle: function (attributes) {\r\n\r\n var hashKey = JSON.stringify(attributes);\r\n var index = _hashIndex[hashKey];\r\n if (index == undefined) {\r\n\r\n index = this._addXf(attributes); //_listIndex.push(attributes) -1;\r\n _hashIndex[hashKey] = index;\r\n }\r\n else {\r\n index = _hashIndex[hashKey];\r\n }\r\n return index;\r\n },\r\n\r\n // create style entries and returns array of integer indexes that can be used in cell .s property\r\n addStyles: function (styles) {\r\n var self = this;\r\n return styles.map(function (style) {\r\n return self.addStyle(style);\r\n })\r\n },\r\n\r\n _duckTypeStyle: function(attributes) {\r\n\r\n if (typeof attributes == 'object' && (attributes.patternFill || attributes.fgColor)) {\r\n return {fill: attributes }; // this must be read via XLSX.parseFile(...)\r\n }\r\n else if (attributes.font || attributes.numFmt || attributes.border || attributes.fill) {\r\n return attributes;\r\n }\r\n else {\r\n return this._getStyleCSS(attributes)\r\n }\r\n },\r\n\r\n _getStyleCSS: function(css) {\r\n return css; //TODO\r\n },\r\n\r\n // Create an record for the style as well as corresponding , , , \r\n // Right now this is simple and creates a , , , for every \r\n // We could perhaps get fancier and avoid duplicating auxiliary entries as Excel presumably intended, but bother.\r\n _addXf: function (attributes) {\r\n\r\n\r\n var fontId = this._addFont(attributes.font);\r\n var fillId = this._addFill(attributes.fill);\r\n var borderId = this._addBorder(attributes.border);\r\n var numFmtId = this._addNumFmt(attributes.numFmt);\r\n\r\n var $xf = XmlNode('xf')\r\n .attr(\"numFmtId\", numFmtId)\r\n .attr(\"fontId\", fontId)\r\n .attr(\"fillId\", fillId)\r\n .attr(\"borderId\", borderId)\r\n .attr(\"xfId\", \"0\");\r\n\r\n if (fontId > 0) {\r\n $xf.attr('applyFont', \"1\");\r\n }\r\n if (fillId > 0) {\r\n $xf.attr('applyFill', \"1\");\r\n }\r\n if (borderId > 0) {\r\n $xf.attr('applyBorder', \"1\");\r\n }\r\n if (numFmtId > 0) {\r\n $xf.attr('applyNumberFormat', \"1\");\r\n }\r\n\r\n if (attributes.alignment) {\r\n var $alignment = XmlNode('alignment');\r\n if (attributes.alignment.horizontal) { $alignment.attr('horizontal', attributes.alignment.horizontal);}\r\n if (attributes.alignment.vertical) { $alignment.attr('vertical', attributes.alignment.vertical);}\r\n if (attributes.alignment.indent) { $alignment.attr('indent', attributes.alignment.indent);}\r\n if (attributes.alignment.readingOrder) { $alignment.attr('readingOrder', attributes.alignment.readingOrder);}\r\n if (attributes.alignment.wrapText) { $alignment.attr('wrapText', attributes.alignment.wrapText);}\r\n if (attributes.alignment.textRotation!=undefined) { $alignment.attr('textRotation', attributes.alignment.textRotation);}\r\n\r\n $xf.append($alignment).attr('applyAlignment',1)\r\n\r\n }\r\n this.$cellXfs.append($xf);\r\n var count = +this.$cellXfs.children().length;\r\n\r\n this.$cellXfs.attr('count', count);\r\n return count - 1;\r\n },\r\n\r\n _addFont: function (attributes) {\r\n\r\n if (!attributes) { return 0; }\r\n\r\n var $font = XmlNode('font')\r\n .append(XmlNode('sz').attr('val', attributes.sz || this.defaultStyle.font.sz))\r\n .append(XmlNode('name').attr('val', attributes.name || this.defaultStyle.font.name))\r\n\r\n if (attributes.bold) $font.append(XmlNode('b'));\r\n if (attributes.underline) $font.append(XmlNode('u'));\r\n if (attributes.italic) $font.append(XmlNode('i'));\r\n if (attributes.strike) $font.append(XmlNode('strike'));\r\n if (attributes.outline) $font.append(XmlNode('outline'));\r\n if (attributes.shadow) $font.append(XmlNode('shadow'));\r\n\r\n if (attributes.vertAlign) {\r\n $font.append(XmlNode('vertAlign').attr('val', attributes.vertAlign))\r\n }\r\n\r\n\r\n if (attributes.color) {\r\n if (attributes.color.theme) {\r\n $font.append(XmlNode('color').attr('theme', attributes.color.theme))\r\n\r\n if (attributes.color.tint) { //tint only if theme\r\n $font.append(XmlNode('tint').attr('theme', attributes.color.tint))\r\n }\r\n\r\n } else if (attributes.color.rgb) { // not both rgb and theme\r\n $font.append(XmlNode('color').attr('rgb', attributes.color.rgb))\r\n }\r\n }\r\n\r\n this.$fonts.append($font);\r\n\r\n var count = this.$fonts.children().length;\r\n this.$fonts.attr('count', count);\r\n return count - 1;\r\n },\r\n\r\n _addNumFmt: function (numFmt) {\r\n if (!numFmt) { return 0; }\r\n\r\n if (typeof numFmt == 'string') {\r\n var numFmtIdx = fmt_table[numFmt];\r\n if (numFmtIdx >= 0) {\r\n return numFmtIdx; // we found a match against built in formats\r\n }\r\n }\r\n\r\n if (/^[0-9]+$/.exec(numFmt)) {\r\n return numFmt; // we're matching an integer against some known code\r\n }\r\n numFmt = numFmt\r\n .replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n\r\n var $numFmt = XmlNode('numFmt')\r\n .attr('numFmtId', (++customNumFmtId))\r\n .attr('formatCode', numFmt);\r\n\r\n this.$numFmts.append($numFmt);\r\n\r\n var count = this.$numFmts.children().length;\r\n this.$numFmts.attr('count', count);\r\n return customNumFmtId ;\r\n },\r\n\r\n _addFill: function (attributes) {\r\n\r\n if (!attributes) { return 0; }\r\n\r\n var $patternFill = XmlNode('patternFill')\r\n .attr('patternType', attributes.patternType || 'solid');\r\n\r\n if (attributes.fgColor) {\r\n var $fgColor = XmlNode('fgColor');\r\n\r\n //Excel doesn't like it when we set both rgb and theme+tint, but xlsx.parseFile() sets both\r\n //var $fgColor = createElement('', null, null, {xmlMode: true}).attr(attributes.fgColor)\r\n if (attributes.fgColor.rgb) {\r\n\r\n if (attributes.fgColor.rgb.length == 6) {\r\n attributes.fgColor.rgb = \"FF\" + attributes.fgColor.rgb /// add alpha to an RGB as Excel expects aRGB\r\n }\r\n\r\n $fgColor.attr('rgb', attributes.fgColor.rgb);\r\n $patternFill.append($fgColor);\r\n }\r\n else if (attributes.fgColor.theme) {\r\n $fgColor.attr('theme', attributes.fgColor.theme);\r\n if (attributes.fgColor.tint) {\r\n $fgColor.attr('tint', attributes.fgColor.tint);\r\n }\r\n $patternFill.append($fgColor);\r\n }\r\n\r\n if (!attributes.bgColor) {\r\n attributes.bgColor = { \"indexed\": \"64\"}\r\n }\r\n }\r\n\r\n if (attributes.bgColor) {\r\n var $bgColor = XmlNode('bgColor').attr(attributes.bgColor);\r\n $patternFill.append($bgColor);\r\n }\r\n\r\n var $fill = XmlNode('fill')\r\n .append($patternFill);\r\n\r\n this.$fills.append($fill);\r\n\r\n var count = this.$fills.children().length;\r\n this.$fills.attr('count', count);\r\n return count - 1;\r\n },\r\n\r\n _getSubBorder: function(direction, spec) {\r\n\r\n var $direction = XmlNode(direction);\r\n if (spec){\r\n if (spec.style) $direction.attr('style', spec.style);\r\n if (spec.color) {\r\n var $color = XmlNode('color');\r\n if (spec.color.auto) {\r\n $color.attr('auto', spec.color.auto);\r\n }\r\n else if (spec.color.rgb) {\r\n $color.attr('rgb', spec.color.rgb);\r\n }\r\n else if (spec.color.theme || spec.color.tint) {\r\n $color.attr('theme', spec.color.theme || \"1\");\r\n $color.attr('tint', spec.color.tint || \"0\");\r\n }\r\n $direction.append($color)\r\n }\r\n }\r\n return $direction;\r\n },\r\n\r\n _addBorder: function (attributes) {\r\n if (!attributes) { return 0; }\r\n\r\n var self = this;\r\n\r\n var $border = XmlNode('border')\r\n .attr(\"diagonalUp\",attributes.diagonalUp)\r\n .attr(\"diagonalDown\",attributes.diagonalDown);\r\n\r\n var directions = [\"left\",\"right\",\"top\",\"bottom\",\"diagonal\"];\r\n\r\n directions.forEach(function(direction) {\r\n $border.append(self._getSubBorder(direction, attributes[direction]))\r\n });\r\n this.$borders.append($border);\r\n\r\n var count = this.$borders.children().length;\r\n this.$borders.attr('count', count);\r\n return count -1;\r\n },\r\n\r\n toXml: function () {\r\n return this.$styles.toXml();\r\n }\r\n }.initialize(options||{});\r\n }\r\n /**\r\n * 样式魔改区 -- end\r\n */\r\nXLSX.parse_zip = parse_zip;\r\nXLSX.read = readSync; //xlsread\r\nXLSX.readFile = readFileSync; //readFile\r\nXLSX.readFileSync = readFileSync;\r\nXLSX.write = writeSync;\r\nXLSX.writeFile = writeFileSync;\r\nXLSX.writeFileSync = writeFileSync;\r\nXLSX.writeFileAsync = writeFileAsync;\r\nXLSX.utils = utils;\r\nXLSX.writeXLSX = writeSyncXLSX;\r\nXLSX.writeFileXLSX = writeFileSyncXLSX;\r\nXLSX.SSF = SSF;\r\nif(typeof __stream !== \"undefined\") XLSX.stream = __stream;\r\nif(typeof CFB !== \"undefined\") XLSX.CFB = CFB;\r\n// if(typeof require !== \"undefined\") {\r\n// var strmod = require('stream');\r\n// if((strmod||{}).Readable) set_readable(strmod.Readable);\r\n// \ttry { _fs = require('fs'); } catch(e) {}\r\n// }\r\n// }\r\n}\r\nmake_xlsx_lib(XLSX);\r\nexport default XLSX;\r\n/*global define */\r\n// if(typeof exports !== 'undefined') make_xlsx_lib(exports);\r\n// else if(typeof module !== 'undefined' && module.exports) make_xlsx_lib(module.exports);\r\n// else if(typeof define === 'function' && define.amd) define('xlsx', function() { if(!XLSX.version) make_xlsx_lib(XLSX); return XLSX; });\r\n// else make_xlsx_lib(XLSX);\r\n// /* NOTE: the following extra line is needed for \"Lightning Locker Service\" */\r\n// if(typeof window !== 'undefined' && !window.XLSX) try { window.XLSX = XLSX; } catch(e) {}","module.exports = function(module) {\r\n\tif (!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif (!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '