invoice-sample 1.0.95 → 1.0.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://InvoiceSample/webpack/universalModuleDefinition","webpack://InvoiceSample/webpack/bootstrap","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_wks.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.object.to-string.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_export.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_global.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_an-object.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_fails.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.array.iterator.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_is-object.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_descriptors.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.promise.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.symbol.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.string.iterator.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/web.dom.iterable.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.regexp.replace.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_object-dp.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.number.constructor.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/browser.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_redefine.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_to-length.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.regexp.to-string.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_hide.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_has.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_cof.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_ctx.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_defined.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_to-object.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/utils.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/mode.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_core.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_to-iobject.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/utils/typedarray-buffer.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_property-desc.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_uid.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_library.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_object-keys.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_iterators.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.regexp.split.js","webpack://InvoiceSample/./node_modules/_changedpi@1.0.4@changedpi/dist/index.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_to-primitive.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_shared.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_a-function.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_to-integer.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_object-pie.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_classof.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_set-to-string-tag.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_add-to-unscopables.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es7.array.includes.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_dom-create.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_iobject.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_to-absolute-index.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_shared-key.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_enum-bug-keys.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_object-gops.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_html.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_object-create.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_object-gopn.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_object-gopd.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_advance-string-index.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_regexp-exec-abstract.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_fix-re-wks.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_regexp-exec.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_flags.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.array.slice.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.string.includes.js","webpack://InvoiceSample/./node_modules/_isarray@2.0.5@isarray/index.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/error-correction-level.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.object.assign.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_ie8-dom-define.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_object-keys-internal.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_array-includes.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_iter-call.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_is-array-iter.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/core.get-iterator-method.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_species-constructor.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_task.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_new-promise-capability.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_iter-detect.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_wks-ext.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_is-array.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_string-at.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_iter-define.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.regexp.match.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_is-regexp.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_array-methods.js","webpack://InvoiceSample/./node_modules/_nzh@1.0.5@nzh/src/utils.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/error-correction-code.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/version-check.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/regex.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/renderer/utils.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.array.map.js","webpack://InvoiceSample/./src/assets/img/customs.png","webpack://InvoiceSample/./node_modules/_nzh@1.0.5@nzh/cn.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_function-to-string.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_object-assign.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_an-instance.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_for-of.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_invoke.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_microtask.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_perform.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_user-agent.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_promise-resolve.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_redefine-all.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_set-species.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_meta.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_wks-define.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_enum-keys.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_object-dps.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_object-gopn-ext.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_iter-create.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_object-gpo.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_iter-step.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.regexp.exec.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_inherit-if-required.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_set-proto.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_string-trim.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_string-ws.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.regexp.flags.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.string.sub.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_string-html.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.number.max-safe-integer.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_string-context.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_fails-is-regexp.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.array.find.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_array-species-create.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_array-species-constructor.js","webpack://InvoiceSample/./node_modules/_nzh@1.0.5@nzh/src/autoGet.js","webpack://InvoiceSample/./node_modules/_nzh@1.0.5@nzh/src/index.js","webpack://InvoiceSample/./node_modules/_nzh@1.0.5@nzh/src/langs/cn_s.js","webpack://InvoiceSample/./node_modules/_nzh@1.0.5@nzh/src/langs/cn_b.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/can-promise.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/qrcode.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/bit-buffer.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/bit-matrix.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/alignment-pattern.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/finder-pattern.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/mask-pattern.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/reed-solomon-encoder.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/polynomial.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/galois-field.js","webpack://InvoiceSample/./node_modules/_buffer@4.9.2@buffer/index.js","webpack://InvoiceSample/(webpack)/buildin/global.js","webpack://InvoiceSample/./node_modules/_base64-js@1.5.1@base64-js/index.js","webpack://InvoiceSample/./node_modules/_ieee754@1.2.1@ieee754/index.js","webpack://InvoiceSample/./node_modules/_isarray@1.0.0@isarray/index.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/version.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/format-info.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/segments.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/numeric-data.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/alphanumeric-data.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/byte-data.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/core/kanji-data.js","webpack://InvoiceSample/./node_modules/_dijkstrajs@1.0.2@dijkstrajs/dijkstra.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/renderer/canvas.js","webpack://InvoiceSample/./node_modules/_qrcode@1.4.4@qrcode/lib/renderer/svg-tag.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_strict-method.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.array.from.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_create-property.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/es6.array.fill.js","webpack://InvoiceSample/./node_modules/_core-js@2.6.12@core-js/modules/_array-fill.js","webpack://InvoiceSample/./src/utils/crc.ts","webpack://InvoiceSample/./src/utils/basicUtil.ts","webpack://InvoiceSample/./src/Canvas/Invoice/index.ts","webpack://InvoiceSample/./src/Canvas/FullElectricity/index.ts","webpack://InvoiceSample/./src/Canvas/MotorVehicleInvoice/index.tsx","webpack://InvoiceSample/./src/Canvas/InvoiceList/index.ts","webpack://InvoiceSample/./src/Canvas/CustomsDeclarationForm/index.ts","webpack://InvoiceSample/./src/Canvas/CustomsPaymentLetter/index.ts","webpack://InvoiceSample/./src/Canvas/invoiceQrCode/index.ts","webpack://InvoiceSample/./src/Canvas/RedLetterNotice/index.ts","webpack://InvoiceSample/./src/Canvas/ExpressDeliveryCode/index.ts","webpack://InvoiceSample/./src/Print/LodopFuncs.js","webpack://InvoiceSample/./src/Print/invoice/index.ts","webpack://InvoiceSample/./src/Print/invoiceList/index.ts","webpack://InvoiceSample/./src/Print/customsDeclaration/index.ts","webpack://InvoiceSample/./src/Print/invoiceQrCode/index.ts","webpack://InvoiceSample/./src/Print/redLetterNotice/index.ts","webpack://InvoiceSample/./src/Print/invoiceSample/index.ts","webpack://InvoiceSample/./src/Print/expressDeliveryCode/index.ts","webpack://InvoiceSample/./src/Print/index.ts","webpack://InvoiceSample/./src/index.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","store","uid","USE_SYMBOL","classof","test","this","global","core","hide","redefine","ctx","$export","type","source","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","Math","self","__g","isObject","it","TypeError","exec","e","addToUnscopables","step","Iterators","toIObject","Array","iterated","kind","_t","_i","_k","O","index","length","Arguments","a","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","LIBRARY","aFunction","anInstance","forOf","speciesConstructor","task","set","microtask","newPromiseCapabilityModule","perform","userAgent","promiseResolve","process","versions","v8","$Promise","isNode","empty","newPromiseCapability","f","USE_NATIVE","promise","resolve","FakePromise","constructor","PromiseRejectionEvent","then","indexOf","isThenable","notify","isReject","_n","chain","_c","_v","ok","_s","run","reaction","result","exited","handler","fail","reject","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","console","unhandled","isUnhandled","emit","onunhandledrejection","reason","error","_a","v","onrejectionhandled","$reject","_d","_w","slice","$resolve","wrapper","executor","err","onFulfilled","onRejected","push","C","Promise","capability","$$reject","x","iter","all","iterable","values","remaining","$index","alreadyCalled","race","has","DESCRIPTORS","META","KEY","$fails","shared","setToStringTag","wks","wksExt","wksDefine","enumKeys","isArray","anObject","toObject","toPrimitive","createDesc","_create","gOPNExt","$GOPD","$GOPS","$DP","$keys","gOPD","dP","gOPN","$Symbol","$JSON","JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","isEnum","propertyIsEnumerable","SymbolRegistry","AllSymbols","OPSymbols","ObjectProto","QObject","setter","findChild","setSymbolDesc","D","protoDesc","wrap","tag","sym","isSymbol","iterator","$defineProperty","$defineProperties","keys","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","names","$getOwnPropertySymbols","IS_OP","arguments","$set","configurable","es6Symbols","split","j","wellKnownSymbols","k","keyFor","useSetter","useSimple","defineProperties","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","FAILS_ON_PRIMITIVES","replacer","$replacer","args","apply","valueOf","$at","String","point","done","$iterators","getKeys","ITERATOR","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","NAME","explicit","Collection","proto","toLength","toInteger","advanceStringIndex","regExpExec","max","min","floor","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","defined","REPLACE","$replace","maybeCallNative","searchValue","replaceValue","fn","regexp","res","rx","functionalReplace","fullUnicode","unicode","lastIndex","results","accumulatedResult","nextSourcePosition","matched","position","captures","namedCaptures","groups","replacerArgs","concat","replacement","getSubstitution","str","tailPos","symbols","match","ch","capture","charAt","IE8_DOM_DEFINE","Attributes","cof","inheritIfRequired","fails","$trim","trim","$Number","Base","BROKEN_COF","TRIM","toNumber","argument","third","radix","maxCode","first","charCodeAt","NaN","code","digits","parseInt","that","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","text","opts","cb","argsNum","isLastArgCb","Error","getContext","data","toCanvas","render","toDataURL","renderToDataURL","toString","_","SRC","$toString","TPL","inspectSource","val","safe","isFunction","join","$flags","RegExp","flags","b","toSJISFunction","CODEWORDS_COUNT","getSymbolSize","version","getSymbolTotalCodewords","getBCHDigit","digit","setToSJISFunction","isKanjiModeEnabled","toSJIS","kanji","VersionCheck","Regex","NUMERIC","id","bit","ccBits","ALPHANUMERIC","BYTE","KANJI","MIXED","getCharCountIndicator","isValid","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","from","defaultValue","string","toLowerCase","fromString","__e","IObject","Buffer","TYPED_ARRAY_SUPPORT","arr","Uint8Array","__proto__","foo","typedArraySupport","K_MAX_LENGTH","arg","offset","allocUnsafe","ArrayBuffer","array","byteOffset","byteLength","RangeError","buf","fromArrayLike","fromArrayBuffer","createBuffer","actual","write","obj","isBuffer","len","checked","copy","buffer","fromObject","size","utf8ToBytes","units","codePoint","Infinity","leadSurrogate","bytes","isView","species","writable","isFinite","src","dst","blitBuffer","utf8Write","start","end","newBuf","subarray","sliceLen","targetStart","fill","list","pos","_isBuffer","alloc","bitmap","px","random","enumBugKeys","isRegExp","callRegExpExec","regexpExec","$min","$push","LENGTH","SUPPORTS_Y","SPLIT","$split","internalSplit","separator","limit","lastLength","output","ignoreCase","multiline","sticky","lastLastIndex","splitLimit","separatorCopy","splitter","unicodeMatching","lim","q","A","z","calcCrc","pngDataTable","crcTable","Int32Array","createPngDataTable","changeDpiBlob","blob","dpi","headerChunk","fileReader","FileReader","onload","dataArray","tail","changedArray","changeDpiOnArray","Blob","readAsArrayBuffer","changeDpiDataUrl","base64Image","dataSplitted","format","body","headerLength","overwritepHYs","PNG","b64Index","b64index","detectPhysChunkFromDataUrl","ceil","JPEG","stringHeader","substring","restOfData","headerBytes","atob","finalArray","base64Header","btoa","fromCharCode","arr2","_toConsumableArray","_P","_H","_Y","_S","physChunk","crc","crcChunk","startingIndex","searchStartOfPhys","chunkLength","finalHeader","copyright","isNaN","TAG","ARG","T","tryGet","callee","def","stat","UNSCOPABLES","ArrayProto","$includes","includes","el","document","is","createElement","documentElement","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","contentWindow","open","lt","close","Properties","hiddenKeys","pIE","at","builtinExec","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","re","replace","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","arg2","forceStringMethod","strfn","rxfn","re1","re2","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","reCopy","html","toAbsoluteIndex","arraySlice","begin","klass","upTo","cloned","context","searchString","L","M","Q","H","level","assign","arrayIndexOf","IS_INCLUDES","$this","fromIndex","entries","ret","getIteratorMethod","defer","channel","port","invoke","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","listener","event","nextTick","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","removeChild","setTimeout","clear","PromiseCapability","$$resolve","SAFE_CLOSING","riter","skipClosing","next","TO_STRING","$iterCreate","getPrototypeOf","BUGGY","returnThis","Constructor","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","MATCH","$match","matchStr","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","REG_NUMBER","REG_E","e2ten","num","zs","xs","_zs","substr","s_start","_xs","getNumbResult","int","decimal","minus","centerArray","baseArray","array1","splice","unshift","hasAttr","extend","objs","_obj","getDigit","unshiftZero","clearZero","zero","reg0","arg_s","arg_e","arg_d","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","getTotalCodewordsCount","byte","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","hex2rgba","hex","hexCode","map","hexValue","g","getOptions","options","color","margin","width","scale","dark","light","rendererOpts","getScale","qrSize","getImageWidth","qrToImageData","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","$map","getNzhObjByLang","langs","gOPS","$assign","K","forEach","aLen","getSymbols","forbiddenField","isArrayIter","getIterFn","BREAK","RETURN","iterFn","un","macrotask","Observer","MutationObserver","WebKitMutationObserver","head","last","flush","parent","navigator","standalone","toggle","node","createTextNode","observe","characterData","promiseCapability","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","NEED","fastKey","getWeak","onFreeze","windowNames","getWindowNames","descriptor","forced","setPrototypeOf","check","buggy","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","createHTML","quot","attribute","p1","MAX_SAFE_INTEGER","$find","find","original","nzhClass","utils","lang_s","lang_b","encodeS","ww","tenMin","CL","encodeB","decodeS","unCL","decodeB","toMoney","ch_u","ch_f","ch_d","n0","_int","_decimal","dicimal","encodeInt","_m","_dg","tenm","_length","_num","y","_maxLeft","_other","dw_w","dw_y","lasty","lastIndexOf","cnnumb","_minus","dw_s","cnarr","dw","maxdw","rnum_a","num_a","_num_a","chr","u","reverse","parseFloat","ch_0","complete","outSymbol","t_str","m_t","zs_str","m_z","xs_str","m_u","mark_0","BufferUtil","Utils","BitBuffer","BitMatrix","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Mode","Segments","setupFormatInfo","matrix","maskPattern","mod","bits","getEncodedBits","createData","segments","put","getLength","dataTotalCodewordsBits","getLengthInBits","putBit","remainingByte","bitBuffer","totalCodewords","ecTotalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","ecData","maxDataSize","dataSize","encode","createCodewords","createSymbol","fromArray","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","moduleCount","getPositions","row","col","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","inc","bitIndex","byteIndex","isReserved","setupData","getBestMask","applyMask","mask","toSJISFunc","bufIndex","reservedBit","reserved","xor","getRowColCoords","posCount","intervals","positions","coords","posLength","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","getMaskAt","getPenaltyN1","points","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","abs","pattern","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","penalty","Polynomial","degree","genPoly","initialize","generateECPolynomial","pad","paddedData","remainder","buff","GF","mul","p2","coeff","divident","divisor","poly","EXP_TABLE","LOG_TABLE","log","base64","ieee754","kMaxLength","encodingOrOffset","encoding","isEncoding","assertSize","loweredCase","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","Number","strLen","parsed","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","INSPECT_MAX_BYTES","poolSize","_augment","allocUnsafeSlow","compare","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","toJSON","_arr","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","INVALID_BASE64_RE","toByteArray","stringtrim","base64clean","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getBitsLength","getCapacity","usableBits","seg","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","G15_BCH","NumericData","AlphanumericData","ByteData","KanjiData","dijkstra","getStringByteLength","unescape","encodeURIComponent","getSegments","regex","getSegmentsFromString","byteSegs","kanjiSegs","numSegs","alphaNumSegs","sort","s1","s2","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","reduce","acc","graph","nodes","table","prevNodeIds","nodeGroup","currentNodeIds","lastCount","prevNodeId","buildGraph","segs","buildNodes","path","find_path","optimizedSegs","curr","prevSeg","mergeSegments","group","remainingNum","ALPHA_NUM_CHARS","single_source_shortest_paths","predecessors","costs","closest","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","PriorityQueue","make","pop","cost","msg","extract_shortest_path_from_predecessor_list","sorter","default_sorter","item","shift","qrData","canvasEl","getCanvasElement","image","createImageData","clearRect","height","clearCanvas","putImageData","quality","getColorAttrib","attrib","alpha","toFixed","svgCmd","cmd","qrcodesize","bg","moveBy","newRow","lineLength","qrToPath","viewBox","svgTag","method","createProperty","arrayLike","mapfn","mapping","endPos","CRC","CRC16","ToCRC16","ToModbusCRC16","strToByte","convertChinese","filterChinese","strToHex","padLeft","isReverse","encodeURI","isFilterChinese","pc","toUpperCase","getMixLength","realLength","charCode","digitUppercase","currencyDigits","nzhcn","onCount","add","arg1","r1","r2","div","t1","t2","isArrayLike","isLength","isEmpty","ConvertNumber","number","count","isSavePoint","_inter","_point","numPoint","strPoint","drawCanvasText","lineHeight","startLeft","startTop","ctxFillStyle","ctxFont","textAlign","getTrueLength","truelen","cutString","leng","tlen","nlen","isNextLine","tl","fillStyle","font","textBaseline","fillText","save","taxOfficeList","taxOfficeCode","taxOffice","taxProvince","title","renderTextWithConfig","config","field","require","drawLine","startX","startY","_b","lineWidth","beginPath","moveTo","strokeStyle","lineTo","pointX","pointY","stroke","closePath","drawInvoiceText","createInvoice","showSample","samplePosition","callback","invoiceType","invoiceCode","invoiceNo","amount","drewDate","checkCode","dateFormat","Date","year","getFullYear","month","getMonth","monthStr","day","getDate","dayStr","dateStr","content","qrContent","createQrOnCanvas","getImageData","fillRect","bezierEllipse","ox","oy","bezierCurveTo","ccircle","cstartAngle","cradius","cangleDecrement","cratioX","cratioY","cindex","translate","cos","PI","sin","rotate","strokeText","restore","drawText","taxName","x_1","y_1","drawUnderText","drawEllipse","invoiceData","invoiceStatus","status","amountWithTax","drawSpecialLine","innerPoints","specialFlag","invoiceSampleText","drawSpecialTag","drawAllLines","drawInvoiceType","drawInvoiceTexts","machineCode","date","drawDate","cLength","checkCodeText","drawCheckCode","drawInvoiceMainInfo","purchaserName","purchaserTaxNo","purchaserAddress","purchaserTel","purchaserBankName","purchaserBankAccount","sellerName","sellerTaxNo","sellerAddress","sellerTel","sellerBankName","sellerBankAccount","calcAndDraw","drawSellerAndPurchaser","ciphertext","drawCipher","temp","details","taxAmount","listFlag","taxRate","qdbz","drawGoodsName","newSize","drawSpecification","drawUnit","drawQuantity","drawUnitPrice","drawAmount","drawTaxRate","record","taxPre","taxPreType","drawTaxAmount","drawListTaxRate","temporaryTaxRate","taxRateArr","drawListTaxAmount","temporaryTaxAmount","getTrueLength_1","flagSum_1","rowSum_1","top_1","shortName","goodsName","specification","unit","quantity","unitPrice","drawTotalTaxAmount","drawGoods","arc","drawAmountWithTax","drawTotalAmountWithTax","remark","drawRemark","payee","reviewer","drawer","drawName","createFullElectricity","createMotorVehicleInvoice","_e","_f","_g","carTypeName","brandTranslation","productPlace","certificateNo","importCertNo","comInspectionNo","vehicleIdenNo","engineNo","drewCarInfo","zgswjgmc","zgswjgdm","tempAmountWithTax","tempAmount","tempTaxAmount","tonnage","limitPeopleNum","wspzhm","drawOtherInfo","__assign","invoiceListCurrent","invoiceListTotalCount","subtotalAmount","subtotalTaxAmount","discountAmount","discountTaxAmount","createListPage","__awaiter","thisArg","_arguments","generator","fulfilled","rejected","__generator","label","sent","trys","ops","verb","op","customsImg","drawCustomsDeclarationText","drawDetails","goodsDetailList","goodsNo","drawGoodsCode","goodsCode","quantity1","quantity2","text1","unit1Name","text2","unit2Name","drawGoodsQuantityAndUnit","declTotal","tradeCurrency","drawGoodsPriceAndTotalAmount","drawCusOriginCountryName","cusOriginCountryName","cusOriginCountry","drawDestinationCountryName","destinationCountryName","destinationCountry","drawDistrictCodeName","districtCodeName","districtCode","drawDutyModeName","dutyModeName","createCustomsDeclarationForm","loadImg","_url","img","Image","entryId","pageIndex","imageUrls","startIndex","endIndex","qrImg","parse","default","devicePixelRatio","drawImage","importExportPort","cusTrafficMode","ownerSocialCreditCode","superviseModeCode","cutMode","cusTradeCountry","distinatePort","departurePortCode","wrapType","transacMode","drawCustomsDeclarationTexts","preEntryId","consignorCname","importExportPortName","importExportDate","declareDate","manualNo","consigneeEname","cusTrafficModeName","trafficName","billNo","ownerName","superviseModeCodeName","cutModeName","licenseNo","contractNo","cusTradeCountryName","distinatePortName","departurePortCodeName","wrapTypeName","packNum","grossWeight","netWeight","transacModeName","feeCurrency","feeMark","feeRate","insuranceCurrency","insuranceMark","insuranceRate","otherCurrency","otherMark","otherRate","agentName","agentSocialCreditCode","drawMainInfo","drawBarCode","deltaH","purchaserCoveringWarrantVo","exchequerNo","deliveryNum","portCode","purchaserTaxNo2","payDate","applyCompanyNo","incomeOrganization","sources","purchaserTaxNo1","transportWay","manifestNo","purchaserName1","purchaserName2","budgetNo","tradeWay","purchaserInvoiceDetailVOList","quantityAndDraw","taxAmountAndDraw","align","taxInfo","goodsNameAndDraw","unitAndDraw","unitPriceAndDraw","createCustomsPaymentLetter","createInvoiceQrCode","url","orderCode","createTime","qrUrl","createRedLetterNotice","drawAllFixedText","applyTime","applicationRole","deductFlag","drawDescription","applicationNo","drawDashed","setLineDash","drawCircle","drawItemsItem","mailNo","sender","senderMobile","receiver","receiveAddress","createExpressDeliveryCode","drawItemsAll","CreatedOKLodop7766","needCLodop","ua","verTrident","verIE","verOPR","verFF","x64","verChrome","getLodop","oOBJECT","oEMBED","licenses","CLodopIsLocal","LODOP","strPrintFont","modal","wrpStr","cssText","innerHTML","getElementById","onclick","isIE","getCLodop","readyState","CLODOP","CVERSION","parentNode","is64IE","setAttribute","VERSION","SET_LICENSES","alert","changeUnit","ctxFontFamily","inputWidth","letterSpacing","ADD_PRINT_TEXT","SET_PRINT_STYLEA","invoice","top","left","showWindow","toolsType","company","getProjectLodop","_j","isInitPrinter","printer","PRINT_INITA","SET_PRINT_PAGESIZE","SET_SHOW_MODE","SET_PRINTER_INDEXA","ADD_PRINT_BARCODE","drawQrcode","top_2","ADD_PRINT_ELLIPSE","sqrt","ADD_PRINT_LINE","PREVIEW","PRINT","outputInvoiceDic","0","1","2","3","pointOption","file","ADD_PRINT_IMAGE","printInvoiceList","params","invoiceListFieldMapping","invoiceList","_l","discountLine","averageWidth","unitPriceWidth","taxRateWidth","invoiceListField","invoiceLineType","temporaryRemarks","tableDom","displayName","goodsNameStyle","temporaryQuantity","temporaryUnitPrice","specificationStyle","unitStyle","quantityStyle","unitPriceStyle","amountStyle","taxAmountStyle","discountFlag","temporaryAmount","temporaryTax","invoiceListFieldsTd","invVal","fieldValue","fieldName","sourceFieldName","ADD_PRINT_TABLE","printCustomsDeclaration","base64s","error_1","printInvoiceQrCode","printRedLetterNotice","printInvoiceSample","PRINT_INIT","printExpressDeliveryCode","__rest","InvoiceSample","getInvoiceSample","getMotorVehicleInvoiceSample","getInvoiceListSample","getCustomsDeclarationFormSample","getCustomsPaymentLetterSample","printInvoice","initLodop","listArr","subNum","newArray","arrayGroup","getFullElectricity","error_2","error_3","error_4","error_5","resetProps","targetAddress","src1","src2","getElementsByTagName","oscript","insertBefore","firstChild"],"mappings":"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","file":"invoice-sample.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"InvoiceSample\"] = factory();\n\telse\n\t\troot[\"InvoiceSample\"] = factory();\n})(window, function() {\nreturn "," \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 = 159);\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","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\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","// 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","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","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\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","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\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","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\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","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","\nvar canPromise = require('./can-promise')\n\nvar QRCode = require('./core/qrcode')\nvar CanvasRenderer = require('./renderer/canvas')\nvar SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n var args = [].slice.call(arguments, 1)\n var argsNum = args.length\n var isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n var data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n var data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\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","// 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","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\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","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\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","// 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.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","var toSJISFunction\nvar CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n var digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","var VersionCheck = require('./version-check')\nvar Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n var lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\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","/**\n * Implementation of a subset of node.js Buffer methods for the browser.\n * Based on https://github.com/feross/buffer\n */\n\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar isArray = require('isarray')\n\nfunction typedArraySupport () {\n // Can typed array instances be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nvar K_MAX_LENGTH = Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n\nfunction Buffer (arg, offset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, offset, length)\n }\n\n if (typeof arg === 'number') {\n return allocUnsafe(this, arg)\n }\n\n return from(this, arg, offset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\nfunction createBuffer (that, length) {\n var buf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n buf = that\n if (buf === null) {\n buf = new Buffer(length)\n }\n buf.length = length\n }\n\n return buf\n}\n\nfunction allocUnsafe (that, size) {\n var buf = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n buf[i] = 0\n }\n }\n\n return buf\n}\n\nfunction fromString (that, string) {\n var length = byteLength(string) | 0\n var buf = createBuffer(that, length)\n\n var actual = buf.write(string)\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 buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\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 var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n buf.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n buf = fromArrayLike(that, buf)\n }\n\n return buf\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(that, len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\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' && Array.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 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 byteLength (string) {\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 return utf8ToBytes(string).length\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 utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction from (that, value, offset, 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, offset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, offset)\n }\n\n return fromObject(that, value)\n}\n\nBuffer.prototype.write = function write (string, offset, length) {\n // Buffer#write(string)\n if (offset === undefined) {\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n } else {\n length = undefined\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 return utf8Write(this, string, offset, length)\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 // Return an augmented `Uint8Array` instance\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\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\nBuffer.prototype.fill = function fill (val, start, end) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\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 } 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 : new Buffer(val)\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\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 createBuffer(null, 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 = allocUnsafe(null, 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\nBuffer.byteLength = byteLength\n\nBuffer.prototype._isBuffer = true\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nmodule.exports.alloc = function (size) {\n var buffer = new Buffer(size)\n buffer.fill(0)\n return buffer\n}\n\nmodule.exports.from = function (data) {\n return new Buffer(data)\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","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 = false;\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","module.exports = {};\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.changeDpiBlob = changeDpiBlob;\nexports.changeDpiDataUrl = changeDpiDataUrl;\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction createPngDataTable() {\n /* Table of CRCs of all 8-bit messages. */\n var crcTable = new Int32Array(256);\n for (var n = 0; n < 256; n++) {\n var c = n;\n for (var k = 0; k < 8; k++) {\n c = c & 1 ? 0xedb88320 ^ c >>> 1 : c >>> 1;\n }\n crcTable[n] = c;\n }\n return crcTable;\n}\n\nfunction calcCrc(buf) {\n var c = -1;\n if (!pngDataTable) pngDataTable = createPngDataTable();\n for (var n = 0; n < buf.length; n++) {\n c = pngDataTable[(c ^ buf[n]) & 0xFF] ^ c >>> 8;\n }\n return c ^ -1;\n}\n\nvar pngDataTable = void 0;\n\nvar PNG = 'image/png';\nvar JPEG = 'image/jpeg';\n\n// those are 3 possible signature of the physBlock in base64.\n// the pHYs signature block is preceed by the 4 bytes of lenght. The length of\n// the block is always 9 bytes. So a phys block has always this signature:\n// 0 0 0 9 p H Y s.\n// However the data64 encoding aligns we will always find one of those 3 strings.\n// this allow us to find this particular occurence of the pHYs block without\n// converting from b64 back to string\nvar b64PhysSignature1 = 'AAlwSFlz';\nvar b64PhysSignature2 = 'AAAJcEhZ';\nvar b64PhysSignature3 = 'AAAACXBI';\n\nvar _P = 'p'.charCodeAt(0);\nvar _H = 'H'.charCodeAt(0);\nvar _Y = 'Y'.charCodeAt(0);\nvar _S = 's'.charCodeAt(0);\n\nfunction changeDpiBlob(blob, dpi) {\n // 33 bytes are ok for pngs and jpegs\n // to contain the information.\n var headerChunk = blob.slice(0, 33);\n return new Promise(function (resolve, reject) {\n var fileReader = new FileReader();\n fileReader.onload = function () {\n var dataArray = new Uint8Array(fileReader.result);\n var tail = blob.slice(33);\n var changedArray = changeDpiOnArray(dataArray, dpi, blob.type);\n resolve(new Blob([changedArray, tail], { type: blob.type }));\n };\n fileReader.readAsArrayBuffer(headerChunk);\n });\n}\n\nfunction changeDpiDataUrl(base64Image, dpi) {\n var dataSplitted = base64Image.split(',');\n var format = dataSplitted[0];\n var body = dataSplitted[1];\n var type = void 0;\n var headerLength = void 0;\n var overwritepHYs = false;\n if (format.indexOf(PNG) !== -1) {\n type = PNG;\n var b64Index = detectPhysChunkFromDataUrl(body);\n // 28 bytes in dataUrl are 21bytes, length of phys chunk with everything inside.\n if (b64Index >= 0) {\n headerLength = Math.ceil((b64Index + 28) / 3) * 4;\n overwritepHYs = true;\n } else {\n headerLength = 33 / 3 * 4;\n }\n }\n if (format.indexOf(JPEG) !== -1) {\n type = JPEG;\n headerLength = 18 / 3 * 4;\n }\n // 33 bytes are ok for pngs and jpegs\n // to contain the information.\n var stringHeader = body.substring(0, headerLength);\n var restOfData = body.substring(headerLength);\n var headerBytes = atob(stringHeader);\n var dataArray = new Uint8Array(headerBytes.length);\n for (var i = 0; i < dataArray.length; i++) {\n dataArray[i] = headerBytes.charCodeAt(i);\n }\n var finalArray = changeDpiOnArray(dataArray, dpi, type, overwritepHYs);\n var base64Header = btoa(String.fromCharCode.apply(String, _toConsumableArray(finalArray)));\n return [format, ',', base64Header, restOfData].join('');\n}\n\nfunction detectPhysChunkFromDataUrl(data) {\n var b64index = data.indexOf(b64PhysSignature1);\n if (b64index === -1) {\n b64index = data.indexOf(b64PhysSignature2);\n }\n if (b64index === -1) {\n b64index = data.indexOf(b64PhysSignature3);\n }\n // if b64index === -1 chunk is not found\n return b64index;\n}\n\nfunction searchStartOfPhys(data) {\n var length = data.length - 1;\n // we check from the end since we cut the string in proximity of the header\n // the header is within 21 bytes from the end.\n for (var i = length; i >= 4; i--) {\n if (data[i - 4] === 9 && data[i - 3] === _P && data[i - 2] === _H && data[i - 1] === _Y && data[i] === _S) {\n return i - 3;\n }\n }\n}\n\nfunction changeDpiOnArray(dataArray, dpi, format, overwritepHYs) {\n if (format === JPEG) {\n dataArray[13] = 1; // 1 pixel per inch or 2 pixel per cm\n dataArray[14] = dpi >> 8; // dpiX high byte\n dataArray[15] = dpi & 0xff; // dpiX low byte\n dataArray[16] = dpi >> 8; // dpiY high byte\n dataArray[17] = dpi & 0xff; // dpiY low byte\n return dataArray;\n }\n if (format === PNG) {\n var physChunk = new Uint8Array(13);\n // chunk header pHYs\n // 9 bytes of data\n // 4 bytes of crc\n // this multiplication is because the standard is dpi per meter.\n dpi *= 39.3701;\n physChunk[0] = _P;\n physChunk[1] = _H;\n physChunk[2] = _Y;\n physChunk[3] = _S;\n physChunk[4] = dpi >>> 24; // dpiX highest byte\n physChunk[5] = dpi >>> 16; // dpiX veryhigh byte\n physChunk[6] = dpi >>> 8; // dpiX high byte\n physChunk[7] = dpi & 0xff; // dpiX low byte\n physChunk[8] = physChunk[4]; // dpiY highest byte\n physChunk[9] = physChunk[5]; // dpiY veryhigh byte\n physChunk[10] = physChunk[6]; // dpiY high byte\n physChunk[11] = physChunk[7]; // dpiY low byte\n physChunk[12] = 1; // dot per meter....\n\n var crc = calcCrc(physChunk);\n\n var crcChunk = new Uint8Array(4);\n crcChunk[0] = crc >>> 24;\n crcChunk[1] = crc >>> 16;\n crcChunk[2] = crc >>> 8;\n crcChunk[3] = crc & 0xff;\n\n if (overwritepHYs) {\n var startingIndex = searchStartOfPhys(dataArray);\n dataArray.set(physChunk, startingIndex);\n dataArray.set(crcChunk, startingIndex + 13);\n return dataArray;\n } else {\n // i need to give back an array of data that is divisible by 3 so that\n // dataurl encoding gives me integers, for luck this chunk is 17 + 4 = 21\n // if it was we could add a text chunk contaning some info, untill desired\n // length is met.\n\n // chunk structur 4 bytes for length is 9\n var chunkLength = new Uint8Array(4);\n chunkLength[0] = 0;\n chunkLength[1] = 0;\n chunkLength[2] = 0;\n chunkLength[3] = 9;\n\n var finalHeader = new Uint8Array(54);\n finalHeader.set(dataArray, 0);\n finalHeader.set(chunkLength, 33);\n finalHeader.set(physChunk, 37);\n finalHeader.set(crcChunk, 50);\n return finalHeader;\n }\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 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: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\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","exports.f = {}.propertyIsEnumerable;\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","// 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","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\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","// 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 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","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","exports.f = Object.getOwnPropertySymbols;\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\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","// 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","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","'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 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","'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, '$<a>') !== '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 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';\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","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n var lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\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","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","// 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","// 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","// 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 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","// 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","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';\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 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","exports.f = require('./_wks');\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\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","'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","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\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","// 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","'use strict';\r\nvar REG_NUMBER = /^([+-])?0*(\\d+)(\\.(\\d+))?$/;\r\nvar REG_E = /^([+-])?0*(\\d+)(\\.(\\d+))?e(([+-])?(\\d+))$/i;\r\n\r\n/**\r\n * 科学计数法转十进制\r\n * \r\n * @param {string} num 科学记数法字符串\r\n * @returns string \r\n */\r\nvar e2ten = exports.e2ten = function (num) {\r\n\tvar result = REG_E.exec(num.toString());\r\n\tif (!result) return num;\r\n\tvar zs = result[2]\r\n\t\t, xs = result[4] || \"\"\r\n\t\t, e = result[5] ? +result[5] : 0;\r\n\tif (e > 0) {\r\n\t\tvar _zs = xs.substr(0, e);\r\n\t\t_zs = _zs.length < e ? _zs + new Array(e - _zs.length + 1).join(\"0\") : _zs;\r\n\t\txs = xs.substr(e);\r\n\t\tzs += _zs;\r\n\t} else {\r\n\t\te = -e;\r\n\t\tvar s_start = zs.length - e;\r\n\t\ts_start = s_start < 0 ? 0 : s_start;\r\n\t\tvar _xs = zs.substr(s_start, e);\r\n\t\t_xs = _xs.length < e ? new Array(e - _xs.length + 1).join(\"0\") + _xs : _xs;\r\n\t\tzs = zs.substring(0, s_start);\r\n\t\txs = _xs + xs;\r\n\t}\r\n\tzs = zs == \"\" ? \"0\" : zs;\r\n\treturn (result[1] == \"-\" ? \"-\" : \"\") + zs + (xs ? \".\" + xs : \"\");\r\n}\r\n\r\n/**\r\n * 分析数字字符串\r\n * \r\n * @param {string} num NumberString\r\n * @returns object\r\n */\r\nexports.getNumbResult = function (num) {\r\n\tvar result = REG_NUMBER.exec(num.toString());\r\n\tif (!result && REG_E.test(num.toString())) {\r\n\t\tresult = REG_NUMBER.exec(e2ten(num.toString()))\r\n\t}\r\n\tif (result) {\r\n\t\treturn {\r\n\t\t\tint: result[2],\r\n\t\t\tdecimal: result[4],\r\n\t\t\tminus: result[1] == \"-\",\r\n\t\t\tnum: result.slice(1, 3).join('')\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * 数组归一 (按索引覆盖合并数组,并清空被合并的数组)\r\n * \r\n * @param {array} baseArray 基础数组\r\n * @param {...array} array1 \r\n * @returns array\r\n */\r\nexports.centerArray = function centerArray(baseArray, array1 /*[, array2[, ...[, arrayN]]]*/) {\r\n\tbaseArray.splice.apply(baseArray, [0, array1.length].concat(array1.splice(0, array1.length)));\r\n\tif (arguments.length > 2) {\r\n\t\tvar r = [].slice.call(arguments, 2);\r\n\t\tr.unshift(baseArray);\r\n\t\tcenterArray.apply(null, r);\r\n\t}\r\n\treturn baseArray;\r\n}\r\n\r\n/**\r\n * 检查对像属性 (非原型链)\r\n * \r\n * @param {object} obj\r\n * @param {string} key\r\n * @returns\r\n */\r\nvar hasAttr = exports.hasAttr = function (obj, key) {\r\n\treturn Object.prototype.hasOwnProperty.call(obj, key);\r\n}\r\n\r\n/**\r\n * 扩展对像(浅复制)\r\n * \r\n * @param {object} obj\r\n * @param {object} obj1\r\n * @returns\r\n */\r\nexports.extend = function (obj) {\r\n\tvar name\r\n\t\t, target = arguments[0] || {};\r\n\tvar objs = Array.prototype.slice.call(arguments, 1);\r\n\r\n\tfor (var i = 0; i < objs.length; i++) {\r\n\t\tvar _obj = objs[i];\r\n\t\tfor (name in _obj) {\r\n\t\t\tif (hasAttr(_obj, name)) {\r\n\t\t\t\ttarget[name] = _obj[name];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn target;\r\n}\r\n\r\n\r\n/**\r\n * 获取真实数位\r\n * \r\n * @param {number} index 中文单位的索引\r\n */\r\nexports.getDigit = function (index) {\r\n\treturn index >= 5 ? (index - 4) * 4 + 4 : index;\r\n}\r\n\r\n/**\r\n * 往数组头部插入0\r\n * \r\n * @param {array} arr \r\n * @param {number} n \r\n */\r\nexports.unshiftZero = function (arr, n) {\r\n\tif (n == null) n = 1;\r\n\tif (n <= 0) return;\r\n\tfor (; n--;) arr.unshift(0);\r\n}\r\n\r\n/**\r\n * 清理多余\"零\"\r\n * \r\n * @param {any} str \r\n * @param {any} zero \"零\"字符\r\n * @param {any} type 清理模式 ^ - 开头, $ - 结尾, nto1 - 多个连续变一个\r\n * @returns \r\n */\r\nexports.clearZero = function (str, zero, type) {\r\n\tif (str == null) return \"\";\r\n\tvar reg0 = ~\"*.?+$^[](){}|\\\\/\".indexOf(zero) ? \"\\\\\" + zero : zero;\r\n\tvar arg_s = new RegExp(\"^\" + reg0 + \"+\")\r\n\t\t, arg_e = new RegExp(reg0 + \"+$\")\r\n\t\t, arg_d = new RegExp(reg0 + \"{2}\", \"g\")\r\n\tstr = str.toString();\r\n\tif (type == \"^\") {\r\n\t\tstr = str.replace(arg_s, \"\");\r\n\t}\r\n\tif (!type || type == \"$\") {\r\n\t\tstr = str.replace(arg_e, \"\");\r\n\t}\r\n\tif (!type || type == \"nto1\") {\r\n\t\tstr = str.replace(arg_d, zero);\r\n\t}\r\n\treturn str;\r\n}","var ECLevel = require('./error-correction-level')\r\n\r\nvar EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nvar EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","var numeric = '[0-9]+'\nvar alphanumeric = '[A-Z $%*+\\\\-./:]+'\nvar kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nvar byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nvar TEST_KANJI = new RegExp('^' + kanji + '$')\nvar TEST_NUMERIC = new RegExp('^' + numeric + '$')\nvar TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n var hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n var hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n var margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0 ? 4 : options.margin\n\n var width = options.width && options.width >= 21 ? options.width : undefined\n var scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n var scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n var size = qr.modules.size\n var data = qr.modules.data\n var scale = exports.getScale(size, opts)\n var symbolSize = Math.floor((size + opts.margin * 2) * scale)\n var scaledMargin = opts.margin * scale\n var palette = [opts.color.light, opts.color.dark]\n\n for (var i = 0; i < symbolSize; i++) {\n for (var j = 0; j < symbolSize; j++) {\n var posDst = (i * symbolSize + j) * 4\n var pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n var iSrc = Math.floor((i - scaledMargin) / scale)\n var jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","export default \"data:image/png;base64,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\"","var getNzhObjByLang = require(\"./src/autoGet\");\r\nvar langs = {\r\n\ts: require(\"./src/langs/cn_s\"),\r\n\tb: require(\"./src/langs/cn_b\"),\r\n}\r\nmodule.exports = getNzhObjByLang(langs.s, langs.b); ","module.exports = require('./_shared')('native-function-to-string', Function.toString);\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","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","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","// 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","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","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\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","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","'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","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","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","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\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","// 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","'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","// 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","module.exports = function (done, value) {\n return { value: value, done: !!done };\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","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","// 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 $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","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","// 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';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\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 + '</' + tag + '>';\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","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\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","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","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\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 isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var nzhClass = require(\"./\");\r\nvar utils = require(\"./utils\")\r\nfunction getNzhObjByLang(lang_s, lang_b) {\r\n\treturn {\r\n\t\tencodeS: function (num, options) {\r\n\t\t\toptions = utils.extend({ ww: true, tenMin: true }, options);\r\n\t\t\treturn nzhClass.CL.call(lang_s, num, options);\r\n\t\t},\r\n\t\tencodeB: function (num, options) {\r\n\t\t\toptions = utils.extend({ ww: true }, options);\r\n\t\t\treturn nzhClass.CL.call(lang_b, num, options);\r\n\t\t},\r\n\t\tdecodeS: function () {\r\n\t\t\treturn nzhClass.unCL.apply(lang_s, arguments);\r\n\t\t},\r\n\t\tdecodeB: function () {\r\n\t\t\treturn nzhClass.unCL.apply(lang_b, arguments);\r\n\t\t},\r\n\t\ttoMoney: function (num, options) {\r\n\t\t\toptions = utils.extend({ ww: true }, options);\r\n\t\t\treturn nzhClass.toMoney.call(lang_b, num, options);\r\n\t\t}\r\n\t}\r\n}\r\nmodule.exports = getNzhObjByLang;","var utils = require(\"./utils\");\r\n\r\n/**\r\n * 阿拉伯数字转中文数字\r\n * \r\n * @param {String} num 阿拉伯数字/字符串 , 科学记数法字符串\r\n * @param {Object} opration 转换配置\r\n * {\r\n * ww: {万万化单位 | false}\r\n * tenMin: {十的口语化 | false}\r\n * }\r\n * @returns String\r\n */\r\nfunction CL(num, options) {\r\n\tvar result = utils.getNumbResult(num)\r\n\tif (!result) {\r\n\t\treturn num;\r\n\t}\r\n\toptions = options ? options : {};\r\n\tvar ch = this.ch //数字\r\n\t\t, ch_u = this.ch_u //单位\r\n\t\t, ch_f = this.ch_f || \"\" //负\r\n\t\t, ch_d = this.ch_d || \".\" //点\r\n\t\t, n0 = ch.charAt(0); //零\r\n\tvar _int = result.int //整数部分\r\n\t\t, _decimal = result.decimal //小数部分\r\n\t\t, _minus = result.minus; //负数标识\r\n\tvar int = \"\"\r\n\t\t, dicimal = \"\"\r\n\t\t, minus = _minus ? ch_f : ''; //符号位\r\n\tvar encodeInt = function encodeInt(_int, _m, _dg) {\r\n\t\t_int = utils.getNumbResult(_int).int;\r\n\t\tvar int = \"\"\r\n\t\t\t, tenm = arguments.length > 1 ? arguments[1] : options.tenMin\r\n\t\t\t, _length = _int.length;\r\n\t\t//一位整数 \r\n\t\tif (_length == 1) return ch.charAt(+_int);\r\n\t\tif (_length <= 4) { //四位及以下\r\n\t\t\tfor (var i = 0, n = _length; n--;) {\r\n\t\t\t\tvar _num = +_int.charAt(i);\r\n\t\t\t\tint += (tenm && _length == 2 && i == 0 && _num == 1) ? \"\" : ch.charAt(_num);\r\n\t\t\t\tint += (_num && n ? ch_u.charAt(n) : '')\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t} else { //大数递归\r\n\t\t\tvar d = _int.length / 4 >> 0\r\n\t\t\t\t, y = _int.length % 4;\r\n\t\t\t//\"兆\",\"京\"等单位处理\r\n\t\t\twhile (y == 0 || !ch_u.charAt(3 + d)) {\r\n\t\t\t\ty += 4;\r\n\t\t\t\td--;\r\n\t\t\t}\r\n\t\t\tvar _maxLeft = _int.substr(0, y), //最大单位前的数字\r\n\t\t\t\t_other = _int.substr(y); //剩余数字\r\n\r\n\t\t\tint = encodeInt(_maxLeft, tenm) + ch_u.charAt(3 + d) \r\n\t\t\t\t+ (_other.charAt(0) == '0' ? n0 : '') //单位后有0则加零 \r\n\t\t\t\t+ encodeInt(_other, _other.length > 4 ? tenm : false) \r\n\t\t}\r\n\t\tint = utils.clearZero(int, n0); //修整零\r\n\t\treturn int;\r\n\t}\r\n\r\n\t//转换小数部分\r\n\tif (_decimal) {\r\n\t\t_decimal = utils.clearZero(_decimal, \"0\", \"$\"); //去除尾部0\r\n\t\tfor (var x = 0; x < _decimal.length; x++) {\r\n\t\t\tdicimal += ch.charAt(+_decimal.charAt(x));\r\n\t\t}\r\n\t\tdicimal = dicimal ? ch_d + dicimal : \"\";\r\n\t}\r\n\r\n\t//转换整数部分\r\n\tint = encodeInt(_int); //转换整数\r\n\r\n\t//超级大数的万万化 \r\n\tif (options.ww && ch_u.length > 5) {\r\n\t\tvar dw_w = ch_u.charAt(4)\r\n\t\t\t, dw_y = ch_u.charAt(5);\r\n\t\tvar lasty = int.lastIndexOf(dw_y);\r\n\t\tif (~lasty) {\r\n\t\t\tint = int.substring(0, lasty).replace(new RegExp(dw_y, 'g'), dw_w + dw_w) + int.substring(lasty);\r\n\t\t}\r\n\t}\r\n\treturn minus + int + dicimal;\r\n}\r\n\r\n/**\r\n * 中文数字转阿拉伯数字\r\n * \r\n * @param {string} cnnumb 中文数字字符串\r\n * @returns Number\r\n */\r\nfunction unCL(cnnumb) {\r\n\tcnnumb = cnnumb.toString();\r\n\tvar result = cnnumb.split(this.ch_d);\r\n\tvar _int = result[0].replace(this.ch_f, \"\")\r\n\t\t, _decimal = result[1]\r\n\t\t, _minus = !!~result[0].indexOf(this.ch_f);\r\n\r\n\tvar dw_s = this.ch_u.charAt(1)\r\n\t\t, dw_w = this.ch_u.charAt(4)\r\n\t\t, dw_y = this.ch_u.charAt(5);\r\n\r\n\t_int = _int.replace(new RegExp(dw_w + \"{2}\", \"g\"), dw_y);\r\n\r\n\tvar cnarr = _int.split('');\r\n\tvar dw = 0, maxdw = 0;\r\n\tvar rnum_a = [], num_a = [], _num_a = [];\r\n\tfor (var i = 0; i < cnarr.length; i++) {\r\n\t\tvar chr = cnarr[i];\r\n\t\tvar n = 0, u = 0;\r\n\t\tif (~(n = this.ch.indexOf(chr))) {\r\n\t\t\t//_num = _num*10 + n;\r\n\t\t\tif (n > 0) _num_a.unshift(n);\r\n\t\t\t//_num_a.unshift(n);\r\n\t\t} else if (~(u = this.ch_u.indexOf(chr))) {\r\n\t\t\tvar digit = utils.getDigit(u);\r\n\t\t\tif (dw > u) {//正常情况\r\n\t\t\t\tutils.unshiftZero(_num_a, digit);\r\n\t\t\t\tutils.centerArray(num_a, _num_a);\r\n\t\t\t} else if (u >= maxdw) {//后跟大单位\r\n\t\t\t\tif (i == 0) _num_a = [1];\r\n\t\t\t\tutils.centerArray(rnum_a, num_a, _num_a);\r\n\t\t\t\tif (rnum_a.length > 0) utils.unshiftZero(rnum_a, digit);\r\n\t\t\t\tmaxdw = u;\r\n\t\t\t} else {\r\n\t\t\t\tif (_num_a.length == 0 && dw_s == chr) _num_a = [1];\r\n\t\t\t\tutils.centerArray(num_a, _num_a);\r\n\t\t\t\tutils.unshiftZero(num_a, utils.getDigit(u));\r\n\t\t\t\tdw = u;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tutils.centerArray(rnum_a, num_a, _num_a).reverse();\r\n\tif (rnum_a.length == 0) rnum_a.push(0);\r\n\tvar decimal = 0;\r\n\tif (_decimal) {\r\n\t\trnum_a.push('.')\r\n\t\tdecimal = '0.'\r\n\t\tfor (var i = 0; i < _decimal.length; i++) {\r\n\t\t\tdecimal += this.ch.indexOf(_decimal.charAt(i));\r\n\t\t\trnum_a.push(this.ch.indexOf(_decimal.charAt(i)));\r\n\t\t}\r\n\t\tdecimal = +decimal;\r\n\r\n\t}\r\n\tif (_minus) rnum_a.unshift('-');\r\n\treturn parseFloat(rnum_a.join(''));\r\n}\r\n\r\n/**\r\n * 阿拉伯数字转金额\r\n * \r\n * @param {String} num 阿拉伯数字/字符串 , 科学记数法字符串\r\n * @param {Object} options 转换配置\r\n * {\r\n * ww:{万万化开关 | true},\r\n * complete:{完整金额格式 | false},\r\n * outSymbol:{就否输出金额符号 | true} \r\n * }\r\n * @returns String\r\n */\r\nfunction toMoney(num, options) {\r\n\tvar def = { ww: true, complete: false, outSymbol: true };\r\n\tvar result = utils.getNumbResult(num);\r\n\tvar ch_0 = this.ch.charAt(0);\r\n\toptions = typeof options == \"object\" ? options : {};\r\n\tif (!result) { return num; }\r\n\toptions = utils.extend(def, options);\r\n\r\n\tvar _num = result.num\r\n\t\t, _decimal = result.decimal || \"\";\r\n\tvar t_str = options.outSymbol ? this.m_t : \"\"\r\n\t\t, zs_str = _decimal ? \"\" : this.m_z\r\n\t\t, xs_str = \"\";\r\n\r\n\tif (options.complete) {\r\n\t\tfor (var i = 1; i < this.m_u.length; i++) {\r\n\t\t\txs_str += CL.call(this, _decimal.charAt(i - 1) || \"0\") + this.m_u.charAt(i);\r\n\t\t}\r\n\t\tzs_str = CL.call(this, _num, options) + this.m_u.charAt(0);\r\n\t} else {\r\n\t\t_decimal = _decimal.substr(0, this.m_u.length-1); \r\n\t\t_decimal = utils.clearZero(_decimal, \"0\", \"$\"); //去除尾部的0\r\n\t\tif (_decimal) {\r\n\t\t\tvar mark_0;\r\n\t\t\tfor (var i = 0; i < this.m_u.length - 1; i++) {\r\n\t\t\t\tif (_decimal.charAt(i) && _decimal.charAt(i) != \"0\") {\r\n\t\t\t\t\txs_str += CL.call(this, _decimal.charAt(i)) + this.m_u.charAt(i + 1);\r\n\t\t\t\t\tmark_0 = false;\r\n\t\t\t\t}\r\n\t\t\t\tif (_decimal.charAt(i) === \"0\" && !mark_0) {\r\n\t\t\t\t\tif (i != 0 || _num != \"0\") xs_str += ch_0; //当整为0时,小数前无需加零\r\n\t\t\t\t\tmark_0 = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//if(_num == \"0\"){xs_str = utils.clearZero(xs_str,ch_0,\"^\")}\r\n\t\t}\r\n\t\tif (_num != \"0\" || zs_str || !xs_str) {\r\n\t\t\tzs_str = CL.call(this, _num, options) + this.m_u.charAt(0) + zs_str;\r\n\t\t}\r\n\t}\r\n\treturn t_str + zs_str + xs_str;\r\n}\r\n\r\nmodule.exports = {\r\n\tCL: CL,\r\n\tunCL: unCL,\r\n\ttoMoney: toMoney\r\n}","module.exports = {\r\n ch: '零一二三四五六七八九'\r\n ,ch_u: '个十百千万亿'\r\n ,ch_f: '负'\r\n ,ch_d: '点'\r\n}","module.exports = {\r\n ch: '零壹贰叁肆伍陆柒捌玖'\r\n ,ch_u: '个拾佰仟万亿'\r\n ,ch_f: '负'\r\n ,ch_d: '点'\r\n ,m_t: '人民币'\r\n ,m_z: '整'\r\n ,m_u: '元角分'\r\n}","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","var BufferUtil = require('../utils/buffer')\nvar Utils = require('./utils')\nvar ECLevel = require('./error-correction-level')\nvar BitBuffer = require('./bit-buffer')\nvar BitMatrix = require('./bit-matrix')\nvar AlignmentPattern = require('./alignment-pattern')\nvar FinderPattern = require('./finder-pattern')\nvar MaskPattern = require('./mask-pattern')\nvar ECCode = require('./error-correction-code')\nvar ReedSolomonEncoder = require('./reed-solomon-encoder')\nvar Version = require('./version')\nvar FormatInfo = require('./format-info')\nvar Mode = require('./mode')\nvar Segments = require('./segments')\nvar isArray = require('isarray')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n var size = matrix.size\n var pos = FinderPattern.getPositions(version)\n\n for (var i = 0; i < pos.length; i++) {\n var row = pos[i][0]\n var col = pos[i][1]\n\n for (var r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (var c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n var size = matrix.size\n\n for (var r = 8; r < size - 8; r++) {\n var value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n var pos = AlignmentPattern.getPositions(version)\n\n for (var i = 0; i < pos.length; i++) {\n var row = pos[i][0]\n var col = pos[i][1]\n\n for (var r = -2; r <= 2; r++) {\n for (var c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n var size = matrix.size\n var bits = Version.getEncodedBits(version)\n var row, col, mod\n\n for (var i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n var size = matrix.size\n var bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n var i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Buffer} data Data codewords\n */\nfunction setupData (matrix, data) {\n var size = matrix.size\n var inc = -1\n var row = size - 1\n var bitIndex = 7\n var byteIndex = 0\n\n for (var col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (var c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n var dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Buffer} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n var buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n var totalCodewords = Utils.getSymbolTotalCodewords(version)\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n var remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (var i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Buffer} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n var totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n var dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n var ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n var blocksInGroup2 = totalCodewords % ecTotalBlocks\n var blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n var totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n var dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n var dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n var ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n var rs = new ReedSolomonEncoder(ecCount)\n\n var offset = 0\n var dcData = new Array(ecTotalBlocks)\n var ecData = new Array(ecTotalBlocks)\n var maxDataSize = 0\n var buffer = BufferUtil.from(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (var b = 0; b < ecTotalBlocks; b++) {\n var dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n var data = BufferUtil.alloc(totalCodewords)\n var index = 0\n var i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n var segments\n\n if (isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n var estimatedVersion = version\n\n if (!estimatedVersion) {\n var rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments,\n errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n var bestVersion = Version.getBestVersionForData(segments,\n errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n var dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n var moduleCount = Utils.getSymbolSize(version)\n var modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n var errorCorrectionLevel = ECLevel.M\n var version\n var mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n var bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (var i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n var bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","var BufferUtil = require('../utils/buffer')\n\n/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = BufferUtil.alloc(size * size)\n this.reservedBit = BufferUtil.alloc(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n var index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nvar getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n var posCount = Math.floor(version / 7) + 2\n var size = getSymbolSize(version)\n var intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n var positions = [size - 7] // Last coord is always (size - 7)\n\n for (var i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * var pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n var coords = []\n var pos = exports.getRowColCoords(version)\n var posLength = pos.length\n\n for (var i = 0; i < posLength; i++) {\n for (var j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","var getSymbolSize = require('./utils').getSymbolSize\nvar FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n var size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nvar PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n var size = data.size\n var points = 0\n var sameCountCol = 0\n var sameCountRow = 0\n var lastCol = null\n var lastRow = null\n\n for (var row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (var col = 0; col < size; col++) {\n var module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n var size = data.size\n var points = 0\n\n for (var row = 0; row < size - 1; row++) {\n for (var col = 0; col < size - 1; col++) {\n var last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n var size = data.size\n var points = 0\n var bitsCol = 0\n var bitsRow = 0\n\n for (var row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (var col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n var darkCount = 0\n var modulesCount = data.data.length\n\n for (var i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n var k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n var size = data.size\n\n for (var col = 0; col < size; col++) {\n for (var row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n var numPatterns = Object.keys(exports.Patterns).length\n var bestPattern = 0\n var lowerPenalty = Infinity\n\n for (var p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n var penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","var BufferUtil = require('../utils/buffer')\nvar Polynomial = require('./polynomial')\nvar Buffer = require('buffer').Buffer\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Buffer} data Buffer containing input data\n * @return {Buffer} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n var pad = BufferUtil.alloc(this.degree)\n var paddedData = Buffer.concat([data, pad], data.length + this.degree)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n var remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n var start = this.degree - remainder.length\n if (start > 0) {\n var buff = BufferUtil.alloc(this.degree)\n remainder.copy(buff, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","var BufferUtil = require('../utils/buffer')\nvar GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Buffer} p1 Polynomial\n * @param {Buffer} p2 Polynomial\n * @return {Buffer} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n var coeff = BufferUtil.alloc(p1.length + p2.length - 1)\n\n for (var i = 0; i < p1.length; i++) {\n for (var j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Buffer} divident Polynomial\n * @param {Buffer} divisor Polynomial\n * @return {Buffer} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n var result = BufferUtil.from(divident)\n\n while ((result.length - divisor.length) >= 0) {\n var coeff = result[0]\n\n for (var i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n var offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Buffer} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n var poly = BufferUtil.from([1])\n for (var i = 0; i < degree; i++) {\n poly = exports.mul(poly, [1, GF.exp(i)])\n }\n\n return poly\n}\n","var BufferUtil = require('../utils/buffer')\n\nvar EXP_TABLE = BufferUtil.alloc(512)\nvar LOG_TABLE = BufferUtil.alloc(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n var x = 1\n for (var i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\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 '<Buffer ' + str + '>'\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","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\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","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\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","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","var Utils = require('./utils')\nvar ECCode = require('./error-correction-code')\nvar ECLevel = require('./error-correction-level')\nvar Mode = require('./mode')\nvar VersionCheck = require('./version-check')\nvar isArray = require('isarray')\n\n// Generator polynomial used to encode version information\nvar G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nvar G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n var totalBits = 0\n\n segments.forEach(function (data) {\n var reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n var length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n var totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n var usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n var seg\n\n var ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n var d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","var Utils = require('./utils')\n\nvar G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nvar G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nvar G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n var data = ((errorCorrectionLevel.bit << 3) | mask)\n var d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","var Mode = require('./mode')\nvar NumericData = require('./numeric-data')\nvar AlphanumericData = require('./alphanumeric-data')\nvar ByteData = require('./byte-data')\nvar KanjiData = require('./kanji-data')\nvar Regex = require('./regex')\nvar Utils = require('./utils')\nvar dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n var segments = []\n var result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n var numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n var alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n var byteSegs\n var kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n var segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n var prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n var nodes = []\n for (var i = 0; i < segs.length; i++) {\n var seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n var table = {}\n var graph = {'start': {}}\n var prevNodeIds = ['start']\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeGroup = nodes[i]\n var currentNodeIds = []\n\n for (var j = 0; j < nodeGroup.length; j++) {\n var node = nodeGroup[j]\n var key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (var n = 0; n < prevNodeIds.length; n++) {\n var prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]]['end'] = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n var mode\n var bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n var segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n var nodes = buildNodes(segs)\n var graph = buildGraph(nodes, version)\n var path = dijkstra.find_path(graph.map, 'start', 'end')\n\n var optimizedSegs = []\n for (var i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","var Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n var i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n var remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","var Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nvar ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n var i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n var value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","var BufferUtil = require('../utils/buffer')\nvar Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n this.data = BufferUtil.from(data)\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (var i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","var Mode = require('./mode')\nvar Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n var i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n var value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin <self@wyattbaldwin.com>\n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","var Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n var opts = options\n var canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n var size = Utils.getImageWidth(qrData.modules.size, opts)\n\n var ctx = canvasEl.getContext('2d')\n var image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n var opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n var canvasEl = exports.render(qrData, canvas, opts)\n\n var type = opts.type || 'image/png'\n var rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","var Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n var alpha = color.a / 255\n var str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n var str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n var path = ''\n var moveBy = 0\n var newRow = false\n var lineLength = 0\n\n for (var i = 0; i < data.length; i++) {\n var col = Math.floor(i % size)\n var row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n var opts = Utils.getOptions(options)\n var size = qrData.modules.size\n var data = qrData.modules.data\n var qrcodesize = size + opts.margin * 2\n\n var bg = !opts.color.light.a\n ? ''\n : '<path ' + getColorAttrib(opts.color.light, 'fill') +\n ' d=\"M0 0h' + qrcodesize + 'v' + qrcodesize + 'H0z\"/>'\n\n var path =\n '<path ' + getColorAttrib(opts.color.dark, 'stroke') +\n ' d=\"' + qrToPath(data, size, opts.margin) + '\"/>'\n\n var viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n var width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n var svgTag = '<svg xmlns=\"http://www.w3.org/2000/svg\" ' + width + viewBox + ' shape-rendering=\"crispEdges\">' + bg + path + '</svg>\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\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","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\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","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\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","var CRC = {\n CRC16: null,\n isArray: null,\n ToCRC16: null,\n ToModbusCRC16: null,\n strToByte: null,\n convertChinese: null,\n filterChinese: null,\n strToHex: null,\n padLeft: null,\n toString: null\n};\nCRC.CRC16 = function (data) {\n var len = data.length;\n if (len > 0) {\n var crc = 0xFFFF;\n for (var i = 0; i < len; i++) {\n crc = (crc ^ (data[i]));\n for (var j = 0; j < 8; j++) {\n crc = (crc & 1) != 0 ? ((crc >> 1) ^ 0xA001) : (crc >> 1);\n }\n }\n var hi = ((crc & 0xFF00) >> 8); //高位置\n var lo = (crc & 0x00FF); //低位置\n return [hi, lo];\n }\n return [0, 0];\n};\nCRC.isArray = function (arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n};\nCRC.ToCRC16 = function (str, isReverse) {\n return CRC.toString(CRC.CRC16(CRC.isArray(str) ? str : CRC.strToByte(str)), isReverse);\n};\nCRC.ToModbusCRC16 = function (str, isReverse) {\n return CRC.toString(CRC.CRC16(CRC.isArray(str) ? str : CRC.strToHex(str)), isReverse);\n};\nCRC.strToByte = function (str) {\n var tmp = str.split(''), arr = [];\n for (var i = 0, c = tmp.length; i < c; i++) {\n var j = encodeURI(tmp[i]);\n if (j.length == 1) {\n arr.push(j.charCodeAt(0));\n }\n else {\n var b = j.split('%');\n for (var m = 1; m < b.length; m++) {\n arr.push(parseInt('0x' + b[m]));\n }\n }\n }\n return arr;\n};\nCRC.convertChinese = function (str) {\n var tmp = str.split(''), arr = [];\n for (var i = 0, c = tmp.length; i < c; i++) {\n var s = tmp[i].charCodeAt();\n if (s <= 0 || s >= 127) {\n arr.push(s.toString(16));\n }\n else {\n arr.push(tmp[i]);\n }\n }\n return arr;\n};\nCRC.filterChinese = function (str) {\n var tmp = str.split(''), arr = [];\n for (var i = 0, c = tmp.length; i < c; i++) {\n var s = tmp[i].charCodeAt();\n if (s > 0 && s < 127) {\n arr.push(tmp[i]);\n }\n }\n return arr;\n};\nCRC.strToHex = function (hex, isFilterChinese) {\n hex = isFilterChinese ? CRC.filterChinese(hex).join('') : CRC.convertChinese(hex).join('');\n //清除所有空格\n hex = hex.replace(/\\s/g, \"\");\n //若字符个数为奇数,补一个0\n hex += hex.length % 2 != 0 ? \"0\" : \"\";\n var c = hex.length / 2, arr = [];\n for (var i = 0; i < c; i++) {\n arr.push(parseInt(hex.substr(i * 2, 2), 16));\n }\n return arr;\n};\nCRC.padLeft = function (s, w, pc) {\n if (pc == undefined) {\n pc = '0';\n }\n for (var i = 0, c = w - s.length; i < c; i++) {\n s = pc + s;\n }\n return s;\n};\nCRC.toString = function (arr, isReverse) {\n if (typeof isReverse == 'undefined') {\n isReverse = true;\n }\n var hi = arr[0], lo = arr[1];\n return CRC.padLeft((isReverse ? hi + lo * 0x100 : hi * 0x100 + lo).toString(16).toUpperCase(), 4, '0');\n};\nexport var CRC16 = CRC;\n","import nzhcn from 'nzh/cn';\n/**\n * 获取字符串长度(支持中英文获取字符长度)\n * @param str\n * @returns {*}\n */\nexport var getMixLength = function (str) {\n if (str === void 0) { str = ''; }\n if (typeof str === 'number') {\n str = str + '';\n }\n if (str === null || str === undefined) {\n str = '';\n }\n var realLength = 0, len = str.length, charCode = -1;\n for (var i = 0; i < len; i++) {\n charCode = str.charCodeAt(i);\n if (charCode >= 0 && charCode <= 128)\n realLength += 1;\n else\n realLength += 2;\n }\n return realLength;\n};\n/*金额小写转大写*/\nexport var digitUppercase = function (currencyDigits) {\n return nzhcn.toMoney(currencyDigits, { outSymbol: false });\n};\n// 拆分数组至多段\nexport var arrayGroup = function (array, subNum) {\n var index = 0;\n var newArray = [];\n while (index < array.length) {\n newArray.push(array.slice(index, index += subNum));\n }\n return newArray;\n};\nvar onCount = /** @class */ (function () {\n function onCount() {\n }\n /*\n 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。\n 调用:add(arg1,arg2)\n 返回值:arg1加上arg2的精确结果\n */\n onCount.add = function (arg1, arg2) {\n var r1, r2, m;\n try {\n r1 = arg1.toString().split('.')[1].length;\n }\n catch (e) {\n r1 = 0;\n }\n try {\n r2 = arg2.toString().split('.')[1].length;\n }\n catch (e) {\n r2 = 0;\n }\n m = Math.pow(10, Math.max(r1, r2));\n return (arg1 * m + arg2 * m) / m;\n };\n /*\n 说明:javascript的减法结果会有误差,在两个浮点数相减的时候会比较明显。这个函数返回较为精确的减法结果。\n 调用:sub(arg1,arg2)\n 返回值:arg1减去arg2的精确结果\n */\n onCount.sub = function (arg1, arg2) {\n var r1, r2, m, n;\n try {\n r1 = arg1.toString().split('.')[1].length;\n }\n catch (e) {\n r1 = 0;\n }\n try {\n r2 = arg2.toString().split('.')[1].length;\n }\n catch (e) {\n r2 = 0;\n }\n m = Math.pow(10, Math.max(r1, r2));\n //last modify by deeka\n //动态控制精度长度\n n = (r1 >= r2) ? r1 : r2;\n return ((arg1 * m - arg2 * m) / m).toFixed(n);\n };\n /*\n 说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。\n 调用:mul(arg1,arg2)\n 返回值:arg1乘以arg2的精确结果\n */\n onCount.mul = function (arg1, arg2) {\n var m = 0, s1 = arg1.toString(), s2 = arg2.toString();\n try {\n m += s1.split('.')[1].length;\n }\n catch (e) {\n }\n try {\n m += s2.split('.')[1].length;\n }\n catch (e) {\n }\n return Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / Math.pow(10, m);\n };\n /*\n 说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。\n 调用:div(arg1,arg2)\n 返回值:arg1除以arg2的精确结果\n */\n onCount.div = function (arg1, arg2) {\n var t1 = 0, t2 = 0, r1, r2;\n try {\n t1 = arg1.toString().split('.')[1].length;\n }\n catch (e) {\n }\n try {\n t2 = arg2.toString().split('.')[1].length;\n }\n catch (e) {\n }\n r1 = Number(arg1.toString().replace('.', ''));\n r2 = Number(arg2.toString().replace('.', ''));\n return (r1 / r2) * Math.pow(10, t2 - t1);\n };\n return onCount;\n}());\nexport { onCount };\nexport var hasOwnProperty = function (obj, key) {\n if (obj && obj.hasOwnProperty(key)) {\n return true;\n }\n return false;\n};\n//isLength:检查 value 是否为有效的类数组长度\nexport var isLength = function (value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= Number.MAX_SAFE_INTEGER;\n};\n//isFunction:检查 value 是不是函数\nexport var isFunction = function (value) {\n return Object.prototype.toString.call(value) === '[object Function]';\n};\n//isArrayLike:检查 value 是否是类数组\nexport var isArrayLike = function (value) {\n return value != null && isLength(value.length) && !isFunction(value);\n};\n//isPlainObject:判断数据是不是Object类型的数据\nexport var isPlainObject = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n};\n// isEmpty:检查 value 是否为空\nexport var isEmpty = function (value) {\n if (value === null) {\n return true;\n }\n if (value === undefined) {\n return true;\n }\n if (isArrayLike(value)) {\n return !value.length;\n }\n else if (isPlainObject(value)) {\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n }\n return false;\n};\nexport var ConvertNumber = function (number, count, isSavePoint) {\n if (count === void 0) { count = 2; }\n if (isSavePoint === void 0) { isSavePoint = false; }\n if (number === undefined || number === null || number === '') {\n return number;\n }\n if (typeof number == 'string' && number.includes(',')) {\n return number;\n }\n number = +number;\n if (!isNaN(number)) {\n if ((\"\" + number).includes('.')) {\n var _inter = (\"\" + number).split('.')[0];\n var _point = '0.' + (\"\" + number).split('.')[1];\n var numPoint = Number(_point);\n var strPoint = '';\n if (!isSavePoint) {\n strPoint = numPoint.toFixed(count);\n strPoint = '.' + (\"\" + strPoint).split('.')[1];\n number = _inter.replace(/\\B(?=(\\d{3})+\\b)/g, ',') + strPoint;\n }\n else {\n number = _inter.replace(/\\B(?=(\\d{3})+\\b)/g, ',') + numPoint;\n }\n }\n else {\n // number = number.toFixed(count).replace(/\\d(?=(?:\\d{3})+\\b)/g, '$&,')\n // number = (number.toFixed(count) + '').replace(/\\d{1,3}(?=(\\d{3})+(\\.\\d*)?$)/g, '$&,')\n number = number.toFixed(count).replace(/(\\d)(?=(\\d{3})+\\.)/g, '$1,');\n }\n }\n return number;\n};\n/**\n * 字段绘制方法\n * @param ctx getContext(\"2d\") 对象\n * @param lineHeight 段落文本行高\n * @param byteLength 设置单字节文字一行内的数量\n * @param text 写入画面的段落文本\n * @param startLeft 开始绘制文本的 x 坐标位置(相对于画布)\n * @param startTop 开始绘制文本的 y 坐标位置(相对于画布)\n * @param ctxFillStyle 字体颜色\n * @param ctxFont 字体\n * @param textAlign 是否设置 1居中 0 左对齐 2 右对齐\n */\nexport var drawCanvasText = function (ctx, lineHeight, byteLength, text, startLeft, startTop, ctxFillStyle, ctxFont, textAlign) {\n if (text === void 0) { text = ''; }\n if (typeof text === 'number') {\n text = text + '';\n }\n if (text === null || text === undefined) {\n text = '';\n }\n function getTrueLength(str) {\n var len = str.length, truelen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n truelen += 2;\n }\n else {\n truelen += 1;\n }\n }\n return truelen;\n }\n function cutString(str, leng) {\n var len = str.length, tlen = len, nlen = 0;\n var isNextLine = false;\n for (var x = 0; x < len; x++) {\n isNextLine = str.substr(x, 1) === '\\n';\n if (isNextLine) {\n tlen = x;\n break;\n }\n if (str.charCodeAt(x) > 128) {\n if (nlen + 2 < leng) {\n nlen += 2;\n }\n else {\n tlen = x;\n break;\n }\n }\n else {\n if (nlen + 1 < leng) {\n nlen += 1;\n }\n else {\n tlen = x;\n break;\n }\n }\n }\n return ({ tlen: tlen, isNextLine: isNextLine });\n }\n if (textAlign === 1) {\n if (text.length < byteLength) {\n ctx.textAlign = 'center';\n }\n }\n else if (textAlign === 0) {\n ctx.textAlign = 'left';\n }\n else if (textAlign === 2) {\n ctx.textAlign = 'right';\n }\n for (var i = 1; getTrueLength(text) > 0; i++) {\n var _a = cutString(text, byteLength), tl = _a.tlen, isNextLine = _a.isNextLine;\n ctx.fillStyle = ctxFillStyle; //字体颜色\n ctx.font = ctxFont; //字体 \n ctx.textBaseline = 'top';\n ctx.fillText(text.substr(0, tl).replace(/^\\s+|\\s+$/, \"\"), startLeft, (i - 1) * lineHeight + startTop);\n if (isNextLine) { // \b换行 要把/n 去掉 所以加了两个字符\n text = text.substr(tl + 1);\n }\n else {\n text = text.substr(tl);\n }\n }\n ctx.save();\n};\nexport var taxOfficeList = [\n { taxOfficeCode: '3100', taxOffice: '上海国税', taxProvince: '上海市税务局', title: '上海' },\n { taxOfficeCode: '1100', taxOffice: '北京国税', taxProvince: '北京市税务局', title: '北京' },\n { taxOfficeCode: '4200', taxOffice: '湖北国税', taxProvince: '湖北省税务局', title: '湖北' },\n { taxOfficeCode: '4300', taxOffice: '湖南国税', taxProvince: '湖南省税务局', title: '湖南' },\n { taxOfficeCode: '1300', taxOffice: '河北国税', taxProvince: '河北省税务局', title: '河北' },\n { taxOfficeCode: '4100', taxOffice: '河南国税', taxProvince: '河南省税务局', title: '河南' },\n { taxOfficeCode: '6100', taxOffice: '陕西国税', taxProvince: '陕西省税务局', title: '陕西' },\n { taxOfficeCode: '3200', taxOffice: '江苏国税', taxProvince: '江苏省税务局', title: '江苏' },\n { taxOfficeCode: '3300', taxOffice: '浙江国税', taxProvince: '浙江省税务局', title: '浙江' },\n { taxOfficeCode: '3302', taxOffice: '宁波国税', taxProvince: '宁波市税务局', title: '宁波' },\n { taxOfficeCode: '6200', taxOffice: '甘肃国税', taxProvince: '甘肃省税务局', title: '甘肃' },\n { taxOfficeCode: '5300', taxOffice: '云南国税', taxProvince: '云南省税务局', title: '云南' },\n { taxOfficeCode: '3500', taxOffice: '福建国税', taxProvince: '福建省税务局', title: '福建' },\n { taxOfficeCode: '3502', taxOffice: '厦门国税', taxProvince: '厦门市税务局', title: '厦门' },\n { taxOfficeCode: '2200', taxOffice: '吉林国税', taxProvince: '吉林省税务局', title: '吉林' },\n { taxOfficeCode: '2100', taxOffice: '辽宁国税', taxProvince: '辽宁省税务局', title: '辽宁' },\n { taxOfficeCode: '6400', taxOffice: '宁夏国税', taxProvince: '宁夏回族自治区税务局', title: '宁夏' },\n { taxOfficeCode: '1200', taxOffice: '天津国税', taxProvince: '天津市税务局', title: '天津' },\n { taxOfficeCode: '4600', taxOffice: '海南国税', taxProvince: '海南省税务局', title: '海南' },\n { taxOfficeCode: '2102', taxOffice: '大连国税', taxProvince: '大连市税务局', title: '大连' },\n { taxOfficeCode: '3700', taxOffice: '山东国税', taxProvince: '山东省税务局', title: '山东' },\n { taxOfficeCode: '3702', taxOffice: '青岛国税', taxProvince: '青岛市税务局', title: '青岛' },\n { taxOfficeCode: '4400', taxOffice: '广东国税', taxProvince: '广东省税务局', title: '广东' },\n { taxOfficeCode: '4403', taxOffice: '深圳国税', taxProvince: '深圳市税务局', title: '深圳' },\n { taxOfficeCode: '5200', taxOffice: '贵州国税', taxProvince: '贵州省税务局', title: '贵州' },\n { taxOfficeCode: '6300', taxOffice: '青海国税', taxProvince: '青海省税务局', title: '青海' },\n { taxOfficeCode: '6500', taxOffice: '新疆国税', taxProvince: '新疆维吾尔自治区税务局', title: '新疆' },\n { taxOfficeCode: '4500', taxOffice: '广西国税', taxProvince: '广西壮族自治区税务局', title: '广西' },\n { taxOfficeCode: '5100', taxOffice: '四川国税', taxProvince: '四川省税务局', title: '四川' },\n { taxOfficeCode: '1400', taxOffice: '山西国税', taxProvince: '山西省税务局', title: '山西' },\n { taxOfficeCode: '5000', taxOffice: '重庆国税', taxProvince: '重庆市税务局', title: '重庆' },\n { taxOfficeCode: '2300', taxOffice: '黑龙江国税', taxProvince: '黑龙江税务局', title: '黑龙江' },\n { taxOfficeCode: '3400', taxOffice: '安徽国税', taxProvince: '安徽省税务局', title: '安徽' },\n { taxOfficeCode: '1500', taxOffice: '内蒙国税', taxProvince: '内蒙古自治区税务局', title: '内蒙古' },\n { taxOfficeCode: '3600', taxOffice: '江西国税', taxProvince: '上海市税务局', title: '上海' },\n { taxOfficeCode: '5400', taxOffice: '西藏国税', taxProvince: '西藏自治区税务局', title: '西藏' }\n];\n/**\n *\n * @param text 拿到的参数,1、2、3...\n * @param config 数组,需要匹配的参数\n * @param key 要匹配的数组里的key值\n * @param field 要返回的数组里的某个key对应的值 默认 label\n * @returns\n */\nexport var renderTextWithConfig = function (text, config, key, field) {\n if (key === void 0) { key = 'value'; }\n if (field === void 0) { field = 'label'; }\n return !text && text !== 0\n ? null\n : (config || []).find(function (t) { return t[key] === text; })\n ? (config || []).find(function (t) { return t[key] === text; })[field]\n : text;\n};\n","import { CRC16 } from '@/utils/crc';\nimport { getMixLength, digitUppercase, isEmpty, renderTextWithConfig, taxOfficeList } from '@/utils/basicUtil';\n// var QRCode = require('qrcode')\nvar changeDpiDataUrl = require('changedpi').changeDpiDataUrl;\n// @ts-ignore\nimport QRCode from 'qrcode';\nfunction drawSpecialTag(ctx, data, showSample, samplePosition) {\n function invoiceSampleText(invoiceData) {\n var invoiceStatus = invoiceData.invoiceStatus, status = invoiceData.status, amountWithTax = invoiceData.amountWithTax, amount = invoiceData.amount;\n function drawSpecialLine(_a) {\n var startX = _a.startX, startY = _a.startY, ctx = _a.ctx, points = _a.points, _b = _a.lineWidth, lineWidth = _b === void 0 ? 1 : _b, _c = _a.color, color = _c === void 0 ? '#975124' : _c;\n ctx.beginPath();\n ctx.moveTo(startX, startY);\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n if (points && points.length) {\n points.forEach(function (item) {\n ctx.lineTo(item.pointX, item.pointY);\n });\n }\n ctx.stroke();\n ctx.closePath();\n // ctx.save()\n }\n ctx.save();\n //异次元空间 重置原点,默认是画布的(0,0)点\n ctx.translate(940, 582);\n //设置旋转角度 参数时弧度 角度0--360 弧度=角度*Math.PI/180\n ctx.rotate(-30 * Math.PI / 180);\n // // 绘制圆的路径**\n if (samplePosition === 'top') {\n var points = [\n { pointX: 400, pointY: -420 },\n { pointX: 400, pointY: -260 },\n { pointX: 45, pointY: -260 },\n { pointX: 38, pointY: -420 },\n ];\n var innerPoints = [\n { pointX: 390, pointY: -410 },\n { pointX: 390, pointY: -270 },\n { pointX: 55, pointY: -270 },\n { pointX: 48, pointY: -410 },\n ];\n drawSpecialLine({ startX: 34, startY: -420, ctx: ctx, points: points, lineWidth: 8, color: '#F17171' });\n drawSpecialLine({ startX: 46, startY: -410, ctx: ctx, points: innerPoints, lineWidth: 4, color: '#F17171' });\n drawInvoiceText(ctx, 18, 30, '样张', 220, -380, '#F17171', 'normal 72px SimHei', 1);\n if (invoiceStatus === 20 || status === 20) {\n drawInvoiceText(ctx, 18, 42, '已红冲', 290, -310, '#F17171', 'normal 32px SimHei', 0);\n }\n }\n else {\n var points = [\n { pointX: 200, pointY: -85 },\n { pointX: 200, pointY: 85 },\n { pointX: -200, pointY: 85 },\n { pointX: -196, pointY: -85 },\n ];\n var innerPoints = [\n { pointX: 190, pointY: -75 },\n { pointX: 190, pointY: 75 },\n { pointX: -190, pointY: 75 },\n { pointX: -186, pointY: -75 },\n ];\n drawSpecialLine({ startX: -200, startY: -85, ctx: ctx, points: points, lineWidth: 8, color: '#F17171' });\n drawSpecialLine({ startX: -188, startY: -75, ctx: ctx, points: innerPoints, lineWidth: 4, color: '#F17171' });\n drawInvoiceText(ctx, 18, 30, '样张', 0, -36, '#F17171', 'normal 72px SimHei', 1);\n if (invoiceStatus === 20 || status === 20) {\n drawInvoiceText(ctx, 18, 42, '已红冲', 74, 26, '#F17171', 'normal 32px SimHei', 0);\n }\n }\n //将旋转之后的元素返回原画布\n ctx.restore();\n ctx.rotate(30 * Math.PI / 180);\n ctx.translate(-940, -582);\n if (invoiceStatus === 30 || status === 30) {\n drawInvoiceText(ctx, 18, 42, '作废', 211, 92, '#000', 'normal 32px SimHei', 0);\n }\n if (amountWithTax < 0 && amount < 0) {\n drawInvoiceText(ctx, 18, 42, '销项负数', 211, 92, '#000', 'normal 28px SimHei', 0);\n }\n if (data.specialFlag === 1) {\n drawInvoiceText(ctx, 18, 42, '成品油', 211, 36, '#000', 'normal 28px SimHei', 0);\n }\n if (data.specialFlag === 3) {\n drawInvoiceText(ctx, 18, 42, '机动车', 211, 36, '#000', 'normal 28px SimHei', 0);\n }\n }\n if (showSample) {\n invoiceSampleText(data);\n }\n}\n/*\n* startX 起点x坐标\n* startY 起点y坐标\n* ctx canvas画笔\n* points 点坐标集,用于连画操作,非必填\n*/\nfunction drawLine(_a) {\n var startX = _a.startX, startY = _a.startY, ctx = _a.ctx, points = _a.points, _b = _a.lineWidth, lineWidth = _b === void 0 ? 1 : _b, _c = _a.color, color = _c === void 0 ? '#975124' : _c;\n ctx.beginPath();\n ctx.moveTo(startX, startY);\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n if (points && points.length) {\n points.forEach(function (item) {\n ctx.lineTo(item.pointX, item.pointY);\n });\n }\n ctx.stroke();\n ctx.closePath();\n ctx.save();\n}\nfunction drawAllLines(ctx) {\n var points = [\n { pointX: 1164, pointY: 170 },\n { pointX: 1164, pointY: 702 },\n { pointX: 26, pointY: 702 },\n { pointX: 26, pointY: 170 },\n ];\n drawLine({ startX: 26, startY: 170, ctx: ctx, points: points, lineWidth: 1, color: '#975124' });\n drawLine({ startX: 388, startY: 100, ctx: ctx, points: [{ pointX: 801, pointY: 100 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 388, startY: 104, ctx: ctx, points: [{ pointX: 801, pointY: 104 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 26, startY: 294, ctx: ctx, points: [{ pointX: 1164, pointY: 294 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 26, startY: 544, ctx: ctx, points: [{ pointX: 1164, pointY: 544 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 26, startY: 590, ctx: ctx, points: [{ pointX: 1164, pointY: 590 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 72, startY: 170, ctx: ctx, points: [{ pointX: 72, pointY: 294 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 678, startY: 170, ctx: ctx, points: [{ pointX: 678, pointY: 294 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 708, startY: 170, ctx: ctx, points: [{ pointX: 708, pointY: 294 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 320, startY: 294, ctx: ctx, points: [{ pointX: 320, pointY: 590 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 468, startY: 294, ctx: ctx, points: [{ pointX: 468, pointY: 544 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 536, startY: 294, ctx: ctx, points: [{ pointX: 536, pointY: 544 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 650, startY: 294, ctx: ctx, points: [{ pointX: 650, pointY: 544 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 762, startY: 294, ctx: ctx, points: [{ pointX: 762, pointY: 544 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 932, startY: 294, ctx: ctx, points: [{ pointX: 932, pointY: 544 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 996, startY: 294, ctx: ctx, points: [{ pointX: 996, pointY: 544 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 72, startY: 590, ctx: ctx, points: [{ pointX: 72, pointY: 702 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 678, startY: 590, ctx: ctx, points: [{ pointX: 678, pointY: 702 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 706, startY: 590, ctx: ctx, points: [{ pointX: 706, pointY: 702 }], lineWidth: 1, color: '#975124' });\n}\nfunction drawInvoiceTexts(ctx, data) {\n var invoiceType = data.invoiceType, invoiceCode = data.invoiceCode;\n function drawInvoiceType() {\n var taxOfficeCode = '';\n if (invoiceCode && invoiceCode.length === 12) {\n taxOfficeCode = invoiceCode ? invoiceCode.substr(1, 4) : invoiceCode;\n }\n else {\n taxOfficeCode = invoiceCode ? invoiceCode.substr(0, 4) : invoiceCode;\n }\n var title = renderTextWithConfig(taxOfficeCode, taxOfficeList, 'taxOfficeCode', 'title') || '';\n if (title === taxOfficeCode) {\n title = '';\n }\n var text = title + \"\\u589E\\u503C\\u7A0E\\u7535\\u5B50\\u666E\\u901A\\u53D1\\u7968\";\n if (Number(invoiceType) === 1) {\n text = title + \"\\u589E\\u503C\\u7A0E\\u4E13\\u7528\\u53D1\\u7968\";\n }\n else if (Number(invoiceType) === 2) {\n text = title + \"\\u589E\\u503C\\u7A0E\\u666E\\u901A\\u53D1\\u7968\";\n }\n else if (Number(invoiceType) === 4) {\n text = title + \"\\u589E\\u503C\\u7A0E\\u7535\\u5B50\\u4E13\\u7528\\u53D1\\u7968\";\n }\n drawInvoiceText(ctx, 18, 30, text, 596, 38, '#9C5223', 'normal 38px KaiTi', 1);\n }\n drawInvoiceType();\n drawInvoiceText(ctx, 18, 30, '机器编号:', 32, 134, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '发票代码:', 842, 40, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '发票号码:', 842, 72, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '开票日期:', 842, 102, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '校验码:', 842, 134, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '购', 40, 198, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '买', 40, 226, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '方', 40, 252, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '密', 684, 198, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '码', 684, 226, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '区', 684, 252, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '销', 40, 614, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '售', 40, 640, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '方', 40, 668, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '备', 684, 616, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '注', 684, 662, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '名', 84, 178, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '称:', 174, 178, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '纳税人识别号:', 84, 208, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '地 址、电 话:', 84, 236, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '开户行及账号:', 84, 266, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '项目名称', 132, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '规格型号', 358, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '单位', 484, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '数 量', 570, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '单 价', 684, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '金 额', 828, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '税率', 948, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '税 额', 1058, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '合 计', 134, 520, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '价税合计(大写)', 106, 560, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '(小写)', 864, 560, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '名', 84, 594, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '称:', 174, 594, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '纳税人识别号:', 84, 622, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '地 址、电 话:', 84, 652, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '开户行及账号:', 84, 680, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '收款人:', 40, 710, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '复 核:', 360, 710, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '开票人:', 598, 710, '#9C5223', 'normal 18px KaiTi', 0);\n}\n/*\n//ctx getContext(\"2d\") 对象\n//lineHeight 段落文本行高\n//byteLength 设置单字节文字一行内的数量\n//text 写入画面的段落文本\n//startLeft 开始绘制文本的 x 坐标位置(相对于画布)\n//startTop 开始绘制文本的 y 坐标位置(相对于画布)\n//ctxFillStyle 字体颜色\n//ctxFont 字体\n//textAlign 是否设置\n*/\nfunction drawInvoiceText(ctx, lineHeight, byteLength, text, startLeft, startTop, ctxFillStyle, ctxFont, textAlign) {\n if (text === void 0) { text = ''; }\n if (typeof text === 'number') {\n text = text + '';\n }\n if (text === null || text === undefined) {\n text = '';\n }\n function getTrueLength(str) {\n var len = str.length, truelen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n truelen += 2;\n }\n else {\n truelen += 1;\n }\n }\n return truelen;\n }\n function cutString(str, leng) {\n var len = str.length, tlen = len, nlen = 0;\n var isNextLine = false;\n for (var x = 0; x < len; x++) {\n isNextLine = str.substr(x, 1) === '\\n';\n if (isNextLine) {\n tlen = x;\n break;\n }\n if (str.charCodeAt(x) > 128) {\n if (nlen + 2 < leng) {\n nlen += 2;\n }\n else {\n tlen = x;\n break;\n }\n }\n else {\n if (nlen + 1 < leng) {\n nlen += 1;\n }\n else {\n tlen = x;\n break;\n }\n }\n }\n return ({ tlen: tlen, isNextLine: isNextLine });\n }\n if (textAlign === 1) {\n if (text.length < byteLength) {\n ctx.textAlign = 'center';\n }\n }\n else if (textAlign === 0) {\n ctx.textAlign = 'left';\n }\n else if (textAlign === 2) {\n ctx.textAlign = 'right';\n }\n for (var i = 1; getTrueLength(text) > 0; i++) {\n var _a = cutString(text, byteLength), tl = _a.tlen, isNextLine = _a.isNextLine;\n ctx.fillStyle = ctxFillStyle; //字体颜色\n ctx.font = ctxFont; //字体 \n ctx.textBaseline = 'top';\n ctx.fillText(text.substr(0, tl).replace(/^\\s+|\\s+$/, \"\"), startLeft, (i - 1) * lineHeight + startTop);\n if (isNextLine) { // \b换行 要把/n 去掉 所以加了两个字符\n text = text.substr(tl + 1);\n }\n else {\n text = text.substr(tl);\n }\n }\n ctx.save();\n}\nfunction createQrOnCanvas(data, canvas, callback) {\n // 版本号 01\n // 发票类型 1:增值税专用发票 2:增值税普通发票 3:增值税电子普通发票 4:增值税电子专用发票\n // 发票代码\n // 发票号码\n // 合计金额\n // 开票日期\n // 发票校验码\n // crc\n var invoiceType = data.invoiceType, invoiceCode = data.invoiceCode, invoiceNo = data.invoiceNo, amount = data.amount, drewDate = data.drewDate, checkCode = data.checkCode;\n var type = '10';\n if (Number(invoiceType) === 1) {\n type = '01';\n }\n else if (Number(invoiceType) === 2) {\n type = '04';\n }\n else if (Number(invoiceType) === 3) {\n type = '10';\n }\n else if (Number(invoiceType) === 4) {\n type = '08';\n }\n var dateFormat = new Date(drewDate);\n var year = dateFormat.getFullYear();\n var month = dateFormat.getMonth() + 1;\n var monthStr = month.toString();\n if (month >= 1 && month <= 9) {\n monthStr = '0' + month;\n }\n var day = dateFormat.getDate();\n var dayStr = day.toString();\n if (day >= 0 && day <= 9) {\n dayStr = '0' + day;\n }\n var dateStr = drewDate ? \"\" + year + monthStr + dayStr : '';\n var tempAmount = amount ? Number(amount).toFixed(2) : amount === 0 ? Number(amount).toFixed(2) : amount;\n var content = \"01,\" + type + \",\" + invoiceCode + \",\" + invoiceNo + \",\" + tempAmount + \",\" + dateStr + \",\" + checkCode + \",\";\n var crc = CRC16.ToCRC16(content, true);\n var qrContent = \"\" + content + crc + \",\";\n var opts = {\n errorCorrectionLevel: 'M',\n margin: 0,\n width: 113\n };\n QRCode.toCanvas(canvas, qrContent, opts, function (error) {\n if (error)\n console.error(error);\n console.log('success!');\n callback();\n });\n}\nfunction drawInvoiceMainInfo(ctx, data) {\n var invoiceCode = data.invoiceCode, invoiceNo = data.invoiceNo, drewDate = data.drewDate, checkCode = data.checkCode, machineCode = data.machineCode, invoiceStatus = data.invoiceStatus, status = data.status;\n function drawDate(date) {\n if (!date) {\n return;\n }\n var dateFormat = new Date(date);\n var year = dateFormat.getFullYear();\n var month = dateFormat.getMonth() + 1;\n var monthStr = month.toString();\n if (month >= 1 && month <= 9) {\n monthStr = '0' + month;\n }\n var day = dateFormat.getDate();\n var dayStr = day.toString();\n if (day >= 0 && day <= 9) {\n dayStr = '0' + day;\n }\n var dateStr = year + \"\\u5E74\" + monthStr + \"\\u6708\" + dayStr + \"\\u65E5\";\n drawInvoiceText(ctx, 18, 42, dateStr, 940, 102, '#000000', 'normal 18px SimSun', 0);\n }\n function drawCheckCode(text) {\n if (text === void 0) { text = ''; }\n if (isEmpty(text)) {\n return;\n }\n var cLength = text.length / 4;\n for (var i = 0; i < 4; i++) {\n var checkCodeText = text.substr(i === 0 ? 0 : (cLength * i), cLength);\n drawInvoiceText(ctx, 18, 32, checkCodeText, 940 + i * 50, 134, '#000000', 'normal 18px SimSun', 0);\n }\n }\n drawInvoiceText(ctx, 18, 42, invoiceCode, 940, 40, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 42, invoiceNo, 940, 72, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 42, machineCode, 126, 134, '#000000', 'normal 18px SimSun', 0);\n drawDate(drewDate);\n drawCheckCode(checkCode);\n}\nfunction drawSellerAndPurchaser(ctx, data) {\n var \n // purchaserEmail, \n purchaserName = data.purchaserName, purchaserTaxNo = data.purchaserTaxNo, purchaserAddress = data.purchaserAddress, purchaserTel = data.purchaserTel, purchaserBankName = data.purchaserBankName, purchaserBankAccount = data.purchaserBankAccount, sellerName = data.sellerName, sellerTaxNo = data.sellerTaxNo, sellerAddress = data.sellerAddress, sellerTel = data.sellerTel, sellerBankName = data.sellerBankName, sellerBankAccount = data.sellerBankAccount;\n function calcAndDraw(startX, startY, text) {\n if (getMixLength(text) <= 48) {\n drawInvoiceText(ctx, 18, 49, text, startX, startY, '#000000', 'normal 18px SimSun', 0);\n }\n else if (getMixLength(text) <= 62) {\n drawInvoiceText(ctx, 18, 63, text, startX, startY, '#000000', 'normal 15px SimSun', 0);\n }\n else {\n drawInvoiceText(ctx, 15, 63, text, startX, startY - 4, '#000000', 'normal 15px SimSun', 0);\n }\n }\n calcAndDraw(206, 178, purchaserName);\n drawInvoiceText(ctx, 18, 49, purchaserTaxNo, 206, 204, '#000000', 'normal 24px Courier New', 0);\n calcAndDraw(206, 236, \"\" + (purchaserAddress || '') + (purchaserTel || ''));\n calcAndDraw(206, 266, \"\" + (purchaserBankName || '') + (purchaserBankAccount || ''));\n calcAndDraw(206, 594, sellerName);\n drawInvoiceText(ctx, 18, 49, sellerTaxNo, 206, 618, '#000000', 'normal 24px Courier New', 0);\n calcAndDraw(206, 652, \"\" + (sellerAddress || '') + (sellerTel || ''));\n calcAndDraw(206, 680, \"\" + (sellerBankName || '') + (sellerBankAccount || ''));\n}\nfunction drawCipher(ctx, data) {\n var _a = data.ciphertext, ciphertext = _a === void 0 ? '' : _a;\n if (isEmpty(ciphertext)) {\n return;\n }\n var cLength = ciphertext.length / 4;\n for (var i = 0; i < 4; i++) {\n var text = ciphertext.substr(i === 0 ? 0 : (cLength * i), cLength);\n drawInvoiceText(ctx, 18, 32, text, 740, 178 + i * 30, '#000000', 'normal 24px Courier New', 0);\n }\n}\nfunction drawGoods(ctx, data) {\n var details = data.details, amount = data.amount, taxAmount = data.taxAmount, taxRate = data.taxRate, listFlag = data.listFlag, qdbz = data.qdbz;\n function drawGoodsName(startX, startY, text, newSize) {\n console.log(newSize);\n if (newSize) {\n drawInvoiceText(ctx, 18, 32, text, startX, startY, '#000000', 'normal 18px SimSun', 0);\n }\n else {\n if (getMixLength(text) <= 31) {\n drawInvoiceText(ctx, 18, 32, text, startX, startY, '#000000', 'normal 18px SimSun', 0);\n }\n else if (getMixLength(text) <= 35) {\n drawInvoiceText(ctx, 18, 36, text, startX, startY, '#000000', 'normal 16px SimSun', 0);\n }\n else if (getMixLength(text) <= 40) {\n drawInvoiceText(ctx, 18, 42, text, startX, startY, '#000000', 'normal 14px SimSun', 0);\n }\n else if (getMixLength(text) <= 47) {\n drawInvoiceText(ctx, 18, 48, text, startX, startY, '#000000', 'normal 12px SimSun', 0);\n }\n else if (getMixLength(text) <= 51) {\n drawInvoiceText(ctx, 18, 52, text, startX, startY, '#000000', 'normal 11px SimSun', 0);\n }\n else {\n drawInvoiceText(ctx, 11, 52, text, startX, startY - 4, '#000000', 'normal 11px SimSun', 0);\n }\n }\n }\n function drawSpecification(startX, startY, text) {\n if (getMixLength(text) <= 14) {\n drawInvoiceText(ctx, 18, 15, text, startX, startY, '#000000', 'normal 18px SimSun', 0);\n }\n else if (getMixLength(text) <= 16) {\n drawInvoiceText(ctx, 18, 17, text, startX, startY, '#000000', 'normal 16px SimSun', 0);\n }\n else if (getMixLength(text) <= 19) {\n drawInvoiceText(ctx, 18, 20, text, startX, startY, '#000000', 'normal 13px SimSun', 0);\n }\n else {\n drawInvoiceText(ctx, 12, 22, text, startX, startY - 4, '#000000', 'normal 12px SimSun', 0);\n }\n }\n function drawUnit(startX, startY, text) {\n if (getMixLength(text) <= 7) {\n drawInvoiceText(ctx, 18, 8, text, startX, startY, '#000000', 'normal 18px SimSun', 1);\n }\n else if (getMixLength(text) <= 9) {\n drawInvoiceText(ctx, 18, 10, text, startX, startY, '#000000', 'normal 14px SimSun', 1);\n }\n else if (getMixLength(text) <= 11) {\n drawInvoiceText(ctx, 18, 12, text, startX, startY, '#000000', 'normal 12px SimSun', 1);\n }\n else if (getMixLength(text) <= 13) {\n drawInvoiceText(ctx, 18, 14, text, startX, startY, '#000000', 'normal 10px SimSun', 1);\n }\n else if (getMixLength(text) <= 17) {\n drawInvoiceText(ctx, 18, 18, text, startX, startY, '#000000', 'normal 8px SimSun', 1);\n }\n else {\n drawInvoiceText(ctx, 8, 18, text, startX, startY, '#000000', 'normal 8px SimSun', 1);\n }\n }\n function drawQuantity(startX, startY, text) {\n if (getMixLength(text) <= 10) {\n drawInvoiceText(ctx, 18, 11, text, startX, startY, '#000000', 'normal 18px SimSun', 2);\n }\n else if (getMixLength(text) <= 12) {\n drawInvoiceText(ctx, 18, 13, text, startX, startY, '#000000', 'normal 16px SimSun', 2);\n }\n else if (getMixLength(text) <= 14) {\n drawInvoiceText(ctx, 18, 15, text, startX, startY, '#000000', 'normal 14px SimSun', 2);\n }\n else if (getMixLength(text) <= 16) {\n drawInvoiceText(ctx, 18, 17, text, startX, startY, '#000000', 'normal 12px SimSun', 2);\n }\n else {\n drawInvoiceText(ctx, 12, 17, text, startX, startY, '#000000', 'normal 12px SimSun', 2);\n }\n }\n function drawUnitPrice(startX, startY, text) {\n if (getMixLength(text) <= 10) {\n drawInvoiceText(ctx, 18, 11, text, startX, startY, '#000000', 'normal 18px SimSun', 2);\n }\n else if (getMixLength(text) <= 12) {\n drawInvoiceText(ctx, 18, 13, text, startX, startY, '#000000', 'normal 16px SimSun', 2);\n }\n else if (getMixLength(text) <= 14) {\n drawInvoiceText(ctx, 18, 15, text, startX, startY, '#000000', 'normal 14px SimSun', 2);\n }\n else if (getMixLength(text) <= 16) {\n drawInvoiceText(ctx, 18, 17, text, startX, startY, '#000000', 'normal 12px SimSun', 2);\n }\n else {\n drawInvoiceText(ctx, 12, 17, text, startX, startY, '#000000', 'normal 12px SimSun', 2);\n }\n }\n function drawAmount(startX, startY, text) {\n var temp = text ? Number(text).toFixed(2) : text === 0 ? Number(text).toFixed(2) : text;\n drawInvoiceText(ctx, 18, 18, temp, startX, startY, '#000000', 'normal 18px SimSun', 2);\n }\n function drawTaxRate(startX, startY, text, record) {\n if (record) {\n if (record.taxPre === 0 && record.taxPreType === 1 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '免税';\n }\n else if (record.taxPre === 0 && record.taxPreType === 2 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '不征税';\n }\n else if (typeof text === 'number') {\n text = text * 100 + \"%\";\n }\n }\n else {\n text = text;\n }\n if (getMixLength(text) <= 5) {\n drawInvoiceText(ctx, 18, 6, text, startX, startY, '#000000', 'normal 18px SimSun', 2);\n }\n else if (getMixLength(text) <= 6) {\n drawInvoiceText(ctx, 18, 7, text, startX, startY, '#000000', 'normal 16px SimSun', 2);\n }\n else if (getMixLength(text) <= 7) {\n drawInvoiceText(ctx, 18, 8, text, startX, startY, '#000000', 'normal 14px SimSun', 2);\n }\n else if (getMixLength(text) <= 8) {\n drawInvoiceText(ctx, 18, 9, text, startX, startY, '#000000', 'normal 12px SimSun', 2);\n }\n else {\n drawInvoiceText(ctx, 12, 9, text, startX, startY, '#000000', 'normal 12px SimSun', 2);\n }\n }\n function drawTaxAmount(startX, startY, text, record) {\n if (record.taxPre === 0 && record.taxPreType === 1 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '***';\n }\n else if (record.taxPre === 0 && record.taxPreType === 2 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '***';\n }\n else {\n text = isEmpty(text) ? '' : text === 0 ? '***' : Number(text).toFixed(2);\n }\n drawInvoiceText(ctx, 18, 18, text, startX, startY, '#000000', 'normal 18px SimSun', 2);\n }\n function drawTotalAmount(startX, startY, text) {\n var temp = text ? Number(text).toFixed(2) : text === 0 ? Number(text).toFixed(2) : text;\n drawInvoiceText(ctx, 18, 18, temp, startX, startY, '#000000', 'normal 18px Courier New', 2);\n }\n function drawTotalTaxAmount(startX, startY, text) {\n drawInvoiceText(ctx, 18, 18, text, startX, startY, '#000000', 'normal 18px Courier New', 2);\n }\n function drawListTaxRate(data) {\n // if (taxRate.includes(',')) {\n // drawTaxRate(986, 338, '多税率', '')\n // } else {\n // drawTaxRate(986, 338, taxRate, '')\n // }\n var taxRateArr = [];\n var temporaryTaxRate;\n data.details.forEach(function (v, i) {\n if (v.taxPre === 0 && v.taxPreType === 1 && Number(data.invoiceType) !== 1 && Number(data.invoiceType) !== 4) {\n temporaryTaxRate = '免税';\n }\n else {\n if (v.taxPre === 0 && v.taxPreType === 2 && Number(data.invoiceType) !== 1 && Number(data.invoiceType) !== 4) {\n temporaryTaxRate = '不征税';\n }\n else {\n if (typeof v.taxRate === 'number') {\n temporaryTaxRate = v.taxRate * 100 + '%';\n }\n else {\n temporaryTaxRate = v.taxRate;\n }\n }\n }\n if (!taxRateArr.includes(temporaryTaxRate)) {\n taxRateArr.push(temporaryTaxRate);\n }\n });\n if (taxRateArr.length === 1) {\n drawTaxRate(986, 338, taxRateArr[0], '');\n }\n else if (taxRateArr.length === 2) {\n if (taxRateArr.includes('免税') && taxRateArr.includes('不征税')) {\n drawTaxRate(986, 338, '零税率', '');\n }\n }\n }\n function drawListTaxAmount(data) {\n var temporaryTaxAmount;\n if (!isEmpty(data.taxAmount)) {\n if (typeof data.taxAmount === 'number') {\n if (data.taxAmount === 0) {\n temporaryTaxAmount = '***';\n }\n else {\n temporaryTaxAmount = data.taxAmount.toFixed(2);\n }\n }\n }\n else {\n temporaryTaxAmount = data.taxAmount.toFixed(2);\n }\n drawInvoiceText(ctx, 18, 18, temporaryTaxAmount, 1154, 338, '#000000', 'normal 18px SimSun', 2);\n }\n if (listFlag === 1 || details.length > 8 || qdbz === 1) {\n if (amount >= 0) {\n drawGoodsName(38, 338, '(详见销货清单)');\n drawAmount(922, 338, amount);\n drawListTaxRate(data);\n drawListTaxAmount(data);\n }\n else { // 明细超8项且为负数票\n drawGoodsName(38, 338, '详见对应正数发票及清单');\n drawAmount(922, 338, amount);\n drawListTaxRate(data);\n drawListTaxAmount(data);\n }\n }\n else {\n var getBit = function (value) {\n if (!isEmpty(value)) {\n var reg = /([0-9]+\\.[0-9]{9})[0-9]*/;\n var str = value.toString();\n str = str.replace(reg, \"$1\");\n return str;\n }\n return value;\n };\n var getTrueLength_1 = function (str) {\n var len = str.length, truelen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n truelen += 2;\n }\n else {\n truelen += 1;\n }\n }\n return truelen;\n };\n var flagSum_1 = 0; // 长度标示\n var rowSum_1 = 0; //行数总数\n var top_1 = 0; //居上的距离\n details.forEach(function (v, i) {\n // console.log(\"文字长度>>>>>>>>\", getTrueLength(`${v.shortName || ''}${v.goodsName}`))\n // console.log('提前判断的长度>>>>>>>', Math.ceil(getTrueLength(`${v.shortName || ''}${v.goodsName}`) / 28))\n flagSum_1 += Math.ceil(getTrueLength_1(\"\" + (v.shortName || '') + v.goodsName) / 32);\n // console.log('总书>>>>>>>', flagSum)\n });\n console.log(\">>>>>>>>>>>>>>>\", flagSum_1);\n details.forEach(function (v, i) {\n if (flagSum_1 <= 8) {\n if (i !== 0) {\n top_1 = rowSum_1 * 22;\n }\n rowSum_1 += Math.ceil(getTrueLength_1(\"\" + (v.shortName || '') + v.goodsName) / 32);\n console.log('行数》》》》》》', Math.ceil(getTrueLength_1(\"\" + (v.shortName || '') + v.goodsName) / 32)); // 所占行数\n // console.log(rowSum ,'>>>>>>>>>>>>>>>>>>>>>>>>>')\n // console.log(top)\n // if (rowSum > 8) {\n // console.error('大于8了')\n // ${52 + i * 4}mm\n // return\n // }\n drawGoodsName(38, 338 + top_1, \"\" + (v.shortName || '') + v.goodsName, 'newSize');\n drawSpecification(330, 338 + top_1, v.specification);\n drawUnit(502, 338 + i * 22, v.unit);\n if (v.quantity && v.unitPrice) {\n var quantity = String(v.quantity);\n var unitPrice = String(v.unitPrice);\n if (quantity === '0' && unitPrice === '0') {\n }\n else {\n drawQuantity(640, 338 + top_1, quantity.length > 13 ? quantity.substr(0, 13) : quantity);\n drawUnitPrice(752, 338 + top_1, unitPrice.length > 13 ? unitPrice.substr(0, 13) : unitPrice);\n }\n }\n drawAmount(922, 338 + top_1, v.amount);\n drawTaxRate(986, 338 + top_1, v.taxRate, v);\n drawTaxAmount(1154, 338 + top_1, v.taxAmount, v);\n }\n else {\n drawGoodsName(38, 338 + i * 22, \"\" + (v.shortName || '') + v.goodsName);\n drawSpecification(330, 338 + i * 24, v.specification);\n drawUnit(502, 338 + i * 22, v.unit);\n if (v.quantity && v.unitPrice) {\n var quantity = String(v.quantity);\n var unitPrice = String(v.unitPrice);\n if (quantity === '0' && unitPrice === '0') {\n }\n else {\n drawQuantity(640, 338 + i * 22, quantity.length > 13 ? quantity.substr(0, 13) : quantity);\n drawUnitPrice(752, 338 + i * 22, unitPrice.length > 13 ? unitPrice.substr(0, 13) : unitPrice);\n }\n }\n drawAmount(922, 338 + i * 22, v.amount);\n drawTaxRate(986, 338 + i * 22, v.taxRate, v);\n drawTaxAmount(1154, 338 + i * 22, v.taxAmount, v);\n }\n });\n }\n drawTotalAmount(922, 520, amount);\n var temporaryTaxAmount = isEmpty(taxAmount) ? '' : taxAmount === 0 ? '***' : taxAmount;\n if (temporaryTaxAmount !== '' && temporaryTaxAmount !== '***') {\n temporaryTaxAmount = temporaryTaxAmount ? Number(temporaryTaxAmount).toFixed(2) : temporaryTaxAmount === 0 ? Number(temporaryTaxAmount).toFixed(2) : temporaryTaxAmount;\n temporaryTaxAmount = \"\\u00A5\" + temporaryTaxAmount;\n }\n drawTotalTaxAmount(1154, 520, temporaryTaxAmount);\n}\nfunction drawTotalAmountWithTax(ctx, data) {\n var amountWithTax = data.amountWithTax;\n function drawCircle() {\n ctx.beginPath();\n ctx.lineWidth = 1;\n ctx.strokeStyle = 'black';\n // 绘制圆的路径**\n ctx.arc(350, 567, 12, 0, Math.PI * 2, false);\n ctx.stroke();\n ctx.closePath();\n ctx.save();\n //异次元空间 重置原点,默认是画布的(0,0)点\n ctx.translate(350, 567);\n //设置旋转角度 参数时弧度 角度0--360 弧度=角度*Math.PI/180\n ctx.rotate(45 * Math.PI / 180);\n ctx.lineWidth = 1;\n ctx.strokeStyle = 'black';\n ctx.beginPath();\n ctx.moveTo(-12, 0);\n ctx.lineTo(12, 0);\n ctx.moveTo(0, -12);\n ctx.lineTo(0, 12);\n ctx.stroke();\n ctx.closePath();\n //将旋转之后的元素返回原画布\n ctx.restore();\n }\n function drawAmountWithTaxUpperCase(startX, startY, text) {\n if (text > 0) {\n text = digitUppercase(text).replace('元', '圆');\n }\n else {\n text = \"\\uFF08\\u8D1F\\u6570\\uFF09\" + digitUppercase(Math.abs(text)).replace('元', '圆');\n }\n drawInvoiceText(ctx, 18, 56, text, startX, startY, '#000000', 'normal 18px SimSun', 0);\n }\n function drawAmountWithTax(startX, startY, text) {\n drawInvoiceText(ctx, 18, 56, text, startX, startY, '#000000', 'normal 22px Courier New', 0);\n }\n drawCircle();\n drawAmountWithTaxUpperCase(370, 560, amountWithTax);\n var tempAmountWithTax = amountWithTax ? Number(amountWithTax).toFixed(2) : amountWithTax === 0 ? Number(amountWithTax).toFixed(2) : amountWithTax;\n drawAmountWithTax(938, 558, \"\\u00A5\" + tempAmountWithTax);\n}\n// 备注\nfunction drawRemark(ctx, data) {\n var text = data.remark;\n if (isEmpty(text)) {\n text = '';\n }\n var startX = 714;\n var startY = 596;\n var remarks = text.replace(/\\\\r\\\\n/g, '\\n') || '';\n drawInvoiceText(ctx, 18, 50, remarks, startX, startY, '#000000', 'normal 18px SimSun', 0);\n}\nfunction drawName(ctx, data) {\n var payee = data.payee, reviewer = data.reviewer, drawer = data.drawer;\n drawInvoiceText(ctx, 18, 50, payee, 106, 710, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 50, reviewer, 420, 710, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 50, drawer, 666, 710, '#000000', 'normal 18px SimSun', 0);\n}\nfunction drawEllipse(ctx, data) {\n function bezierEllipse(ctx, x, y, a, b) {\n var k = .5522848, ox = a * k, // 水平控制点偏移量\n oy = b * k; // 垂直控制点偏移量</p> <p> \n ctx.beginPath();\n //从椭圆的左端点开始顺时针绘制四条三次贝塞尔曲线\n ctx.moveTo(x - a, y);\n ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\n ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\n ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\n ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\n ctx.closePath();\n ctx.stroke();\n }\n function drawText(ctx, x, y, text) {\n //绘制中文\n var ccircle = {\n x: x,\n y: y,\n radius: 59\n };\n var cstartAngle = 160; //控制字符起始位置度数\n var cendAngle = 30; //首位字符相隔度数\n var cradius = ccircle.radius; //圆的半径\n var cangleDecrement = (cstartAngle - cendAngle) / (text.length - 1); //每个字母占的弧度\n ctx.font = \"11px KaiTi\";\n var cratioX = 70 / ccircle.radius; //横轴缩放比率\n var cratioY = 57 / ccircle.radius; //纵轴缩放比率\n //进行缩放(均匀压缩)\n ctx.scale(cratioX, cratioY);\n var cindex = 0;\n for (var cindex = 0; cindex < text.length; cindex++) {\n ctx.save();\n ctx.beginPath();\n //绘制点\n ctx.translate(ccircle.x + Math.cos((Math.PI / 180) * cstartAngle) * cradius - 6, ccircle.y - Math.sin((Math.PI / 180) * cstartAngle) * cradius + 14);\n ctx.rotate((Math.PI / 2) - (Math.PI / 180) * cstartAngle); //Math.PI/2为旋转90度 Math.PI/180*X为旋转多少度\n ctx.fillText(text.charAt(cindex), 0, 0);\n ctx.strokeText(text.charAt(cindex), 0, 0);\n cstartAngle -= cangleDecrement;\n ctx.restore();\n }\n ctx.scale(1 / cratioX, 1 / cratioY);\n }\n function drawUnderText(ctx, x, y, text) {\n //绘制中文\n var ccircle = {\n x: x,\n y: y,\n radius: 59\n };\n var cstartAngle = 226; //控制字符起始位置度数\n var cendAngle = 150; //首位字符相隔度数\n var cradius = ccircle.radius; //圆的半径\n var cangleDecrement = (cstartAngle - cendAngle) / (text.length - 1); //每个字母占的弧度\n ctx.font = \"11px KaiTi\";\n var cratioX = 60 / ccircle.radius; //横轴缩放比率\n var cratioY = 50 / ccircle.radius; //纵轴缩放比率\n //进行缩放(均匀压缩)\n ctx.scale(cratioX, cratioY);\n var cindex = 0;\n for (var cindex = 0; cindex < text.length; cindex++) {\n ctx.save();\n ctx.beginPath();\n //绘制点\n var x_1 = ccircle.x + Math.cos((Math.PI / 180) * cstartAngle) * cradius - 6;\n var y_1 = ccircle.y - Math.sin((Math.PI / 180) * cstartAngle) * cradius + 14;\n ctx.translate(x_1, y_1);\n // ctx.rotate(((Math.PI)-(Math.PI/180)*cstartAngle)) //Math.PI/2为旋转90度 Math.PI/180*X为旋转多少度\n ctx.rotate((Math.PI / 180) * (45 - cindex * 12));\n ctx.fillText(text.charAt(cindex), 0, 0);\n ctx.strokeText(text.charAt(cindex), 0, 0);\n cstartAngle += cangleDecrement;\n ctx.translate(-x_1, -y_1);\n ctx.restore();\n }\n ctx.scale(1 / cratioX, 1 / cratioY);\n }\n ctx.strokeStyle = 'red';\n ctx.lineWidth = 4; //椭圆1宽度\n //3个参数: 左边距 上边据 宽度 椭圆扁度\n bezierEllipse(ctx, 596, 100, 80, 50); //椭圆1\n ctx.lineWidth = 1; //椭圆1宽度\n //3个参数: 左边距 上边据 宽度 椭圆扁度\n bezierEllipse(ctx, 596, 100, 75, 45); //椭圆1\n // 绘制印章类型\n drawText(ctx, 508, 110, '全国统一发票监制章');\n var _a = data.invoiceCode, invoiceCode = _a === void 0 ? '' : _a;\n var taxOfficeCode = '';\n if (invoiceCode && invoiceCode.length === 12) {\n taxOfficeCode = invoiceCode ? invoiceCode.substr(1, 4) : invoiceCode;\n }\n else {\n taxOfficeCode = invoiceCode ? invoiceCode.substr(0, 4) : invoiceCode;\n }\n var taxName = renderTextWithConfig(taxOfficeCode, taxOfficeList, 'taxOfficeCode', 'taxProvince') || '国家税务总局监制';\n if (taxName === taxOfficeCode) {\n taxName = '国家税务总局监制';\n }\n console.log(taxName);\n drawUnderText(ctx, 594, 96, taxName);\n drawInvoiceText(ctx, 18, 50, '国家税务总局', 596, 94, '#ff0000', 'normal 14px KaiTi', 1);\n}\nexport function createInvoice(_a) {\n var data = _a.data, showSample = _a.showSample, _b = _a.samplePosition, samplePosition = _b === void 0 ? 'bottom' : _b;\n var canvas = document.createElement('canvas');\n if (!canvas.getContext)\n return;\n var ctx = canvas.getContext('2d');\n createQrOnCanvas(data, canvas, function () { });\n var imgData = ctx.getImageData(0, 0, 113, 113);\n canvas.width = 1192;\n canvas.height = 794;\n ctx.fillStyle = '#fff';\n ctx.fillRect(0, 0, 1192, 794);\n ctx.putImageData(imgData, 48, 20);\n drawEllipse(ctx, data);\n drawSpecialTag(ctx, data, showSample, samplePosition);\n drawAllLines(ctx);\n drawInvoiceTexts(ctx, data);\n drawInvoiceMainInfo(ctx, data);\n drawSellerAndPurchaser(ctx, data);\n drawCipher(ctx, data);\n drawGoods(ctx, data);\n drawTotalAmountWithTax(ctx, data);\n drawRemark(ctx, data);\n drawName(ctx, data);\n return changeDpiDataUrl(canvas.toDataURL('image/png', 0.92), 300);\n}\n","import { CRC16 } from '@/utils/crc';\nimport { renderTextWithConfig, taxOfficeList } from '@/utils/basicUtil';\n// var QRCode = require('qrcode')\nvar changeDpiDataUrl = require('changedpi').changeDpiDataUrl;\n// @ts-ignore\nimport QRCode from 'qrcode';\nfunction createQrOnCanvas(data, canvas, callback) {\n // 版本号 01\n // 发票类型 1:增值税专用发票 2:增值税普通发票 3:增值税电子普通发票 4:增值税电子专用发票\n // 发票代码\n // 发票号码\n // 合计金额\n // 开票日期\n // 发票校验码\n // crc\n var invoiceType = data.invoiceType, invoiceCode = data.invoiceCode, invoiceNo = data.invoiceNo, amount = data.amount, drewDate = data.drewDate, checkCode = data.checkCode;\n var type = '10';\n if (Number(invoiceType) === 1) {\n type = '01';\n }\n else if (Number(invoiceType) === 2) {\n type = '04';\n }\n else if (Number(invoiceType) === 3) {\n type = '10';\n }\n else if (Number(invoiceType) === 4) {\n type = '08';\n }\n var dateFormat = new Date(drewDate);\n var year = dateFormat.getFullYear();\n var month = dateFormat.getMonth() + 1;\n var monthStr = month.toString();\n if (month >= 1 && month <= 9) {\n monthStr = '0' + month;\n }\n var day = dateFormat.getDate();\n var dayStr = day.toString();\n if (day >= 0 && day <= 9) {\n dayStr = '0' + day;\n }\n var dateStr = drewDate ? \"\" + year + monthStr + dayStr : '';\n var tempAmount = amount ? Number(amount).toFixed(2) : amount === 0 ? Number(amount).toFixed(2) : amount;\n var content = \"01,\" + type + \",\" + invoiceCode + \",\" + invoiceNo + \",\" + tempAmount + \",\" + dateStr + \",\" + checkCode + \",\";\n var crc = CRC16.ToCRC16(content, true);\n var qrContent = \"\" + content + crc + \",\";\n var opts = {\n errorCorrectionLevel: 'M',\n margin: 0,\n width: 113\n };\n QRCode.toCanvas(canvas, qrContent, opts, function (error) {\n if (error)\n console.error(error);\n console.log('success!');\n callback();\n });\n}\nfunction drawLine(_a) {\n var startX = _a.startX, startY = _a.startY, ctx = _a.ctx, points = _a.points, _b = _a.lineWidth, lineWidth = _b === void 0 ? 1 : _b, _c = _a.color, color = _c === void 0 ? '#800000' : _c;\n ctx.beginPath();\n ctx.moveTo(startX, startY);\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n if (points && points.length) {\n points.forEach(function (item) {\n ctx.lineTo(item.pointX, item.pointY);\n });\n }\n ctx.stroke();\n ctx.closePath();\n ctx.save();\n}\nfunction drawAllLines(ctx) {\n var points = [\n { pointX: 1164, pointY: 170 },\n { pointX: 1164, pointY: 702 },\n { pointX: 26, pointY: 702 },\n { pointX: 26, pointY: 170 },\n ];\n drawLine({ startX: 26, startY: 170, ctx: ctx, points: points, lineWidth: 1, color: '#800000' });\n drawLine({ startX: 388, startY: 100, ctx: ctx, points: [{ pointX: 801, pointY: 100 }], lineWidth: 1, color: '#800000' });\n drawLine({ startX: 388, startY: 104, ctx: ctx, points: [{ pointX: 801, pointY: 104 }], lineWidth: 1, color: '#800000' });\n drawLine({ startX: 26, startY: 294, ctx: ctx, points: [{ pointX: 1164, pointY: 294 }], lineWidth: 1, color: '#800000' });\n drawLine({ startX: 26, startY: 544, ctx: ctx, points: [{ pointX: 1164, pointY: 544 }], lineWidth: 1, color: '#800000' });\n drawLine({ startX: 26, startY: 590, ctx: ctx, points: [{ pointX: 1164, pointY: 590 }], lineWidth: 1, color: '#800000' });\n drawLine({ startX: 72, startY: 170, ctx: ctx, points: [{ pointX: 72, pointY: 294 }], lineWidth: 1, color: '#800000' });\n drawLine({ startX: 608, startY: 170, ctx: ctx, points: [{ pointX: 608, pointY: 294 }], lineWidth: 1, color: '#800000' });\n drawLine({ startX: 652, startY: 170, ctx: ctx, points: [{ pointX: 652, pointY: 294 }], lineWidth: 1, color: '#800000' });\n // drawLine({ startX: 320, startY: 294, ctx, points: [{ pointX: 320, pointY: 590 }], lineWidth: 1, color: '#800000' })\n // drawLine({ startX: 468, startY: 294, ctx, points: [{ pointX: 468, pointY: 544 }], lineWidth: 1, color: '#800000' })\n // drawLine({ startX: 536, startY: 294, ctx, points: [{ pointX: 536, pointY: 544 }], lineWidth: 1, color: '#800000' })\n // drawLine({ startX: 650, startY: 294, ctx, points: [{ pointX: 650, pointY: 544 }], lineWidth: 1, color: '#800000' })\n // drawLine({ startX: 762, startY: 294, ctx, points: [{ pointX: 762, pointY: 544 }], lineWidth: 1, color: '#800000' })\n // drawLine({ startX: 932, startY: 294, ctx, points: [{ pointX: 932, pointY: 544 }], lineWidth: 1, color: '#800000' })\n // drawLine({ startX: 996, startY: 294, ctx, points: [{ pointX: 996, pointY: 544 }], lineWidth: 1, color: '#800000' })\n drawLine({ startX: 72, startY: 590, ctx: ctx, points: [{ pointX: 72, pointY: 702 }], lineWidth: 1, color: '#800000' });\n // drawLine({ startX: 678, startY: 590, ctx, points: [{ pointX: 678, pointY: 702 }], lineWidth: 1, color: '#800000' })\n // drawLine({ startX: 706, startY: 590, ctx, points: [{ pointX: 706, pointY: 702 }], lineWidth: 1, color: '#800000' })\n}\nfunction drawInvoiceTexts(ctx, data) {\n var invoiceType = data.invoiceType, invoiceCode = data.invoiceCode;\n function drawInvoiceType() {\n var taxOfficeCode = '';\n if (invoiceCode && invoiceCode.length === 12) {\n taxOfficeCode = invoiceCode ? invoiceCode.substr(1, 4) : invoiceCode;\n }\n else {\n taxOfficeCode = invoiceCode ? invoiceCode.substr(0, 4) : invoiceCode;\n }\n var title = renderTextWithConfig(taxOfficeCode, taxOfficeList, 'taxOfficeCode', 'title') || '';\n if (title === taxOfficeCode) {\n title = '';\n }\n var text = title + \"\\u589E\\u503C\\u7A0E\\u7535\\u5B50\\u666E\\u901A\\u53D1\\u7968\";\n if (Number(invoiceType) === 1) {\n text = title + \"\\u589E\\u503C\\u7A0E\\u4E13\\u7528\\u53D1\\u7968\";\n }\n else if (Number(invoiceType) === 2) {\n text = title + \"\\u589E\\u503C\\u7A0E\\u666E\\u901A\\u53D1\\u7968\";\n }\n else if (Number(invoiceType) === 4) {\n text = title + \"\\u589E\\u503C\\u7A0E\\u7535\\u5B50\\u4E13\\u7528\\u53D1\\u7968\";\n }\n drawInvoiceText(ctx, 18, 30, text, 596, 38, '#9C5223', 'normal 38px KaiTi', 1);\n }\n drawInvoiceType();\n drawInvoiceText(ctx, 18, 30, '发票号码:', 860, 55, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '开票日期:', 860, 100, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '购', 40, 183, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '买', 40, 203, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '方', 40, 223, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '信', 40, 243, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '息', 40, 263, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '名称:', 80, 210, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 32, '统一社会信用代码/纳税人识别号:', 80, 240, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '名称:', 660, 210, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 32, '统一社会信用代码/纳税人识别号:', 660, 240, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '销', 620, 183, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '售', 620, 203, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '方', 620, 223, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '信', 620, 243, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '息', 620, 263, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '项目名称', 132, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '规格型号', 358, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '单位', 484, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '数 量', 570, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '单 价', 684, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '金 额', 828, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '税率', 948, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '税 额', 1058, 304, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '合 计', 134, 520, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '价税合计(大写)', 106, 560, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '(小写)', 864, 560, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '备', 40, 620, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '注', 40, 660, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '开票人:', 126, 710, '#9C5223', 'normal 18px KaiTi', 0);\n}\n/*\n//ctx getContext(\"2d\") 对象\n//lineHeight 段落文本行高\n//byteLength 设置单字节文字一行内的数量\n//text 写入画面的段落文本\n//startLeft 开始绘制文本的 x 坐标位置(相对于画布)\n//startTop 开始绘制文本的 y 坐标位置(相对于画布)\n//ctxFillStyle 字体颜色\n//ctxFont 字体\n//textAlign 是否设置\n*/\nfunction drawInvoiceText(ctx, lineHeight, byteLength, text, startLeft, startTop, ctxFillStyle, ctxFont, textAlign) {\n if (text === void 0) { text = ''; }\n if (typeof text === 'number') {\n text = text + '';\n }\n if (text === null || text === undefined) {\n text = '';\n }\n function getTrueLength(str) {\n var len = str.length, truelen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n truelen += 2;\n }\n else {\n truelen += 1;\n }\n }\n return truelen;\n }\n function cutString(str, leng) {\n var len = str.length, tlen = len, nlen = 0;\n var isNextLine = false;\n for (var x = 0; x < len; x++) {\n isNextLine = str.substr(x, 1) === '\\n';\n if (isNextLine) {\n tlen = x;\n break;\n }\n if (str.charCodeAt(x) > 128) {\n if (nlen + 2 < leng) {\n nlen += 2;\n }\n else {\n tlen = x;\n break;\n }\n }\n else {\n if (nlen + 1 < leng) {\n nlen += 1;\n }\n else {\n tlen = x;\n break;\n }\n }\n }\n return ({ tlen: tlen, isNextLine: isNextLine });\n }\n if (textAlign === 1) {\n if (text.length < byteLength) {\n ctx.textAlign = 'center';\n }\n }\n else if (textAlign === 0) {\n ctx.textAlign = 'left';\n }\n else if (textAlign === 2) {\n ctx.textAlign = 'right';\n }\n for (var i = 1; getTrueLength(text) > 0; i++) {\n var _a = cutString(text, byteLength), tl = _a.tlen, isNextLine = _a.isNextLine;\n ctx.fillStyle = ctxFillStyle; //字体颜色\n ctx.font = ctxFont; //字体 \n ctx.textBaseline = 'top';\n ctx.fillText(text.substr(0, tl).replace(/^\\s+|\\s+$/, \"\"), startLeft, (i - 1) * lineHeight + startTop);\n if (isNextLine) { // \b换行 要把/n 去掉 所以加了两个字符\n text = text.substr(tl + 1);\n }\n else {\n text = text.substr(tl);\n }\n }\n ctx.save();\n}\nexport function createFullElectricity(_a) {\n var data = _a.data, showSample = _a.showSample, _b = _a.samplePosition, samplePosition = _b === void 0 ? 'bottom' : _b;\n console.log(data);\n console.log(showSample);\n console.log(samplePosition);\n var canvas = document.createElement('canvas');\n if (!canvas.getContext)\n return;\n var ctx = canvas.getContext('2d');\n createQrOnCanvas(data, canvas, function () { });\n var imgData = ctx.getImageData(0, 0, 113, 113);\n canvas.width = 1192;\n canvas.height = 794;\n ctx.fillStyle = '#fff';\n ctx.fillRect(0, 0, 1192, 794);\n ctx.putImageData(imgData, 48, 20);\n //绘制线条\n drawAllLines(ctx);\n //绘制文字\n drawInvoiceTexts(ctx, data);\n return changeDpiDataUrl(canvas.toDataURL('image/png', 0.92), 300);\n}\n","import { CRC16 } from '@/utils/crc';\nimport { getMixLength, digitUppercase, isEmpty, renderTextWithConfig, taxOfficeList } from '@/utils/basicUtil';\n// var QRCode = require('qrcode')\nvar changeDpiDataUrl = require('changedpi').changeDpiDataUrl;\n// @ts-ignore\n//import QRCode from 'qrcode'\nfunction drawEllipse(ctx, data) {\n function bezierEllipse(ctx, x, y, a, b) {\n var k = .5522848, ox = a * k, // 水平控制点偏移量\n oy = b * k; // 垂直控制点偏移量</p> <p> \n ctx.beginPath();\n //从椭圆的左端点开始顺时针绘制四条三次贝塞尔曲线\n ctx.moveTo(x - a, y);\n ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\n ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\n ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\n ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\n ctx.closePath();\n ctx.stroke();\n }\n function drawText(ctx, x, y, text) {\n //绘制中文\n var ccircle = {\n x: x,\n y: y,\n radius: 59\n };\n var cstartAngle = 160; //控制字符起始位置度数\n var cendAngle = 30; //首位字符相隔度数\n var cradius = ccircle.radius; //圆的半径\n var cangleDecrement = (cstartAngle - cendAngle) / (text.length - 1); //每个字母占的弧度\n ctx.font = \"11px KaiTi\";\n var cratioX = 70 / ccircle.radius; //横轴缩放比率\n var cratioY = 57 / ccircle.radius; //纵轴缩放比率\n //进行缩放(均匀压缩)\n ctx.scale(cratioX, cratioY);\n var cindex = 0;\n for (var cindex = 0; cindex < text.length; cindex++) {\n ctx.save();\n ctx.beginPath();\n //绘制点\n ctx.translate(ccircle.x + Math.cos((Math.PI / 180) * cstartAngle) * cradius - 6, ccircle.y - Math.sin((Math.PI / 180) * cstartAngle) * cradius + 14);\n ctx.rotate((Math.PI / 2) - (Math.PI / 180) * cstartAngle); //Math.PI/2为旋转90度 Math.PI/180*X为旋转多少度\n ctx.fillText(text.charAt(cindex), 0, 0);\n ctx.strokeText(text.charAt(cindex), 0, 0);\n cstartAngle -= cangleDecrement;\n ctx.restore();\n }\n ctx.scale(1 / cratioX, 1 / cratioY);\n }\n function drawUnderText(ctx, x, y, text) {\n //绘制中文\n var ccircle = {\n x: x,\n y: y,\n radius: 59\n };\n var cstartAngle = 226; //控制字符起始位置度数\n var cendAngle = 150; //首位字符相隔度数\n var cradius = ccircle.radius; //圆的半径\n var cangleDecrement = (cstartAngle - cendAngle) / (text.length - 1); //每个字母占的弧度\n ctx.font = \"11px KaiTi\";\n var cratioX = 60 / ccircle.radius; //横轴缩放比率\n var cratioY = 50 / ccircle.radius; //纵轴缩放比率\n //进行缩放(均匀压缩)\n ctx.scale(cratioX, cratioY);\n var cindex = 0;\n for (var cindex = 0; cindex < text.length; cindex++) {\n ctx.save();\n ctx.beginPath();\n //绘制点\n var x_1 = ccircle.x + Math.cos((Math.PI / 180) * cstartAngle) * cradius - 6;\n var y_1 = ccircle.y - Math.sin((Math.PI / 180) * cstartAngle) * cradius + 14;\n ctx.translate(x_1, y_1);\n // ctx.rotate(((Math.PI)-(Math.PI/180)*cstartAngle)) //Math.PI/2为旋转90度 Math.PI/180*X为旋转多少度\n ctx.rotate((Math.PI / 180) * (45 - cindex * 12));\n ctx.fillText(text.charAt(cindex), 0, 0);\n ctx.strokeText(text.charAt(cindex), 0, 0);\n cstartAngle += cangleDecrement;\n ctx.translate(-x_1, -y_1);\n ctx.restore();\n }\n ctx.scale(1 / cratioX, 1 / cratioY);\n }\n ctx.strokeStyle = 'red';\n ctx.lineWidth = 4; //椭圆1宽度\n //3个参数: 左边距 上边据 宽度 椭圆扁度\n bezierEllipse(ctx, 570, 70, 80, 50); //椭圆1\n ctx.lineWidth = 1; //椭圆1宽度\n //3个参数: 左边距 上边据 宽度 椭圆扁度\n bezierEllipse(ctx, 570, 70, 75, 45); //椭圆1\n // 绘制印章类型\n drawText(ctx, 486, 80, '全国统一发票监制章');\n var _a = data.invoiceCode, invoiceCode = _a === void 0 ? '' : _a;\n var taxOfficeCode = '';\n if (invoiceCode && invoiceCode.length === 12) {\n taxOfficeCode = invoiceCode ? invoiceCode.substr(1, 4) : invoiceCode;\n }\n else {\n taxOfficeCode = invoiceCode ? invoiceCode.substr(0, 4) : invoiceCode;\n }\n var taxName = renderTextWithConfig(taxOfficeCode, taxOfficeList, 'taxOfficeCode', 'taxProvince') || '国家税务总局监制';\n if (taxName === taxOfficeCode) {\n taxName = '国家税务总局监制';\n }\n console.log(taxName);\n drawUnderText(ctx, 568, 66, taxName);\n drawInvoiceText(ctx, 18, 50, '国家税务总局', 570, 64, '#ff0000', 'normal 14px KaiTi', 1);\n}\nfunction drawSpecialTag(ctx, data, showSample) {\n function invoiceSampleText(invoiceData) {\n var invoiceStatus = invoiceData.invoiceStatus, status = invoiceData.status, amountWithTax = invoiceData.amountWithTax, amount = invoiceData.amount;\n function drawSpecialLine(_a) {\n var startX = _a.startX, startY = _a.startY, ctx = _a.ctx, points = _a.points, _b = _a.lineWidth, lineWidth = _b === void 0 ? 1 : _b, _c = _a.color, color = _c === void 0 ? '#975124' : _c;\n ctx.beginPath();\n ctx.moveTo(startX, startY);\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n if (points && points.length) {\n points.forEach(function (item) {\n ctx.lineTo(item.pointX, item.pointY);\n });\n }\n ctx.stroke();\n ctx.closePath();\n // ctx.save()\n }\n // // 绘制圆的路径**\n var points = [\n { pointX: 150, pointY: -65 },\n { pointX: 150, pointY: 65 },\n { pointX: -150, pointY: 65 },\n { pointX: -146, pointY: -65 },\n ];\n var innerPoints = [\n { pointX: 140, pointY: -55 },\n { pointX: 140, pointY: 55 },\n { pointX: -140, pointY: 55 },\n { pointX: -136, pointY: -55 },\n ];\n ctx.save();\n //异次元空间 重置原点,默认是画布的(0,0)点\n ctx.translate(940, 582);\n //设置旋转角度 参数时弧度 角度0--360 弧度=角度*Math.PI/180\n ctx.rotate(-30 * Math.PI / 180);\n drawSpecialLine({ startX: -150, startY: -65, ctx: ctx, points: points, lineWidth: 8, color: '#F17171' });\n drawSpecialLine({ startX: -138, startY: -55, ctx: ctx, points: innerPoints, lineWidth: 4, color: '#F17171' });\n drawInvoiceText(ctx, 18, 30, '样张', 0, -26, '#F17171', 'normal 50px SimHei', 1);\n if (true || invoiceStatus === 20 || status === 20) {\n drawInvoiceText(ctx, 18, 42, '已红冲', 64, 26, '#F17171', 'normal 22px SimHei', 0);\n }\n //将旋转之后的元素返回原画布\n ctx.restore();\n ctx.rotate(30 * Math.PI / 180);\n ctx.translate(-940, -582);\n if (invoiceStatus === 30 || status === 30) {\n drawInvoiceText(ctx, 18, 42, '作废', 245, 88, '#000', 'normal 26px SimHei', 0);\n }\n if (amountWithTax < 0 && amount < 0) {\n drawInvoiceText(ctx, 18, 42, '销项负数', 245, 88, '#000', 'normal 26px SimHei', 0);\n }\n }\n if (showSample) {\n invoiceSampleText(data);\n }\n}\n/*\n* startX 起点x坐标\n* startY 起点y坐标\n* ctx canvas画笔\n* points 点坐标集,用于连画操作,非必填\n*/\nfunction drawLine(_a) {\n var startX = _a.startX, startY = _a.startY, ctx = _a.ctx, points = _a.points, _b = _a.lineWidth, lineWidth = _b === void 0 ? 1 : _b, _c = _a.color, color = _c === void 0 ? '#975124' : _c;\n ctx.beginPath();\n ctx.moveTo(startX, startY);\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n if (points && points.length) {\n points.forEach(function (item) {\n ctx.lineTo(item.pointX, item.pointY);\n });\n }\n ctx.stroke();\n ctx.closePath();\n ctx.save();\n}\nfunction drawAllLines(ctx) {\n var points = [\n { pointX: 1055, pointY: 156 },\n { pointX: 1055, pointY: 754 },\n { pointX: 95, pointY: 754 },\n { pointX: 95, pointY: 156 },\n ];\n drawLine({ startX: 95, startY: 156, ctx: ctx, points: [{ pointX: 1055, pointY: 156 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 156, ctx: ctx, points: [{ pointX: 95, pointY: 756 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 756, ctx: ctx, points: [{ pointX: 1055, pointY: 756 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 1055, startY: 156, ctx: ctx, points: [{ pointX: 1055, pointY: 756 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 299, ctx: ctx, points: [{ pointX: 1055, pointY: 299 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 357, ctx: ctx, points: [{ pointX: 1055, pointY: 357 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 399, ctx: ctx, points: [{ pointX: 1055, pointY: 399 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 443, ctx: ctx, points: [{ pointX: 1055, pointY: 443 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 486, ctx: ctx, points: [{ pointX: 1055, pointY: 486 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 528, ctx: ctx, points: [{ pointX: 1055, pointY: 528 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 570, ctx: ctx, points: [{ pointX: 1055, pointY: 570 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 614, ctx: ctx, points: [{ pointX: 1055, pointY: 614 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 656, ctx: ctx, points: [{ pointX: 1055, pointY: 656 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 712, ctx: ctx, points: [{ pointX: 1055, pointY: 712 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 95, startY: 977, ctx: ctx, points: [{ pointX: 1055, pointY: 977 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 226, startY: 156, ctx: ctx, points: [{ pointX: 226, pointY: 756 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 513, startY: 156, ctx: ctx, points: [{ pointX: 513, pointY: 299 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 552, startY: 156, ctx: ctx, points: [{ pointX: 552, pointY: 299 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 552, startY: 299, ctx: ctx, points: [{ pointX: 552, pointY: 357 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 765, startY: 299, ctx: ctx, points: [{ pointX: 765, pointY: 357 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 432, startY: 357, ctx: ctx, points: [{ pointX: 432, pointY: 443 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 432, startY: 357, ctx: ctx, points: [{ pointX: 432, pointY: 399 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 513, startY: 357, ctx: ctx, points: [{ pointX: 513, pointY: 401 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 550, startY: 399, ctx: ctx, points: [{ pointX: 550, pointY: 486 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 838, startY: 357, ctx: ctx, points: [{ pointX: 838, pointY: 399 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 891, startY: 357, ctx: ctx, points: [{ pointX: 891, pointY: 443 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 815, startY: 401, ctx: ctx, points: [{ pointX: 815, pointY: 443 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 742, startY: 443, ctx: ctx, points: [{ pointX: 742, pointY: 486 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 725, startY: 528, ctx: ctx, points: [{ pointX: 725, pointY: 614 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 775, startY: 528, ctx: ctx, points: [{ pointX: 775, pointY: 614 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 598, startY: 614, ctx: ctx, points: [{ pointX: 598, pointY: 656 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 704, startY: 614, ctx: ctx, points: [{ pointX: 704, pointY: 656 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 348, startY: 656, ctx: ctx, points: [{ pointX: 348, pointY: 712 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 422, startY: 656, ctx: ctx, points: [{ pointX: 422, pointY: 712 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 623, startY: 656, ctx: ctx, points: [{ pointX: 623, pointY: 712 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 726, startY: 656, ctx: ctx, points: [{ pointX: 726, pointY: 712 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 452, startY: 714, ctx: ctx, points: [{ pointX: 452, pointY: 754 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 566, startY: 714, ctx: ctx, points: [{ pointX: 566, pointY: 754 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 798, startY: 714, ctx: ctx, points: [{ pointX: 798, pointY: 754 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 848, startY: 714, ctx: ctx, points: [{ pointX: 848, pointY: 754 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 893, startY: 714, ctx: ctx, points: [{ pointX: 893, pointY: 754 }], lineWidth: 1, color: '#975124' });\n drawLine({ startX: 974, startY: 714, ctx: ctx, points: [{ pointX: 974, pointY: 754 }], lineWidth: 1, color: '#975124' });\n}\nfunction drawInvoiceTexts(ctx, data) {\n var invoiceType = data.invoiceType, invoiceCode = data.invoiceCode;\n drawInvoiceText(ctx, 44, 40, \"\\u673A \\u52A8 \\u8F66 \\u9500 \\u552E \\u7EDF \\u4E00 \\u53D1 \\u7968\", 366, 39, '#9C5223', '900 31px KaiTi', 0);\n drawInvoiceText(ctx, 39, 40, \"\\u53D1 \\u7968 \\u8054\", 492, 89, '#9C5223', '600 28px HeiTi', 0);\n drawInvoiceText(ctx, 19, 30, '机打代码', 111, 182, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '机打号码', 111, 215, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '机器编号', 111, 248, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 30, 30, '税', 524, 184, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 30, 30, '控', 524, 214, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 30, 30, '码', 524, 244, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 26, 30, '购买方名称', 111, 319, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '纳税人识别号/', 566, 299, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '统一社会信用代码/', 566, 318, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '身份证号码/', 566, 337, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 26, 30, '车辆类型', 111, 368, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 26, 30, '合格证号', 111, 412, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 26, 30, '发动机号码', 111, 456, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 26, 30, '价税合计', 111, 498, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 26, 30, '销货单位名称', 104, 540, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 26, 30, '纳税人识别号', 104, 582, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 26, 30, '地 址', 111, 626, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 30, '增值税税率 ', 111, 663, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 30, ' 或 征 收 率', 111, 690, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 30, '不含税价', 111, 726, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 30, '厂牌型号', 436, 369, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '进口证明书号', 439, 413, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '产地', 848, 369, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '商检单号', 818, 411, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '车辆识别代号/车架号码', 551, 457, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '小写', 806, 499, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '电话', 731, 541, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '账号', 731, 583, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 19, 30, '开户银行', 613, 626, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 30, '增值税', 358, 661, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 33, '税 额', 358, 681, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 33, '主管税务', 630, 661, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 33, ' 机关及代码', 630, 681, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 33, '小写', 237, 726, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 33, '完税凭证号码', 451, 726, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 33, '吨位', 804, 726, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 33, '限乘人数', 898, 726, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 33, '开票日期:', 90, 125, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 26, 33, '发票代码', 810, 84, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 26, 33, '发票号码', 810, 111, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 33, '销货单位盖章', 100, 762, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 33, '开票人', 488, 762, '#9C5223', 'normal 19px KaiTi', 0);\n drawInvoiceText(ctx, 25, 33, '备注:一车一票', 812, 762, '#9C5223', 'normal 19px KaiTi', 0);\n}\n/*\n//ctx getContext(\"2d\") 对象\n//lineHeight 段落文本行高\n//byteLength 设置单字节文字一行内的数量\n//text 写入画面的段落文本\n//startLeft 开始绘制文本的 x 坐标位置(相对于画布)\n//startTop 开始绘制文本的 y 坐标位置(相对于画布)\n//ctxFillStyle 字体颜色\n//ctxFont 字体\n//textAlign 是否设置\n*/\nfunction drawInvoiceText(ctx, lineHeight, byteLength, text, startLeft, startTop, ctxFillStyle, ctxFont, textAlign) {\n if (text === void 0) { text = ''; }\n if (typeof text === 'number') {\n text = text + '';\n }\n if (text === null || text === undefined) {\n text = '';\n }\n function getTrueLength(str) {\n var len = str.length, truelen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n truelen += 2;\n }\n else {\n truelen += 1;\n }\n }\n return truelen;\n }\n function cutString(str, leng) {\n var len = str.length, tlen = len, nlen = 0;\n var isNextLine = false;\n for (var x = 0; x < len; x++) {\n isNextLine = str.substr(x, 1) === '\\n';\n if (isNextLine) {\n tlen = x;\n break;\n }\n if (str.charCodeAt(x) > 128) {\n if (nlen + 2 < leng) {\n nlen += 2;\n }\n else {\n tlen = x;\n break;\n }\n }\n else {\n if (nlen + 1 < leng) {\n nlen += 1;\n }\n else {\n tlen = x;\n break;\n }\n }\n }\n return ({ tlen: tlen, isNextLine: isNextLine });\n }\n if (textAlign === 1) {\n if (text.length < byteLength) {\n ctx.textAlign = 'center';\n }\n }\n else if (textAlign === 0) {\n ctx.textAlign = 'left';\n }\n else if (textAlign === 2) {\n ctx.textAlign = 'right';\n }\n for (var i = 1; getTrueLength(text) > 0; i++) {\n var _a = cutString(text, byteLength), tl = _a.tlen, isNextLine = _a.isNextLine;\n ctx.fillStyle = ctxFillStyle; //字体颜色\n ctx.font = ctxFont; //字体 \n ctx.textBaseline = 'top';\n ctx.fillText(text.substr(0, tl).replace(/^\\s+|\\s+$/, \"\"), startLeft, (i - 1) * lineHeight + startTop);\n if (isNextLine) { // 换行 要把/n 去掉 所以加了两个字符\n text = text.substr(tl + 1);\n }\n else {\n text = text.substr(tl);\n }\n }\n ctx.save();\n}\nfunction createQrOnCanvas(data, canvas, callback) {\n // 版本号 01\n // 发票类型 1:增值税专用发票 2:增值税普通发票 3:增值税电子普通发票 4:增值税电子专用发票\n // 发票代码\n // 发票号码\n // 合计金额\n // 开票日期\n // 发票校验码\n // crc\n var invoiceType = data.invoiceType, invoiceCode = data.invoiceCode, invoiceNo = data.invoiceNo, amount = data.amount, drewDate = data.drewDate, checkCode = data.checkCode;\n var type = '10';\n if (Number(invoiceType) === 1) {\n type = '01';\n }\n else if (Number(invoiceType) === 2) {\n type = '04';\n }\n else if (Number(invoiceType) === 3) {\n type = '10';\n }\n else if (Number(invoiceType) === 4) {\n type = '08';\n }\n var dateFormat = new Date(drewDate);\n var year = dateFormat.getFullYear();\n var month = dateFormat.getMonth() + 1;\n var monthStr = month.toString();\n if (month >= 1 && month <= 9) {\n monthStr = '0' + month;\n }\n var day = dateFormat.getDate();\n var dayStr = day.toString();\n if (day >= 0 && day <= 9) {\n dayStr = '0' + day;\n }\n var dateStr = drewDate ? \"\" + year + monthStr + dayStr : '';\n var tempAmount = amount ? Number(amount).toFixed(2) : amount === 0 ? Number(amount).toFixed(2) : amount;\n var content = \"01,\" + type + \",\" + invoiceCode + \",\" + invoiceNo + \",\" + tempAmount + \",\" + dateStr + \",\" + checkCode + \",\";\n var crc = CRC16.ToCRC16(content, true);\n var qrContent = \"\" + content + crc + \",\";\n var opts = {\n errorCorrectionLevel: 'M',\n margin: 0,\n width: 113\n };\n // QRCode.toCanvas(canvas, qrContent, opts, (error) => {\n // if (error) console.error(error)\n // console.log('success!')\n // callback()\n // })\n}\nfunction drawInvoiceMainInfo(ctx, data) {\n var invoiceCode = data.invoiceCode, invoiceNo = data.invoiceNo, drewDate = data.drewDate, checkCode = data.checkCode, machineCode = data.machineCode, invoiceStatus = data.invoiceStatus, status = data.status;\n function drawDate(date) {\n if (!date) {\n return;\n }\n var dateFormat = new Date(date);\n var year = dateFormat.getFullYear();\n var month = dateFormat.getMonth() + 1;\n var monthStr = month.toString();\n if (month >= 1 && month <= 9) {\n monthStr = '0' + month;\n }\n var day = dateFormat.getDate();\n var dayStr = day.toString();\n if (day >= 0 && day <= 9) {\n dayStr = '0' + day;\n }\n var dateStr = year + \"\\u5E74\" + monthStr + \"\\u6708\" + dayStr + \"\\u65E5\";\n drawInvoiceText(ctx, 18, 42, dateStr, 193, 126, '#000000', 'normal 18px SimSun', 0);\n }\n // function drawCheckCode(text = '') {\n // if (isEmpty(text)) {\n // return\n // }\n // let cLength = text.length / 4\n // for (let i = 0; i < 4; i++) {\n // let checkCodeText = text.substr(i === 0 ? 0 : (cLength * i), cLength)\n // drawInvoiceText(ctx, 18, 32, checkCodeText, 940 + i * 50, 134, '#000000', 'normal 18px SimSun', 0)\n // }\n // }\n drawInvoiceText(ctx, 18, 42, invoiceCode, 893, 83, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 42, invoiceNo, 893, 111, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 34, 33, invoiceCode, 242, 182, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 34, 33, invoiceNo, 242, 215, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 42, machineCode, 242, 248, '#000000', 'normal 18px SimSun', 0);\n drawDate(drewDate);\n // drawCheckCode(checkCode)\n}\nfunction drawCipher(ctx, data) {\n var _a = data.ciphertext, ciphertext = _a === void 0 ? '' : _a;\n if (isEmpty(ciphertext)) {\n return;\n }\n var cLength = 38;\n for (var i = 0; i < 5; i++) {\n var text = ciphertext.substr(i === 0 ? 0 : (cLength * i), cLength);\n drawInvoiceText(ctx, 26, 48, text, 570, 165 + i * 26, '#000000', 'normal 19px Courier New', 0);\n }\n}\nfunction drawSellerAndPurchaser(ctx, data) {\n var _a = data.purchaserName, purchaserName = _a === void 0 ? '' : _a, // 购方名称\n _b = data.purchaserTaxNo, // 购方名称\n purchaserTaxNo = _b === void 0 ? '' : _b, // 购方税号\n _c = data.sellerName, // 购方税号\n sellerName = _c === void 0 ? '' : _c, // 销方名称\n _d = data.sellerTaxNo, // 销方名称\n sellerTaxNo = _d === void 0 ? '' : _d, // 销方税号\n _e = data.sellerTel, // 销方税号\n sellerTel = _e === void 0 ? '' : _e, // 销方电话\n _f = data.sellerAddress, // 销方电话\n sellerAddress = _f === void 0 ? '' : _f, // 销方地址\n _g = data.sellerBankAccount, // 销方地址\n sellerBankAccount = _g === void 0 ? '' : _g, // 销方银行账号\n _h = data.sellerBankName, // 销方银行账号\n sellerBankName = _h === void 0 ? '' : _h;\n function calcAndDraw(startX, startY, text) {\n if (getMixLength(text) <= 48) {\n drawInvoiceText(ctx, 18, 49, text, startX, startY, '#000000', 'normal 18px SimSun', 0);\n }\n else if (getMixLength(text) <= 62) {\n drawInvoiceText(ctx, 18, 63, text, startX, startY, '#000000', 'normal 15px SimSun', 0);\n }\n else {\n drawInvoiceText(ctx, 15, 63, text, startX, startY - 4, '#000000', 'normal 15px SimSun', 0);\n }\n }\n drawInvoiceText(ctx, 18, 35, purchaserName, 242, 319, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 33, purchaserTaxNo, 778, 319, '#000000', 'normal 19px Courier New', 0);\n drawInvoiceText(ctx, 18, 33, sellerName, 242, 539, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 33, sellerTel, 789, 539, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 34, 33, sellerTaxNo, 242, 583, '#000000', 'normal 19px Courier New', 0);\n drawInvoiceText(ctx, 34, 33, sellerBankAccount, 789, 583, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 40, sellerAddress, 242, 617, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 38, sellerBankName, 712, 617, '#000000', 'normal 18px SimSun', 0);\n}\nfunction drewCarInfo(ctx, data) {\n var _a = data.carTypeName, carTypeName = _a === void 0 ? '' : _a, // 车辆类型\n _b = data.brandTranslation, // 车辆类型\n brandTranslation = _b === void 0 ? '' : _b, // 厂牌型号\n _c = data.productPlace, // 厂牌型号\n productPlace = _c === void 0 ? '' : _c, // 产地\n _d = data.certificateNo, // 产地\n certificateNo = _d === void 0 ? '' : _d, // 合格证号\n _e = data.importCertNo, // 合格证号\n importCertNo = _e === void 0 ? '' : _e, // 进口证明书号\n _f = data.comInspectionNo, // 进口证明书号\n comInspectionNo = _f === void 0 ? '' : _f, // 商检单号\n _g = data.vehicleIdenNo, // 商检单号\n vehicleIdenNo = _g === void 0 ? '' : _g, // 车辆识别代码\n _h = data.engineNo, // 车辆识别代码\n engineNo = _h === void 0 ? '' : _h;\n drawInvoiceText(ctx, 18, 33, carTypeName, 242, 370, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 33, brandTranslation, 524, 370, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 33, productPlace, 899, 370, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 33, certificateNo, 242, 411, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 33, importCertNo, 562, 413, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 33, comInspectionNo, 895, 411, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 33, engineNo, 242, 455, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 33, vehicleIdenNo, 753, 455, '#000000', 'normal 18px SimSun', 0);\n}\nfunction drawAmount(ctx, data) {\n var _a = data.amountWithTax, amountWithTax = _a === void 0 ? 0 : _a, // 含税金额\n _b = data.amount, // 含税金额\n amount = _b === void 0 ? 0 : _b, // 不含税金额\n _c = data.taxAmount, // 不含税金额\n taxAmount = _c === void 0 ? 0 : _c, // 税额\n _d = data.taxRate, // 税额\n taxRate = _d === void 0 ? 0 : _d, _e = data.zgswjgmc, zgswjgmc = _e === void 0 ? '' : _e, // 主管税务机关名称\n _f = data.zgswjgdm, // 主管税务机关名称\n zgswjgdm = _f === void 0 ? '' : _f;\n function drawAmountWithTaxUpperCase(startX, startY, text) {\n if (text > 0) {\n text = digitUppercase(text).replace('元', '圆');\n }\n else {\n text = \"\\uFF08\\u8D1F\\u6570\\uFF09\" + digitUppercase(Math.abs(text)).replace('元', '圆');\n }\n drawInvoiceText(ctx, 18, 56, text, startX, startY, '#000000', 'normal 18px SimSun', 0);\n }\n drawAmountWithTaxUpperCase(242, 497, amountWithTax);\n var tempAmountWithTax = amountWithTax ? Number(amountWithTax).toFixed(2) : amountWithTax === 0 ? Number(amountWithTax).toFixed(2) : amountWithTax;\n var tempAmount = amount ? Number(amount).toFixed(2) : amount === 0 ? Number(amount).toFixed(2) : amount;\n var tempTaxAmount = amount ? Number(taxAmount).toFixed(2) : taxAmount === 0 ? Number(taxAmount).toFixed(2) : taxAmount;\n drawInvoiceText(ctx, 34, 33, \"\\u00A5\" + tempAmountWithTax, 854, 497, '#000000', 'normal 19px Courier New', 0);\n drawInvoiceText(ctx, 34, 33, \"\\u00A5\" + tempAmount, 284, 726, '#000000', 'normal 19px Courier New', 0);\n drawInvoiceText(ctx, 34, 33, \"\\u00A5\" + tempTaxAmount, 439, 676, '#000000', 'normal 19px Courier New', 0);\n drawInvoiceText(ctx, 34, 33, taxRate * 100 + \"%\", 242, 676, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 34, 33, zgswjgmc, 739, 663, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 34, 33, zgswjgdm, 739, 685, '#000000', 'normal 18px SimSun', 0);\n}\nfunction drawOtherInfo(ctx, data) {\n var _a = data.tonnage, tonnage = _a === void 0 ? '' : _a, // 吨位\n _b = data.limitPeopleNum, // 吨位\n limitPeopleNum = _b === void 0 ? '' : _b, // 吨位\n _c = data.drawer, // 吨位\n drawer = _c === void 0 ? '' : _c, // 开票人\n _d = data.wspzhm // 完税凭证号码\n , // 开票人\n wspzhm = _d === void 0 ? '' : _d // 完税凭证号码\n ;\n drawInvoiceText(ctx, 34, 33, wspzhm, 570, 726, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 34, 33, tonnage, 848, 726, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 34, 33, limitPeopleNum, 988, 726, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 34, 33, drawer, 552, 762, '#000000', 'normal 18px SimSun', 0);\n}\nexport function createMotorVehicleInvoice(_a) {\n var data = _a.data, showSample = _a.showSample;\n var canvas = document.createElement('canvas');\n if (!canvas.getContext)\n return;\n var ctx = canvas.getContext('2d');\n //createQrOnCanvas(data, canvas, () => { })\n var imgData = ctx.getImageData(0, 0, 113, 113);\n canvas.width = 1150;\n canvas.height = 821;\n ctx.fillStyle = '#fff';\n ctx.fillRect(0, 0, 1150, 821);\n drawEllipse(ctx, data);\n drawSpecialTag(ctx, data, showSample);\n drawAllLines(ctx);\n drawInvoiceTexts(ctx, data);\n drawInvoiceMainInfo(ctx, data);\n drawSellerAndPurchaser(ctx, data);\n drawCipher(ctx, data);\n drewCarInfo(ctx, data);\n drawAmount(ctx, data);\n drawOtherInfo(ctx, data);\n return changeDpiDataUrl(canvas.toDataURL('image/png', 0.92), 300);\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { getMixLength, arrayGroup, onCount, isEmpty } from '@/utils/basicUtil';\n/*\n* startX 起点x坐标\n* startY 起点y坐标\n* ctx canvas画笔\n* points 点坐标集,用于连画操作,非必填\n*/\nfunction drawLine(_a) {\n var startX = _a.startX, startY = _a.startY, ctx = _a.ctx, points = _a.points;\n ctx.beginPath();\n ctx.moveTo(startX, startY);\n ctx.lineWidth = 1;\n ctx.strokeStyle = '#975124';\n if (points && points.length) {\n points.forEach(function (item) {\n ctx.lineTo(item.pointX, item.pointY);\n });\n }\n ctx.stroke();\n ctx.closePath();\n ctx.save();\n}\nfunction drawAllLines(ctx) {\n var points = [\n { pointX: 1166, pointY: 334 },\n { pointX: 1166, pointY: 1570 },\n { pointX: 26, pointY: 1570 },\n { pointX: 26, pointY: 334 }\n ];\n drawLine({ startX: 26, startY: 334, ctx: ctx, points: points });\n drawLine({ startX: 26, startY: 374, ctx: ctx, points: [{ pointX: 1166, pointY: 374 }] });\n drawLine({ startX: 26, startY: 1526, ctx: ctx, points: [{ pointX: 1166, pointY: 1526 }] });\n drawLine({ startX: 76, startY: 334, ctx: ctx, points: [{ pointX: 76, pointY: 1570 }] });\n drawLine({ startX: 320, startY: 334, ctx: ctx, points: [{ pointX: 320, pointY: 1526 }] });\n drawLine({ startX: 468, startY: 334, ctx: ctx, points: [{ pointX: 468, pointY: 1526 }] });\n drawLine({ startX: 536, startY: 334, ctx: ctx, points: [{ pointX: 536, pointY: 1526 }] });\n drawLine({ startX: 650, startY: 334, ctx: ctx, points: [{ pointX: 650, pointY: 1526 }] });\n drawLine({ startX: 762, startY: 334, ctx: ctx, points: [{ pointX: 762, pointY: 1526 }] });\n drawLine({ startX: 932, startY: 334, ctx: ctx, points: [{ pointX: 932, pointY: 1526 }] });\n drawLine({ startX: 996, startY: 334, ctx: ctx, points: [{ pointX: 996, pointY: 1526 }] });\n}\n/*\n//ctx getContext(\"2d\") 对象\n//lineHeight 段落文本行高\n//byteLength 设置单字节文字一行内的数量\n//text 写入画面的段落文本\n//startLeft 开始绘制文本的 x 坐标位置(相对于画布)\n//startTop 开始绘制文本的 y 坐标位置(相对于画布)\n//ctxFillStyle 字体颜色\n//ctxFont 字体\n//textAlign 是否设置\n*/\nfunction drawInvoiceText(ctx, lineHeight, byteLength, text, startLeft, startTop, ctxFillStyle, ctxFont, textAlign) {\n if (typeof text === 'number') {\n text = text + '';\n }\n if (text === null || text === undefined) {\n text = '';\n }\n function getTrueLength(str) {\n var len = str.length, truelen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n truelen += 2;\n }\n else {\n truelen += 1;\n }\n }\n return truelen;\n }\n function cutString(str, leng) {\n var len = str.length, tlen = len, nlen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n if (nlen + 2 < leng) {\n nlen += 2;\n }\n else {\n tlen = x;\n break;\n }\n }\n else {\n if (nlen + 1 < leng) {\n nlen += 1;\n }\n else {\n tlen = x;\n break;\n }\n }\n }\n return tlen;\n }\n if (textAlign === 1) {\n if (text.length < byteLength) {\n ctx.textAlign = 'center';\n }\n }\n else if (textAlign === 0) {\n ctx.textAlign = 'left';\n }\n else if (textAlign === 2) {\n ctx.textAlign = 'right';\n }\n for (var i = 1; getTrueLength(text) > 0; i++) {\n var tl = cutString(text, byteLength);\n ctx.fillStyle = ctxFillStyle; //字体颜色\n ctx.font = ctxFont; //字体 \n ctx.textBaseline = 'top';\n ctx.fillText(text.substr(0, tl).replace(/^\\s+|\\s+$/, \"\"), startLeft, (i - 1) * lineHeight + startTop);\n text = text.substr(tl);\n }\n ctx.save();\n}\nfunction drawInvoiceTexts(ctx, data) {\n var invoiceType = data.invoiceType, invoiceListCurrent = data.invoiceListCurrent, invoiceListTotalCount = data.invoiceListTotalCount;\n drawInvoiceText(ctx, 18, 40, '销售货物或者提供应税劳务、服务清单', 597, 80, '#9C5223', 'normal 38px KaiTi', 1);\n drawInvoiceText(ctx, 18, 30, '购买方名称:', 56, 210, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '销售方名称:', 56, 242, '#9C5223', 'normal 18px KaiTi', 0);\n function drawInvoiceType() {\n var text = '所属增值税电子普通发票代码:';\n if (Number(invoiceType) === 1) {\n text = '所属增值税专用发票代码:';\n }\n else if (Number(invoiceType) === 2) {\n text = '所属增值税普通发票代码:';\n }\n else if (Number(invoiceType) === 4) {\n text = '所属增值税电子专用发票代码:';\n }\n drawInvoiceText(ctx, 18, 30, text, 56, 274, '#9C5223', 'normal 18px KaiTi', 0);\n }\n drawInvoiceType();\n drawInvoiceText(ctx, 18, 30, '号码:', 538, 274, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '共', 936, 274, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '页', 1018, 274, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '第', 1056, 274, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '页', 1136, 274, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '序号', 34, 344, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '项目名称', 162, 344, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '规格型号', 358, 344, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '单位', 484, 344, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '数量', 576, 344, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '单价', 688, 344, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '金额', 828, 344, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '税率', 946, 344, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '税额', 1064, 344, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '备注', 34, 1536, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '开票日期:', 788, 1578, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '年', 920, 1578, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '月', 966, 1578, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '日', 1012, 1578, '#9C5223', 'normal 18px KaiTi', 0);\n if (invoiceListCurrent === invoiceListTotalCount) { // 判断是否是最后一个样张\n drawInvoiceText(ctx, 18, 30, '小计', 34, 1416, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '折扣', 34, 1456, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '总计', 34, 1496, '#9C5223', 'normal 18px KaiTi', 0);\n }\n else {\n drawInvoiceText(ctx, 18, 30, '小计', 34, 1456, '#9C5223', 'normal 18px KaiTi', 0);\n drawInvoiceText(ctx, 18, 30, '折扣', 34, 1496, '#9C5223', 'normal 18px KaiTi', 0);\n }\n}\nfunction drawGoods(ctx, data) {\n var details = data.details, amount = data.amount, taxAmount = data.taxAmount, invoiceListCurrent = data.invoiceListCurrent, invoiceListTotalCount = data.invoiceListTotalCount, subtotalAmount = data.subtotalAmount, subtotalTaxAmount = data.subtotalTaxAmount, discountAmount = data.discountAmount, discountTaxAmount = data.discountTaxAmount;\n function drawOrder(startX, startY, text) {\n drawInvoiceText(ctx, 18, 26, text, startX, startY, '#000000', 'normal 18px SimSun', 1);\n }\n function drawGoodsName(startX, startY, text) {\n if (getMixLength(text) <= 25) {\n drawInvoiceText(ctx, 18, 26, text, startX, startY, '#000000', 'normal 18px SimSun', 0);\n }\n else if (getMixLength(text) <= 29) {\n drawInvoiceText(ctx, 18, 30, text, startX, startY, '#000000', 'normal 16px SimSun', 0);\n }\n else if (getMixLength(text) <= 33) {\n drawInvoiceText(ctx, 18, 34, text, startX, startY, '#000000', 'normal 14px SimSun', 0);\n }\n else if (getMixLength(text) <= 38) {\n drawInvoiceText(ctx, 18, 39, text, startX, startY, '#000000', 'normal 12px SimSun', 0);\n }\n else if (getMixLength(text) <= 46) {\n drawInvoiceText(ctx, 18, 47, text, startX, startY, '#000000', 'normal 10px SimSun', 0);\n }\n else {\n drawInvoiceText(ctx, 10, 47, text, startX, startY - 4, '#000000', 'normal 10px SimSun', 0);\n }\n }\n function drawSpecification(startX, startY, text) {\n if (getMixLength(text) <= 14) {\n drawInvoiceText(ctx, 18, 15, text, startX, startY, '#000000', 'normal 18px SimSun', 0);\n }\n else if (getMixLength(text) <= 16) {\n drawInvoiceText(ctx, 18, 17, text, startX, startY, '#000000', 'normal 16px SimSun', 0);\n }\n else if (getMixLength(text) <= 19) {\n drawInvoiceText(ctx, 18, 20, text, startX, startY, '#000000', 'normal 13px SimSun', 0);\n }\n else {\n drawInvoiceText(ctx, 13, 22, text, startX, startY - 4, '#000000', 'normal 12px SimSun', 0);\n }\n }\n function drawUnit(startX, startY, text) {\n if (getMixLength(text) <= 7) {\n drawInvoiceText(ctx, 18, 8, text, startX, startY, '#000000', 'normal 18px SimSun', 1);\n }\n else if (getMixLength(text) <= 9) {\n drawInvoiceText(ctx, 18, 10, text, startX, startY, '#000000', 'normal 14px SimSun', 1);\n }\n else if (getMixLength(text) <= 11) {\n drawInvoiceText(ctx, 18, 12, text, startX, startY, '#000000', 'normal 12px SimSun', 1);\n }\n else if (getMixLength(text) <= 13) {\n drawInvoiceText(ctx, 18, 14, text, startX, startY, '#000000', 'normal 10px SimSun', 1);\n }\n else if (getMixLength(text) <= 17) {\n drawInvoiceText(ctx, 18, 18, text, startX, startY, '#000000', 'normal 8px SimSun', 1);\n }\n else {\n drawInvoiceText(ctx, 8, 18, text, startX, startY, '#000000', 'normal 8px SimSun', 1);\n }\n }\n function drawQuantity(startX, startY, text) {\n if (getMixLength(text) <= 10) {\n drawInvoiceText(ctx, 18, 11, text, startX, startY, '#000000', 'normal 18px SimSun', 2);\n }\n else if (getMixLength(text) <= 12) {\n drawInvoiceText(ctx, 18, 13, text, startX, startY, '#000000', 'normal 16px SimSun', 2);\n }\n else if (getMixLength(text) <= 14) {\n drawInvoiceText(ctx, 18, 15, text, startX, startY, '#000000', 'normal 14px SimSun', 2);\n }\n else if (getMixLength(text) <= 16) {\n drawInvoiceText(ctx, 18, 17, text, startX, startY, '#000000', 'normal 12px SimSun', 2);\n }\n else {\n drawInvoiceText(ctx, 12, 17, text, startX, startY, '#000000', 'normal 12px SimSun', 2);\n }\n }\n function drawUnitPrice(startX, startY, text) {\n if (getMixLength(text) <= 10) {\n drawInvoiceText(ctx, 18, 11, text, startX, startY, '#000000', 'normal 18px SimSun', 2);\n }\n else if (getMixLength(text) <= 12) {\n drawInvoiceText(ctx, 18, 13, text, startX, startY, '#000000', 'normal 16px SimSun', 2);\n }\n else if (getMixLength(text) <= 14) {\n drawInvoiceText(ctx, 18, 15, text, startX, startY, '#000000', 'normal 14px SimSun', 2);\n }\n else if (getMixLength(text) <= 16) {\n drawInvoiceText(ctx, 18, 17, text, startX, startY, '#000000', 'normal 12px SimSun', 2);\n }\n else {\n drawInvoiceText(ctx, 12, 17, text, startX, startY, '#000000', 'normal 12px SimSun', 2);\n }\n }\n function drawAmount(startX, startY, text) {\n drawInvoiceText(ctx, 18, 18, text, startX, startY, '#000000', 'normal 18px SimSun', 2);\n }\n function drawTaxRate(startX, startY, text, record) {\n if (record.taxPre === 0 && record.taxPreType === 1 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '免税';\n }\n else if (record.taxPre === 0 && record.taxPreType === 2 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '不征税';\n }\n else if (typeof text === 'number') {\n text = text * 100 + \"%\";\n }\n if (getMixLength(text) <= 5) {\n drawInvoiceText(ctx, 18, 6, text, startX, startY, '#000000', 'normal 18px SimSun', 2);\n }\n else if (getMixLength(text) <= 6) {\n drawInvoiceText(ctx, 18, 7, text, startX, startY, '#000000', 'normal 16px SimSun', 2);\n }\n else if (getMixLength(text) <= 7) {\n drawInvoiceText(ctx, 18, 8, text, startX, startY, '#000000', 'normal 14px SimSun', 2);\n }\n else if (getMixLength(text) <= 8) {\n drawInvoiceText(ctx, 18, 9, text, startX, startY, '#000000', 'normal 12px SimSun', 2);\n }\n else {\n drawInvoiceText(ctx, 12, 9, text, startX, startY, '#000000', 'normal 12px SimSun', 2);\n }\n }\n function drawTaxAmount(startX, startY, text, record) {\n if (record.taxPre === 0 && record.taxPreType === 1 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '***';\n }\n else if (record.taxPre === 0 && record.taxPreType === 2 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '***';\n }\n else {\n text = isEmpty(text) ? '' : text === 0 ? '***' : text;\n }\n drawInvoiceText(ctx, 18, 18, text, startX, startY, '#000000', 'normal 18px SimSun', 2);\n }\n function drawSubTotalAmount() {\n if (invoiceListCurrent === invoiceListTotalCount) { // 最后一页有总计\n drawInvoiceText(ctx, 18, 30, \"\\u00A5\" + subtotalAmount, 922, 1416, '#000000', 'normal 18px Courier New', 2);\n drawInvoiceText(ctx, 18, 30, \"\\u00A5\" + subtotalTaxAmount, 1154, 1416, '#000000', 'normal 18px Courier New', 2);\n drawInvoiceText(ctx, 18, 30, \"\\u00A5\" + amount, 922, 1496, '#000000', 'normal 18px Courier New', 2);\n }\n else {\n drawInvoiceText(ctx, 18, 30, \"\\u00A5\" + subtotalAmount, 922, 1456, '#000000', 'normal 18px Courier New', 2);\n drawInvoiceText(ctx, 18, 30, \"\\u00A5\" + subtotalTaxAmount, 1154, 1456, '#000000', 'normal 18px Courier New', 2);\n }\n }\n function drawTotalDiscountAmount() {\n if (invoiceListCurrent === invoiceListTotalCount) { // 最后一页有总计\n drawInvoiceText(ctx, 18, 30, \"\\u00A5\" + discountAmount, 922, 1456, '#000000', 'normal 18px Courier New', 2);\n drawInvoiceText(ctx, 18, 30, \"\\u00A5\" + discountTaxAmount, 1154, 1456, '#000000', 'normal 18px Courier New', 2);\n drawInvoiceText(ctx, 18, 30, \"\\u00A5\" + taxAmount, 1154, 1496, '#000000', 'normal 18px Courier New', 2);\n }\n else {\n drawInvoiceText(ctx, 18, 30, \"\\u00A5\" + discountAmount, 922, 1496, '#000000', 'normal 18px Courier New', 2);\n drawInvoiceText(ctx, 18, 30, \"\\u00A5\" + discountTaxAmount, 1154, 1496, '#000000', 'normal 18px Courier New', 2);\n }\n }\n details.forEach(function (v, i) {\n drawOrder(48, 384 + i * 40, i + 1);\n drawGoodsName(84, 384 + i * 40, \"\" + (v.shortName || '') + v.goodsName);\n drawSpecification(330, 384 + i * 40, v.specification);\n drawUnit(502, 384 + i * 40, v.unit);\n if (v.quantity && v.unitPrice) {\n drawQuantity(640, 384 + i * 40, v.quantity);\n drawUnitPrice(752, 384 + i * 40, v.unitPrice);\n }\n drawAmount(922, 384 + i * 40, v.amount);\n drawTaxRate(986, 384 + i * 40, v.taxRate, v);\n drawTaxAmount(1154, 384 + i * 40, v.taxAmount, v);\n });\n drawSubTotalAmount();\n drawTotalDiscountAmount();\n}\nfunction drawRemark(ctx, data) {\n var text = data.remark;\n drawInvoiceText(ctx, 18, 120, text, 86, 1530, '#000000', 'normal 18px SimSun', 0);\n}\nfunction drawDate(ctx, data) {\n var drewDate = data.drewDate;\n if (!drewDate) {\n return;\n }\n var dateFormat = new Date(drewDate);\n var year = dateFormat.getFullYear();\n var month = dateFormat.getMonth() + 1;\n var monthStr = month.toString();\n if (month >= 1 && month <= 9) {\n monthStr = '0' + month;\n }\n var day = dateFormat.getDate();\n var dayStr = day.toString();\n if (day >= 0 && day <= 9) {\n dayStr = '0' + day;\n }\n drawInvoiceText(ctx, 18, 50, year, 878, 1578, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 50, monthStr, 944, 1578, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 50, dayStr, 988, 1578, '#000000', 'normal 18px SimSun', 0);\n}\nfunction drawInvoiceMainInfo(ctx, data) {\n var purchaserName = data.purchaserName, sellerName = data.sellerName, invoiceNo = data.invoiceNo, invoiceCode = data.invoiceCode, invoiceListTotalCount = data.invoiceListTotalCount, invoiceListCurrent = data.invoiceListCurrent;\n drawInvoiceText(ctx, 16, 110, purchaserName, 168, 210, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 16, 110, sellerName, 168, 242, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 50, invoiceCode, 300, 274, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 50, invoiceNo, 594, 274, '#000000', 'normal 18px SimSun', 0);\n drawInvoiceText(ctx, 18, 50, invoiceListTotalCount, 986, 274, '#000000', 'normal 18px SimSun', 1);\n drawInvoiceText(ctx, 18, 50, invoiceListCurrent, 1106, 274, '#000000', 'normal 18px SimSun', 1);\n}\nfunction createListPage(data) {\n var canvas = document.createElement('canvas');\n if (!canvas.getContext)\n return;\n canvas.width = 1194;\n canvas.height = 1686;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = '#fff';\n ctx.fillRect(0, 0, 1194, 1686);\n drawAllLines(ctx);\n drawInvoiceTexts(ctx, data);\n drawGoods(ctx, data);\n drawRemark(ctx, data);\n drawInvoiceMainInfo(ctx, data);\n drawDate(ctx, data);\n return canvas.toDataURL();\n}\nexport function createInvoiceList(data) {\n var details = data.details;\n var listArr = arrayGroup(details, 26);\n var imgList = listArr.map(function (v, i) {\n var subtotalAmount = 0;\n var subtotalTaxAmount = 0;\n var discountAmount = 0;\n var discountTaxAmount = 0;\n v.forEach(function (v) {\n if (v.invoiceLineType === 1) {\n discountAmount = onCount.add(discountAmount, v.amount);\n discountTaxAmount = onCount.add(discountTaxAmount, v.taxAmount);\n }\n else {\n subtotalAmount = onCount.add(subtotalAmount, v.amount);\n subtotalTaxAmount = onCount.add(subtotalTaxAmount, v.taxAmount);\n }\n });\n var newData = __assign(__assign({}, data), { details: v, invoiceListTotalCount: listArr.length, invoiceListCurrent: i + 1, subtotalAmount: subtotalAmount.toFixed(2), subtotalTaxAmount: subtotalTaxAmount.toFixed(2), discountAmount: discountAmount.toFixed(2), discountTaxAmount: discountTaxAmount.toFixed(2) });\n return createListPage(newData);\n });\n return imgList;\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { getMixLength } from '@/utils/basicUtil';\n// import customsImg from '@/assets/img/customs.png'\n// @ts-ignore\nimport QRCode from 'qrcode';\n// import changedpi from 'changedpi'\nvar changeDpiDataUrl = require('changedpi').changeDpiDataUrl;\nvar customsImg = require('@/assets/img/customs.png');\n/*\n* startX 起点x坐标\n* startY 起点y坐标\n* ctx canvas画笔\n* points 点坐标集,用于连画操作,非必填\n*/\nfunction drawLine(_a) {\n var startX = _a.startX, startY = _a.startY, ctx = _a.ctx, points = _a.points, _b = _a.lineWidth, lineWidth = _b === void 0 ? 4 : _b, _c = _a.color, color = _c === void 0 ? '#000' : _c;\n ctx.beginPath();\n ctx.moveTo(startX, startY);\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n if (points && points.length) {\n points.forEach(function (item) {\n ctx.lineTo(item.pointX, item.pointY);\n });\n }\n ctx.stroke();\n ctx.closePath();\n ctx.save();\n}\nfunction drawAllLines(ctx) {\n var points = [\n { pointX: 4488, pointY: 517 },\n { pointX: 4488, pointY: 3167 },\n { pointX: 152, pointY: 3167 },\n { pointX: 152, pointY: 517 },\n ];\n drawLine({ startX: 152, startY: 517, ctx: ctx, points: points, lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 640, ctx: ctx, points: [{ pointX: 4488, pointY: 640 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 764, ctx: ctx, points: [{ pointX: 4488, pointY: 764 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 887, ctx: ctx, points: [{ pointX: 4488, pointY: 887 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 1010, ctx: ctx, points: [{ pointX: 4488, pointY: 1010 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 1134, ctx: ctx, points: [{ pointX: 4488, pointY: 1134 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 1257, ctx: ctx, points: [{ pointX: 4488, pointY: 1257 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 1564, ctx: ctx, points: [{ pointX: 4488, pointY: 1564 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 1642, ctx: ctx, points: [{ pointX: 4488, pointY: 1642 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 1844, ctx: ctx, points: [{ pointX: 4488, pointY: 1844 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 2049, ctx: ctx, points: [{ pointX: 4488, pointY: 2049 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 2254, ctx: ctx, points: [{ pointX: 4488, pointY: 2254 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 2458, ctx: ctx, points: [{ pointX: 4488, pointY: 2458 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 2663, ctx: ctx, points: [{ pointX: 4488, pointY: 2663 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 2865, ctx: ctx, points: [{ pointX: 4488, pointY: 2865 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 2954, ctx: ctx, points: [{ pointX: 4488, pointY: 2954 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 152, startY: 3167, ctx: ctx, points: [{ pointX: 4488, pointY: 3167 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1499, startY: 521, ctx: ctx, points: [{ pointX: 1499, pointY: 1134 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2209, startY: 521, ctx: ctx, points: [{ pointX: 2209, pointY: 1134 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 3038, startY: 521, ctx: ctx, points: [{ pointX: 3038, pointY: 1134 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 3697, startY: 521, ctx: ctx, points: [{ pointX: 3697, pointY: 640 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1698, startY: 1010, ctx: ctx, points: [{ pointX: 1698, pointY: 1134 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2715, startY: 1010, ctx: ctx, points: [{ pointX: 2715, pointY: 1134 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 3522, startY: 1010, ctx: ctx, points: [{ pointX: 3522, pointY: 1134 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 4005, startY: 1010, ctx: ctx, points: [{ pointX: 4005, pointY: 1134 }], lineWidth: 4, color: '#000' });\n}\n/**\n * 字段绘制方法\n * @param ctx getContext(\"2d\") 对象\n * @param lineHeight 段落文本行高\n * @param byteLength 设置单字节文字一行内的数量\n * @param text 写入画面的段落文本\n * @param startLeft 开始绘制文本的 x 坐标位置(相对于画布)\n * @param startTop 开始绘制文本的 y 坐标位置(相对于画布)\n * @param ctxFillStyle 字体颜色\n * @param ctxFont 字体\n * @param textAlign 是否设置\n */\nfunction drawCustomsDeclarationText(ctx, lineHeight, byteLength, text, startLeft, startTop, ctxFillStyle, ctxFont, textAlign) {\n if (text === void 0) { text = ''; }\n if (typeof text === 'number') {\n text = text + '';\n }\n if (text === null || text === undefined) {\n text = '';\n }\n function getTrueLength(str) {\n var len = str.length, truelen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n truelen += 2;\n }\n else {\n truelen += 1;\n }\n }\n return truelen;\n }\n function cutString(str, leng) {\n var len = str.length, tlen = len, nlen = 0;\n var isNextLine = false;\n for (var x = 0; x < len; x++) {\n isNextLine = str.substr(x, 1) === '\\n';\n if (isNextLine) {\n tlen = x;\n break;\n }\n if (str.charCodeAt(x) > 128) {\n if (nlen + 2 < leng) {\n nlen += 2;\n }\n else {\n tlen = x;\n break;\n }\n }\n else {\n if (nlen + 1 < leng) {\n nlen += 1;\n }\n else {\n tlen = x;\n break;\n }\n }\n }\n return ({ tlen: tlen, isNextLine: isNextLine });\n }\n if (textAlign === 1) {\n if (text.length < byteLength) {\n ctx.textAlign = 'center';\n }\n }\n else if (textAlign === 0) {\n ctx.textAlign = 'left';\n }\n else if (textAlign === 2) {\n ctx.textAlign = 'right';\n }\n for (var i = 1; getTrueLength(text) > 0; i++) {\n var _a = cutString(text, byteLength), tl = _a.tlen, isNextLine = _a.isNextLine;\n ctx.fillStyle = ctxFillStyle; //字体颜色\n ctx.font = ctxFont; //字体 \n ctx.textBaseline = 'top';\n ctx.fillText(text.substr(0, tl).replace(/^\\s+|\\s+$/, \"\"), startLeft, (i - 1) * lineHeight + startTop);\n if (isNextLine) { // \b换行 要把/n 去掉 所以加了两个字符\n text = text.substr(tl + 1);\n }\n else {\n text = text.substr(tl);\n }\n }\n ctx.save();\n}\nfunction drawCustomsDeclarationTexts(ctx, data) {\n console.log(data);\n drawCustomsDeclarationText(ctx, 89, 40, '中华人民共和国海关出口货物报关单', 2340, 180, '#000', 'normal 90px SimSun', 1);\n drawCustomsDeclarationText(ctx, 38, 30, '预录入编号:', 155, 449, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '海关编号:', 1522, 449, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '海关编号:', 1522, 449, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '仅供核对用', 3292, 449, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '页码/页数:', 4171, 449, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '境内发货人', 178, 530, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, \"\\u51FA\\u5883\\u5173\\u522B (\" + data.importExportPort + \")\", 1527, 530, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '出口日期', 2237, 530, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '申报日期', 3066, 530, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '备案号', 3720, 530, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '境外收货人', 178, 655, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, \"\\u8FD0\\u8F93\\u65B9\\u5F0F (\" + data.cusTrafficMode + \")\", 1527, 655, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '运输工具名称及航次号', 2237, 655, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '提运单号', 3066, 655, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 36, \"\\u751F\\u4EA7\\u9500\\u552E\\u5355\\u4F4D (\" + data.ownerSocialCreditCode + \")\", 178, 779, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, \"\\u76D1\\u7BA1\\u65B9\\u5F0F (\" + data.superviseModeCode + \")\", 1527, 779, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, \"\\u5F81\\u514D\\u6027\\u8D28 (\" + data.cutMode + \")\", 2237, 779, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '许可证号', 3066, 779, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '合同协议号', 178, 901, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '贸易国(地区)', 1527, 901, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, \"\\u8FD0\\u62B5\\u56FD\\uFF08\\u5730\\u533A\\uFF09 (\" + data.cusTradeCountry + \") \", 2237, 901, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, \"\\u6307\\u8FD0\\u6E2F (\" + data.distinatePort + \")\", 3066, 901, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, \"\\u79BB\\u5883\\u53E3\\u5CB8 (\" + data.departurePortCode + \")\", 3720, 901, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, \"\\u5305\\u88C5\\u79CD\\u7C7B (\" + data.wrapType + \")\", 178, 1023, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '件数', 1527, 1023, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '毛重(千克)', 1724, 1023, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '净重(千克)', 2237, 1023, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, \"\\u6210\\u4EA4\\u65B9\\u5F0F (\" + data.transacMode + \")\", 2736, 1023, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '运费', 3066, 1023, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '保费', 3547, 1023, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '杂费', 4028, 1023, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '附随单证及编号', 178, 1156, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '标记唛码备注', 178, 1279, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '项号', 192, 1585, '#000', 'normal 40px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '商品编号', 400, 1585, '#000', 'normal 40px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '商品名称及规格型号', 1239, 1585, '#000', 'normal 40px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '数量及单位', 2279, 1585, '#000', 'normal 40px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '单价/总价/币制', 2626, 1585, '#000', 'normal 40px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '原产国(地区)', 2945, 1585, '#000', 'normal 40px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '最终目的国(地区)', 3226, 1585, '#000', 'normal 40px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '境内货源地', 3809, 1585, '#000', 'normal 40px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '征免', 4326, 1585, '#000', 'normal 40px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '特殊关系确认:', 783, 2893, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '价格影响确认:', 1689, 2893, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '支付特许权使用费确认:', 2596, 2893, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '自报自缴:', 3678, 2893, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '报关人员', 177, 2993, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '报关人员证号', 660, 2993, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '电话', 1315, 2993, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 50, '兹申明对以上内容承担如实申报、依法纳税之法律责任', 1822, 2993, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '海关批注及签章', 3062, 2993, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, \"\\u7533\\u62A5\\u5355\\u4F4D\", 177, 3107, '#000', 'normal 42px SimSun', 0);\n drawCustomsDeclarationText(ctx, 38, 30, '申报单位(签章)', 2515, 3107, '#000', 'normal 42px SimSun', 0);\n}\nfunction drawMainInfo(ctx, data) {\n var preEntryId = data.preEntryId, // 预录入编号\n entryId = data.entryId, // 报关单号码\n consignorCname = data.consignorCname, // 境内发货人\n importExportPortName = data.importExportPortName, //出境关别\n importExportDate = data.importExportDate, // 出口日期\n declareDate = data.declareDate, // 申报日期\n manualNo = data.manualNo, //备案号\n consigneeEname = data.consigneeEname, //境外收货人\n cusTrafficModeName = data.cusTrafficModeName, // 运输方式\n trafficName = data.trafficName, // 运输工具名称及航次号\n billNo = data.billNo, // 提运单号\n ownerName = data.ownerName, // 生产销售单位\n superviseModeCodeName = data.superviseModeCodeName, // 监管方式\n cutModeName = data.cutModeName, // 征免性质\n licenseNo = data.licenseNo, // 许可证号\n contractNo = data.contractNo, // 合同协议号\n // 贸易国\n cusTradeCountry = data.cusTradeCountry, //运抵国编号\n distinatePort = data.distinatePort, // 指运港编号\n cusTradeCountryName = data.cusTradeCountryName, // 运抵国\n distinatePortName = data.distinatePortName, //指运港\n departurePortCodeName = data.departurePortCodeName, //离境口岸\n wrapTypeName = data.wrapTypeName, // 包装种类\n packNum = data.packNum, // 件数\n grossWeight = data.grossWeight, // 毛重\n netWeight = data.netWeight, // 净重\n transacModeName = data.transacModeName, // 成交方式\n feeCurrency = data.feeCurrency, //运费币制\n feeMark = data.feeMark, //运费标记\n feeRate = data.feeRate, // 运费\n insuranceCurrency = data.insuranceCurrency, // 保险费币值\n insuranceMark = data.insuranceMark, // 保险费标记\n insuranceRate = data.insuranceRate, // 保险费\n otherCurrency = data.otherCurrency, // 杂费币值\n otherMark = data.otherMark, // 杂费标记\n otherRate = data.otherRate, // 杂费\n //随附单证及编号\n remark = data.remark, // 备注\n agentName = data.agentName, //申报单位\n agentSocialCreditCode = data.agentSocialCreditCode, //申报单位编码\n ownerSocialCreditCode = data.ownerSocialCreditCode //税号\n ;\n function calcAndDraw(startX, startY, text) {\n if (getMixLength(text) <= 56) {\n drawCustomsDeclarationText(ctx, 38, 56, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n else if (getMixLength(text) <= 76) {\n drawCustomsDeclarationText(ctx, 40, 64, text, startX, startY - 15, '#000000', 'normal 42px SimSun', 0);\n }\n else {\n drawCustomsDeclarationText(ctx, 30, 66, text, startX, startY - 4, '#000000', 'normal 40px SimSun', 0);\n }\n }\n calcAndDraw(395, 447, preEntryId);\n calcAndDraw(1723, 447, entryId);\n calcAndDraw(180, 580, consignorCname);\n calcAndDraw(1529, 587, importExportPortName);\n calcAndDraw(2240, 587, importExportDate);\n calcAndDraw(3069, 587, declareDate);\n calcAndDraw(3724, 587, manualNo);\n calcAndDraw(180, 708, consigneeEname);\n calcAndDraw(1529, 708, cusTrafficModeName);\n calcAndDraw(2239, 708, trafficName);\n calcAndDraw(3066, 708, billNo);\n calcAndDraw(180, 832, ownerName);\n calcAndDraw(1529, 832, superviseModeCodeName);\n calcAndDraw(2241, 832, cutModeName);\n calcAndDraw(3068, 832, licenseNo);\n calcAndDraw(179, 953, contractNo);\n calcAndDraw(2239, 953, cusTradeCountryName);\n calcAndDraw(3069, 953, distinatePortName);\n calcAndDraw(3720, 953, departurePortCodeName);\n calcAndDraw(179, 1075, wrapTypeName);\n calcAndDraw(1529, 1075, packNum);\n calcAndDraw(1729, 1075, grossWeight);\n calcAndDraw(2240, 1075, netWeight);\n calcAndDraw(2737, 1075, transacModeName);\n calcAndDraw(380, 3105, agentName + '(' + agentSocialCreditCode + ')');\n if (feeRate && feeMark) {\n calcAndDraw(3071, 1079, (feeCurrency ? feeCurrency : '000') + \"/\" + feeRate + \"/\" + feeMark);\n }\n if (insuranceRate && insuranceMark) {\n calcAndDraw(3549, 1079, (insuranceCurrency ? insuranceCurrency : '000') + \"/\" + insuranceRate + \"/\" + insuranceMark);\n }\n if (otherRate && otherMark) {\n calcAndDraw(4030, 1079, (otherCurrency ? otherCurrency : '000') + \"/\" + otherRate + \"/\" + otherMark);\n }\n drawCustomsDeclarationText(ctx, 48, 180, remark, 180, 1333, '#000000', 'normal 48px SimSun', 0);\n}\nfunction drawDetails(ctx, data) {\n var _a = data.goodsDetailList, goodsDetailList = _a === void 0 ? [] : _a;\n function drawGoodsNo(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 40, 30, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n function drawCusOriginCountryName(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 40, 30, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n function drawGoodsCode(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 40, 30, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n function drawGoodsName(startX, startY, text) {\n if (Array.from(text).length < 120) {\n drawCustomsDeclarationText(ctx, 54, 44, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n else {\n drawCustomsDeclarationText(ctx, 44, 75, text, startX, startY, '#000000', 'normal 30px SimSun', 0);\n }\n }\n function drawGoodsQuantityAndUnit(startX, startY, _a) {\n var quantity = _a.quantity, unit = _a.unit, quantity1 = _a.quantity1, quantity2 = _a.quantity2, unit1Name = _a.unit1Name, unit2Name = _a.unit2Name;\n var text = \"\" + (quantity || '') + (unit || '');\n var text1 = \"\" + (quantity1 || '') + (unit1Name || '');\n var text2 = \"\" + (quantity2 || '') + (unit2Name || '');\n drawCustomsDeclarationText(ctx, 40, 53, text, startX, startY, '#000000', 'normal 48px SimSun', 2);\n drawCustomsDeclarationText(ctx, 40, 53, text1, startX, startY + 55, '#000000', 'normal 48px SimSun', 2);\n drawCustomsDeclarationText(ctx, 40, 53, text2, startX, startY + 110, '#000000', 'normal 48px SimSun', 2);\n }\n function drawGoodsPriceAndTotalAmount(startX, startY, _a) {\n var unitPrice = _a.unitPrice, declTotal = _a.declTotal, tradeCurrency = _a.tradeCurrency;\n drawCustomsDeclarationText(ctx, 40, 53, unitPrice, startX, startY, '#000000', 'normal 48px SimSun', 2);\n drawCustomsDeclarationText(ctx, 40, 53, declTotal, startX, startY + 55, '#000000', 'normal 48px SimSun', 2);\n drawCustomsDeclarationText(ctx, 40, 53, tradeCurrency, startX, startY + 110, '#000000', 'normal 48px SimSun', 2);\n }\n function drawDestinationCountryName(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 40, 53, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n function drawDutyModeName(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 40, 53, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n function drawDistrictCodeName(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 40, 53, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n goodsDetailList.forEach(function (v, i) {\n drawGoodsNo(196, 1660 + i * 204, v.goodsNo);\n drawGoodsCode(401, 1660 + i * 204, v.goodsCode);\n drawGoodsName(1000, 1660 + i * 204, \"\" + v.goodsName + v.specification);\n drawGoodsQuantityAndUnit(2500, 1660 + i * 204, { quantity: v.quantity, unit: v.unit, quantity1: v.quantity1, quantity2: v.quantity2, unit1Name: v.unit1Name, unit2Name: v.unit2Name });\n drawGoodsPriceAndTotalAmount(2860, 1660 + i * 204, { unitPrice: v.unitPrice, declTotal: v.declTotal, tradeCurrency: v.tradeCurrency });\n drawCusOriginCountryName(2960, 1660 + i * 204, v.cusOriginCountryName + \"(\" + v.cusOriginCountry + \")\");\n drawDestinationCountryName(3226, 1660 + i * 204, v.destinationCountryName + \"(\" + v.destinationCountry + \")\");\n drawDistrictCodeName(3800, 1660 + i * 204, v.districtCodeName + \"(\" + v.districtCode + \")\");\n drawDutyModeName(4280, 1660 + i * 204, v.dutyModeName);\n });\n}\nfunction drawBarCode(ctx, data) {\n var entryId = data.entryId;\n drawCustomsDeclarationText(ctx, 38, 55, \"*\" + entryId + \"*\", 3144, 133, '#000000', 'normal 160px C39HrP24DhTt', 0);\n // C39HrP24DhTt\n}\nexport function createCustomsDeclarationForm(_a) {\n var data = _a.data;\n return __awaiter(this, void 0, void 0, function () {\n function loadImg(_url) {\n var img = new Image();\n img.src = _url;\n return new Promise(function (resolve, reject) {\n img.onload = function () {\n resolve(img);\n };\n });\n }\n var entryId, goodsDetailList, pageIndex, imageUrls, startIndex, endIndex, i, temp, qrContent, img, opts, qrUrl, qrImg, canvas, ctx, scale;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n entryId = data.entryId, goodsDetailList = data.goodsDetailList;\n pageIndex = Math.ceil(goodsDetailList.length / 7);\n imageUrls = [];\n startIndex = 0;\n endIndex = 6;\n i = 0;\n _b.label = 1;\n case 1:\n if (!(i < pageIndex)) return [3 /*break*/, 6];\n startIndex = startIndex + i * 6;\n endIndex = endIndex + i * 6;\n temp = JSON.parse(JSON.stringify(goodsDetailList));\n temp = Array.from(temp).slice(startIndex, endIndex);\n data.goodsDetailList = temp;\n qrContent = \"*\" + entryId + \"*\";\n return [4 /*yield*/, loadImg(customsImg.default)];\n case 2:\n img = _b.sent();\n opts = {\n errorCorrectionLevel: 'M',\n margin: 0,\n width: 235\n };\n return [4 /*yield*/, QRCode.toDataURL(qrContent, opts)];\n case 3:\n qrUrl = _b.sent();\n return [4 /*yield*/, loadImg(qrUrl)\n //console.log(qrImg)\n ];\n case 4:\n qrImg = _b.sent();\n canvas = document.createElement('canvas');\n if (!canvas.getContext)\n return [2 /*return*/];\n ctx = canvas.getContext('2d');\n console.log('window.devicePixelRatio', window.devicePixelRatio);\n scale = 0.5;\n canvas.width = 4680 * scale;\n canvas.height = 3307 * scale;\n ctx.scale(scale, scale);\n ctx.fillStyle = '#fff';\n ctx.fillRect(0, 0, 4680, 3307);\n ctx.drawImage(img, 155, 144, 239, 225); // 海关logo\n ctx.drawImage(qrImg, 4249, 144, 235, 235); // 二维码\n drawAllLines(ctx);\n drawCustomsDeclarationTexts(ctx, data);\n drawMainInfo(ctx, data);\n drawDetails(ctx, data);\n drawBarCode(ctx, data);\n drawCustomsDeclarationText(ctx, 38, 30, \" \" + (i + 1) + \"/\" + pageIndex, 4371, 449, '#000', 'normal 38px SimSun', 0);\n // var imgData=ctx.getImageData(0,0,4680,3307)\n // canvas.setAttribute(\"width\",'3508')\n // canvas.setAttribute(\"height\",'2480')\n // //将获得的图像副本,重新绘制到画布,完成画布的大小改变\n // ctx.putImageData(imgData,0,0)\n imageUrls.push(changeDpiDataUrl(canvas.toDataURL('image/png', 0.92), 300));\n data.goodsDetailList = goodsDetailList;\n _b.label = 5;\n case 5:\n i++;\n return [3 /*break*/, 1];\n case 6: return [2 /*return*/, imageUrls];\n }\n });\n });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { getMixLength, digitUppercase } from '@/utils/basicUtil';\n// import customsImg from '@/assets/img/customs.png'\n// @ts-ignore\nimport QRCode from 'qrcode';\n// import changedpi from 'changedpi'\nvar changeDpiDataUrl = require('changedpi').changeDpiDataUrl;\nvar customsImg = require('@/assets/img/customs.png');\n/*\n* startX 起点x坐标\n* startY 起点y坐标\n* ctx canvas画笔\n* points 点坐标集,用于连画操作,非必填\n*/\nfunction drawLine(_a) {\n var startX = _a.startX, startY = _a.startY, ctx = _a.ctx, points = _a.points, _b = _a.lineWidth, lineWidth = _b === void 0 ? 4 : _b, _c = _a.color, color = _c === void 0 ? '#000' : _c;\n ctx.beginPath();\n ctx.moveTo(startX, startY);\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n if (points && points.length) {\n points.forEach(function (item) {\n ctx.lineTo(item.pointX, item.pointY);\n });\n }\n ctx.stroke();\n ctx.closePath();\n ctx.save();\n}\nfunction drawAllLines(ctx) {\n var points = [\n { pointX: 4169, pointY: 667 },\n { pointX: 4169, pointY: 2874 },\n { pointX: 512, pointY: 2874 },\n { pointX: 512, pointY: 667 },\n ];\n drawLine({ startX: 512, startY: 667, ctx: ctx, points: points, lineWidth: 4, color: '#000' });\n drawLine({ startX: 623, startY: 667, ctx: ctx, points: [{ pointX: 623, pointY: 1134 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1001, startY: 667, ctx: ctx, points: [{ pointX: 1001, pointY: 1890 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 968, startY: 2029, ctx: ctx, points: [{ pointX: 968, pointY: 2496 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1679, startY: 2029, ctx: ctx, points: [{ pointX: 1679, pointY: 2496 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2135, startY: 2029, ctx: ctx, points: [{ pointX: 2135, pointY: 2496 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2813, startY: 2029, ctx: ctx, points: [{ pointX: 2813, pointY: 2874 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 3480, startY: 2029, ctx: ctx, points: [{ pointX: 3480, pointY: 2874 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 3169, startY: 1890, ctx: ctx, points: [{ pointX: 3169, pointY: 2029 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 3514, startY: 1890, ctx: ctx, points: [{ pointX: 3514, pointY: 2029 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2074, startY: 1134, ctx: ctx, points: [{ pointX: 2074, pointY: 1890 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2519, startY: 1134, ctx: ctx, points: [{ pointX: 2519, pointY: 1890 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2752, startY: 1134, ctx: ctx, points: [{ pointX: 2752, pointY: 1890 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 3247, startY: 1134, ctx: ctx, points: [{ pointX: 3247, pointY: 1890 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 3514, startY: 1134, ctx: ctx, points: [{ pointX: 3514, pointY: 1890 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1501, startY: 823, ctx: ctx, points: [{ pointX: 1501, pointY: 978 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1801, startY: 823, ctx: ctx, points: [{ pointX: 1801, pointY: 978 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2340, startY: 667, ctx: ctx, points: [{ pointX: 2340, pointY: 1134 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2451, startY: 667, ctx: ctx, points: [{ pointX: 2451, pointY: 1134 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2829, startY: 667, ctx: ctx, points: [{ pointX: 2829, pointY: 1134 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 623, startY: 823, ctx: ctx, points: [{ pointX: 2340, pointY: 823 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 623, startY: 979, ctx: ctx, points: [{ pointX: 2340, pointY: 979 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2451, startY: 823, ctx: ctx, points: [{ pointX: 4168, pointY: 823 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2451, startY: 979, ctx: ctx, points: [{ pointX: 4168, pointY: 979 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 512, startY: 1135, ctx: ctx, points: [{ pointX: 4169, pointY: 1135 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 512, startY: 1291, ctx: ctx, points: [{ pointX: 4169, pointY: 1291 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 512, startY: 1891, ctx: ctx, points: [{ pointX: 4169, pointY: 1891 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 512, startY: 2030, ctx: ctx, points: [{ pointX: 4169, pointY: 2030 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 512, startY: 2186, ctx: ctx, points: [{ pointX: 2813, pointY: 2186 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 512, startY: 2342, ctx: ctx, points: [{ pointX: 2813, pointY: 2342 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 512, startY: 2498, ctx: ctx, points: [{ pointX: 2813, pointY: 2498 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 2901, startY: 2179, ctx: ctx, points: [{ pointX: 3390, pointY: 2179 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 3574, startY: 2179, ctx: ctx, points: [{ pointX: 4063, pointY: 2179 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 3085, startY: 2701, ctx: ctx, points: [{ pointX: 3452, pointY: 2701 }], lineWidth: 4, color: '#000' });\n}\n/**\n * 字段绘制方法\n * @param ctx getContext(\"2d\") 对象\n * @param lineHeight 段落文本行高\n * @param byteLength 设置单字节文字一行内的数量\n * @param text 写入画面的段落文本\n * @param startLeft 开始绘制文本的 x 坐标位置(相对于画布)\n * @param startTop 开始绘制文本的 y 坐标位置(相对于画布)\n * @param ctxFillStyle 字体颜色\n * @param ctxFont 字体\n * @param textAlign 是否设置\n */\nfunction drawCustomsDeclarationText(ctx, lineHeight, byteLength, text, startLeft, startTop, ctxFillStyle, ctxFont, textAlign) {\n if (text === void 0) { text = ''; }\n if (typeof text === 'number') {\n text = text + '';\n }\n if (text === null || text === undefined) {\n text = '';\n }\n function getTrueLength(str) {\n var len = str.length, truelen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n truelen += 2;\n }\n else {\n truelen += 1;\n }\n }\n return truelen;\n }\n function cutString(str, leng) {\n var len = str.length, tlen = len, nlen = 0;\n var isNextLine = false;\n for (var x = 0; x < len; x++) {\n isNextLine = str.substr(x, 1) === '\\n';\n if (isNextLine) {\n tlen = x;\n break;\n }\n if (str.charCodeAt(x) > 128) {\n if (nlen + 2 < leng) {\n nlen += 2;\n }\n else {\n tlen = x;\n break;\n }\n }\n else {\n if (nlen + 1 < leng) {\n nlen += 1;\n }\n else {\n tlen = x;\n break;\n }\n }\n }\n return ({ tlen: tlen, isNextLine: isNextLine });\n }\n if (textAlign === 1) {\n if (text.length < byteLength) {\n ctx.textAlign = 'center';\n }\n }\n else if (textAlign === 0) {\n ctx.textAlign = 'left';\n }\n else if (textAlign === 2) {\n ctx.textAlign = 'right';\n }\n for (var i = 1; getTrueLength(text) > 0; i++) {\n var _a = cutString(text, byteLength), tl = _a.tlen, isNextLine = _a.isNextLine;\n ctx.fillStyle = ctxFillStyle; //字体颜色\n ctx.font = ctxFont; //字体 \n ctx.textBaseline = 'top';\n var fontSize = Number(ctxFont.split(' ')[1].replace('px', ''));\n var deltaH = (lineHeight - fontSize) / 2;\n ctx.fillText(text.substr(0, tl).replace(/^\\s+|\\s+$/, \"\"), startLeft, (i - 1) * lineHeight + deltaH + startTop);\n if (isNextLine) { // \b换行 要把/n 去掉 所以加了两个字符\n text = text.substr(tl + 1);\n }\n else {\n text = text.substr(tl);\n }\n }\n ctx.save();\n}\nfunction drawCustomsDeclarationTexts(ctx, data) {\n console.log(data);\n drawCustomsDeclarationText(ctx, 183, 20, '海关进口关税', 1445, 345, '#000', 'normal 133px SimSun', 0);\n drawCustomsDeclarationText(ctx, 183, 20, '专用缴款书', 2507, 345, '#000', 'normal 133px SimSun', 0);\n drawCustomsDeclarationText(ctx, 94, 20, '收入系统: 海关系统', 667, 567, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 94, 10, '填发日期: ', 1679, 567, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 94, 10, '号码 No.', 3096, 572, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 3, '收款单位', 539, 723, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 94, 10, '收入机关', 667, 695, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 94, 20, '科 目', 667, 850, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 94, 10, '收款国库', 667, 1006, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 99, 10, '预算级次', 1523, 850, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 3, '收款单位', 2362, 678, '#000', 'normal 67px SimSun', 0);\n ctx.save();\n ctx.translate(2440, 1000);\n ctx.rotate(90 * Math.PI / 180);\n drawCustomsDeclarationText(ctx, 83, 3, '(', 0, 0, '#000', 'normal 67px SimSun', 0);\n //将旋转之后的元素返回原画布\n ctx.restore();\n ctx.rotate(-90 * Math.PI / 180);\n ctx.translate(-2440, -1000);\n ctx.translate(2440, 1100);\n ctx.rotate(90 * Math.PI / 180);\n drawCustomsDeclarationText(ctx, 83, 3, ')', 0, 0, '#000', 'normal 67px SimSun', 0);\n //将旋转之后的元素返回原画布\n ctx.restore();\n ctx.rotate(-90 * Math.PI / 180);\n ctx.translate(-2440, -1100);\n drawCustomsDeclarationText(ctx, 83, 3, '人', 2362, 1017, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '名 称', 2496, 695, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '账 号', 2496, 850, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '开户银行', 2496, 1006, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '税 号', 584, 1162, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 30, '货 物 名 称', 1234, 1162, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 30, '数 量', 2162, 1162, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 10, '单位', 2562, 1162, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '完税价格(¥)', 2796, 1162, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '税率(%)', 3263, 1162, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '税款金额(¥)', 3641, 1162, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '金额人民币(大写)', 606, 1912, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '合计(¥)', 3207, 1912, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '申请单位编号', 556, 2057, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '合同(批文)号', 556, 2212, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '缴款期限', 556, 2368, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '报关单编号', 1723, 2057, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '运输工具(号)', 1723, 2212, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '提/装货单号', 1723, 2368, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 3, '备注', 550, 2573, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '填 制 单 位', 2940, 2079, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 30, '收款国库(银行)', 3596, 2079, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 20, '制单人', 2874, 2629, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 30, '复核人', 2874, 2740, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 83, 100, '从填发缴款书之日起限15日内缴纳(期末遇法定节假日顺延),逾期按日征收税款总额万分之五的滞纳金', 634, 2885, '#000', 'normal 67px SimSun', 0);\n}\nfunction drawMainInfo(ctx, data) {\n var invoiceNo = data.invoiceNo, //缴款书号码\n _a = data.purchaserCoveringWarrantVo, exchequerNo = _a.exchequerNo, //收款国库代码\n deliveryNum = _a.deliveryNum, //提运单号\n portCode = _a.portCode, //进口口岸代码\n purchaserTaxNo2 = _a.purchaserTaxNo2, //缴款单位二税号\n drewDate = _a.drewDate, //填发日期 yyyy-MM-dd\n payDate = _a.payDate, //缴款期限\n applyCompanyNo = _a.applyCompanyNo, //申请单位编码\n incomeOrganization = _a.incomeOrganization, //收入机关\n contractNo = _a.contractNo, //合同号\n sources = _a.sources, //数据来源\n purchaserTaxNo1 = _a.purchaserTaxNo1, //缴款单位一税号\n amount = _a.amount, //税款金额\n transportWay = _a.transportWay, //运输工具\n manifestNo = _a.manifestNo, //报关单编号\n purchaserName1 = _a.purchaserName1, //缴款单位一名称\n budgetNo = _a.budgetNo, //预算科目代码\n tradeWay = _a.tradeWay, //贸易方式\n purchaserName2 = _a.purchaserName2, purchaserInvoiceDetailVOList = data.purchaserInvoiceDetailVOList;\n function taxInfoAndDraw(startX, startY, text) {\n if (getMixLength(text) <= 13) {\n drawCustomsDeclarationText(ctx, 94, 60, text, startX, startY, '#000000', 'normal 67px SimSun', 0);\n }\n else if (getMixLength(text) <= 20) {\n drawCustomsDeclarationText(ctx, 94, 64, text, startX, startY, '#000000', 'normal 43px SimSun', 0);\n }\n else {\n drawCustomsDeclarationText(ctx, 94, 66, text, startX, startY, '#000000', 'normal 40px SimSun', 0);\n }\n }\n function goodsNameAndDraw(startX, startY, text) {\n if (getMixLength(text) <= 30) {\n drawCustomsDeclarationText(ctx, 94, 60, text, startX, startY, '#000000', 'normal 67px SimSun', 0);\n }\n else if (getMixLength(text) <= 48) {\n drawCustomsDeclarationText(ctx, 94, 64, text, startX, startY, '#000000', 'normal 43px SimSun', 0);\n }\n else {\n drawCustomsDeclarationText(ctx, 94, 66, text, startX, startY, '#000000', 'normal 40px SimSun', 0);\n }\n }\n function quantityAndDraw(startX, startY, text) {\n if (getMixLength(text) <= 11) {\n drawCustomsDeclarationText(ctx, 94, 60, text, startX, startY, '#000000', 'normal 67px SimSun', 1);\n }\n else if (getMixLength(text) <= 16) {\n drawCustomsDeclarationText(ctx, 94, 64, text, startX, startY, '#000000', 'normal 43px SimSun', 1);\n }\n else {\n drawCustomsDeclarationText(ctx, 94, 66, text, startX, startY, '#000000', 'normal 40px SimSun', 1);\n }\n }\n function unitAndDraw(startX, startY, text) {\n if (getMixLength(text) <= 6) {\n drawCustomsDeclarationText(ctx, 94, 60, text, startX, startY, '#000000', 'normal 67px SimSun', 1);\n }\n else if (getMixLength(text) <= 10) {\n drawCustomsDeclarationText(ctx, 94, 64, text, startX, startY, '#000000', 'normal 43px SimSun', 1);\n }\n else {\n drawCustomsDeclarationText(ctx, 94, 66, text, startX, startY, '#000000', 'normal 40px SimSun', 1);\n }\n }\n function unitPriceAndDraw(startX, startY, text) {\n if (getMixLength(text) <= 13) {\n drawCustomsDeclarationText(ctx, 94, 60, text, startX, startY, '#000000', 'normal 67px SimSun', 2);\n }\n else if (getMixLength(text) <= 20) {\n drawCustomsDeclarationText(ctx, 94, 64, text, startX, startY, '#000000', 'normal 43px SimSun', 2);\n }\n else {\n drawCustomsDeclarationText(ctx, 94, 66, text, startX, startY, '#000000', 'normal 40px SimSun', 2);\n }\n }\n function taxAmountAndDraw(startX, startY, text, align) {\n if (getMixLength(text) <= 17) {\n drawCustomsDeclarationText(ctx, 94, 60, text, startX, startY, '#000000', 'normal 67px SimSun', align);\n }\n else if (getMixLength(text) <= 20) {\n drawCustomsDeclarationText(ctx, 94, 64, text, startX, startY, '#000000', 'normal 43px SimSun', align);\n }\n else {\n drawCustomsDeclarationText(ctx, 94, 66, text, startX, startY, '#000000', 'normal 40px SimSun', align);\n }\n }\n drawCustomsDeclarationText(ctx, 85, 20, drewDate, 2014, 567, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 40, invoiceNo, 3360, 572, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 40, purchaserName1, 2851, 667, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 40, purchaserName2, 2851, 734, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 30, incomeOrganization, 1023, 667, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 30, '进口关税', 1023, 823, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 10, '中央', 1812, 823, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 30, exchequerNo, 1023, 978, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 18, applyCompanyNo, 978, 2029, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 18, contractNo, 978, 2184, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 18, payDate, 978, 2340, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 18, manifestNo, 2145, 2029, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 18, transportWay, 2145, 2184, '#000', 'normal 67px SimSun', 0);\n drawCustomsDeclarationText(ctx, 85, 18, deliveryNum, 2145, 2340, '#000', 'normal 67px SimSun', 0);\n // drawCustomsDeclarationText(ctx, 75, 18, amount, 3524, 1890, '#000', 'normal 67px SimSun', 0)\n drawCustomsDeclarationText(ctx, 85, 50, digitUppercase(amount).replace('元', '圆'), 1212, 1912, '#000', 'normal 67px SimSun', 0);\n taxAmountAndDraw(3524, 1890, amount, 0);\n if (purchaserInvoiceDetailVOList && Array.isArray(purchaserInvoiceDetailVOList)) {\n purchaserInvoiceDetailVOList.forEach(function (v, i) {\n taxInfoAndDraw(522, 1284 + i * 90, i + 1 + \". \" + v.taxInfo);\n goodsNameAndDraw(1023, 1284 + i * 90, v.goodsName);\n quantityAndDraw(2290, 1284 + i * 90, v.quantity);\n unitAndDraw(2630, 1284 + i * 90, v.unit);\n unitPriceAndDraw(3240, 1284 + i * 90, v.unitPrice);\n quantityAndDraw(3376, 1284 + i * 90, v.taxRate);\n taxAmountAndDraw(4150, 1284 + i * 90, v.taxAmount, 2);\n });\n }\n}\nfunction drawDetails(ctx, data) {\n var _a = data.goodsDetailList, goodsDetailList = _a === void 0 ? [] : _a;\n function drawGoodsNo(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 40, 30, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n function drawCusOriginCountryName(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 40, 30, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n function drawGoodsCode(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 40, 30, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n function drawGoodsName(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 54, 44, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n function drawGoodsQuantityAndUnit(startX, startY, _a) {\n var quantity = _a.quantity, unit = _a.unit, quantity1 = _a.quantity1, quantity2 = _a.quantity2, unit1Name = _a.unit1Name, unit2Name = _a.unit2Name;\n var text = \"\" + (quantity || '') + (unit || '');\n var text1 = \"\" + (quantity1 || '') + (unit1Name || '');\n var text2 = \"\" + (quantity2 || '') + (unit2Name || '');\n drawCustomsDeclarationText(ctx, 40, 53, text, startX, startY, '#000000', 'normal 48px SimSun', 2);\n drawCustomsDeclarationText(ctx, 40, 53, text1, startX, startY + 55, '#000000', 'normal 48px SimSun', 2);\n drawCustomsDeclarationText(ctx, 40, 53, text2, startX, startY + 110, '#000000', 'normal 48px SimSun', 2);\n }\n function drawGoodsPriceAndTotalAmount(startX, startY, _a) {\n var unitPrice = _a.unitPrice, declTotal = _a.declTotal, tradeCurrency = _a.tradeCurrency;\n drawCustomsDeclarationText(ctx, 40, 53, unitPrice, startX, startY, '#000000', 'normal 48px SimSun', 2);\n drawCustomsDeclarationText(ctx, 40, 53, declTotal, startX, startY + 55, '#000000', 'normal 48px SimSun', 2);\n drawCustomsDeclarationText(ctx, 40, 53, tradeCurrency, startX, startY + 110, '#000000', 'normal 48px SimSun', 2);\n }\n function drawDestinationCountryName(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 40, 53, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n function drawDutyModeName(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 40, 53, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n function drawDistrictCodeName(startX, startY, text) {\n drawCustomsDeclarationText(ctx, 40, 53, text, startX, startY, '#000000', 'normal 48px SimSun', 0);\n }\n goodsDetailList.forEach(function (v, i) {\n drawGoodsNo(196, 1660 + i * 204, v.goodsNo);\n drawGoodsCode(401, 1660 + i * 204, v.goodsCode);\n drawGoodsName(1000, 1660 + i * 204, \"\" + v.goodsName + v.specification);\n drawGoodsQuantityAndUnit(2500, 1660 + i * 204, { quantity: v.quantity, unit: v.unit, quantity1: v.quantity1, quantity2: v.quantity2, unit1Name: v.unit1Name, unit2Name: v.unit2Name });\n drawGoodsPriceAndTotalAmount(2860, 1660 + i * 204, { unitPrice: v.unitPrice, declTotal: v.declTotal, tradeCurrency: v.tradeCurrency });\n drawCusOriginCountryName(2960, 1660 + i * 204, v.cusOriginCountryName + \"(\" + v.cusOriginCountry + \")\");\n drawDestinationCountryName(3226, 1660 + i * 204, v.destinationCountryName + \"(\" + v.destinationCountry + \")\");\n drawDistrictCodeName(3800, 1660 + i * 204, v.districtCodeName + \"(\" + v.districtCode + \")\");\n drawDutyModeName(4280, 1660 + i * 204, v.dutyModeName);\n });\n}\nfunction drawBarCode(ctx, data) {\n var entryId = data.entryId;\n drawCustomsDeclarationText(ctx, 38, 55, \"*\" + entryId + \"*\", 3144, 133, '#000000', 'normal 160px C39HrP24DhTt', 0);\n // C39HrP24DhTt\n}\nexport function createCustomsPaymentLetter(_a) {\n var data = _a.data;\n return __awaiter(this, void 0, void 0, function () {\n function loadImg(_url) {\n var img = new Image();\n img.src = _url;\n return new Promise(function (resolve, reject) {\n img.onload = function () {\n resolve(img);\n };\n });\n }\n var entryId, qrContent, img, opts, qrUrl, qrImg, canvas, ctx, scale;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n entryId = data.entryId;\n qrContent = \"*\" + entryId + \"*\";\n return [4 /*yield*/, loadImg(customsImg.default)];\n case 1:\n img = _b.sent();\n opts = {\n errorCorrectionLevel: 'M',\n margin: 0,\n width: 235\n };\n return [4 /*yield*/, QRCode.toDataURL(qrContent, opts)];\n case 2:\n qrUrl = _b.sent();\n return [4 /*yield*/, loadImg(qrUrl)];\n case 3:\n qrImg = _b.sent();\n console.log(qrImg);\n canvas = document.createElement('canvas');\n if (!canvas.getContext)\n return [2 /*return*/];\n ctx = canvas.getContext('2d');\n console.log('window.devicePixelRatio', window.devicePixelRatio);\n scale = 0.5;\n canvas.width = 4680 * scale;\n canvas.height = 3307 * scale;\n ctx.scale(scale, scale);\n ctx.fillStyle = '#fff';\n ctx.fillRect(0, 0, 4680, 3307);\n // ctx.drawImage(img, 155, 144, 239, 225); // 海关logo\n // ctx.drawImage(qrImg, 3813, 178, 356, 356); // 二维码\n drawAllLines(ctx);\n drawCustomsDeclarationTexts(ctx, data);\n drawMainInfo(ctx, data);\n // drawDetails(ctx, data)\n // drawBarCode(ctx, data)\n // drawCustomsDeclarationText(ctx, 38, 30, '1/1', 4371, 449, '#000', 'normal 38px SimSun', 0)\n // var imgData=ctx.getImageData(0,0,4680,3307)\n // canvas.setAttribute(\"width\",'3508')\n // canvas.setAttribute(\"height\",'2480')\n // //将获得的图像副本,重新绘制到画布,完成画布的大小改变\n // ctx.putImageData(imgData,0,0)\n return [2 /*return*/, changeDpiDataUrl(canvas.toDataURL('image/png', 0.92), 300)];\n }\n });\n });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n// @ts-ignore\nimport QRCode from 'qrcode';\n/*\n* startX 起点x坐标\n* startY 起点y坐标\n* ctx canvas画笔\n* points 点坐标集,用于连画操作,非必填\n*/\nfunction drawLine(_a) {\n var startX = _a.startX, startY = _a.startY, ctx = _a.ctx, points = _a.points, _b = _a.lineWidth, lineWidth = _b === void 0 ? 4 : _b, _c = _a.color, color = _c === void 0 ? '#000' : _c;\n ctx.beginPath();\n ctx.moveTo(startX, startY);\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n if (points && points.length) {\n points.forEach(function (item) {\n ctx.lineTo(item.pointX, item.pointY);\n });\n }\n ctx.stroke();\n ctx.closePath();\n ctx.save();\n}\n/**\n * 字段绘制方法\n * @param ctx getContext(\"2d\") 对象\n * @param lineHeight 段落文本行高\n * @param byteLength 设置单字节文字一行内的数量\n * @param text 写入画面的段落文本\n * @param startLeft 开始绘制文本的 x 坐标位置(相对于画布)\n * @param startTop 开始绘制文本的 y 坐标位置(相对于画布)\n * @param ctxFillStyle 字体颜色\n * @param ctxFont 字体\n * @param textAlign 是否设置\n */\nfunction drawCustomsDeclarationText(ctx, lineHeight, byteLength, text, startLeft, startTop, ctxFillStyle, ctxFont, textAlign) {\n if (text === void 0) { text = ''; }\n if (typeof text === 'number') {\n text = text + '';\n }\n if (text === null || text === undefined) {\n text = '';\n }\n function getTrueLength(str) {\n var len = str.length, truelen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n truelen += 2;\n }\n else {\n truelen += 1;\n }\n }\n return truelen;\n }\n function cutString(str, leng) {\n var len = str.length, tlen = len, nlen = 0;\n var isNextLine = false;\n for (var x = 0; x < len; x++) {\n isNextLine = str.substr(x, 1) === '\\n';\n if (isNextLine) {\n tlen = x;\n break;\n }\n if (str.charCodeAt(x) > 128) {\n if (nlen + 2 < leng) {\n nlen += 2;\n }\n else {\n tlen = x;\n break;\n }\n }\n else {\n if (nlen + 1 < leng) {\n nlen += 1;\n }\n else {\n tlen = x;\n break;\n }\n }\n }\n return ({ tlen: tlen, isNextLine: isNextLine });\n }\n if (textAlign === 1) {\n if (text.length < byteLength) {\n ctx.textAlign = 'center';\n }\n }\n else if (textAlign === 0) {\n ctx.textAlign = 'left';\n }\n else if (textAlign === 2) {\n ctx.textAlign = 'right';\n }\n for (var i = 1; getTrueLength(text) > 0; i++) {\n var _a = cutString(text, byteLength), tl = _a.tlen, isNextLine = _a.isNextLine;\n ctx.fillStyle = ctxFillStyle; //字体颜色\n ctx.font = ctxFont; //字体 \n ctx.textBaseline = 'top';\n ctx.fillText(text.substr(0, tl).replace(/^\\s+|\\s+$/, \"\"), startLeft, (i - 1) * lineHeight + startTop);\n if (isNextLine) { // \b换行 要把/n 去掉 所以加了两个字符\n text = text.substr(tl + 1);\n }\n else {\n text = text.substr(tl);\n }\n }\n ctx.save();\n}\n/**该方法用来绘制一个有填充色的圆角矩形\n*@param cxt:canvas的上下文环境\n*@param x:左上角x轴坐标\n*@param y:左上角y轴坐标\n*@param width:矩形的宽度\n*@param height:矩形的高度\n*@param radius:圆的半径\n*@param fillColor:填充颜色\n**/\nfunction fillRoundRect(cxt, x, y, width, height, radius, /*optional*/ fillColor) {\n //圆的直径必然要小于矩形的宽高 \n if (2 * radius > width || 2 * radius > height) {\n return false;\n }\n cxt.save();\n cxt.translate(x, y);\n //绘制圆角矩形的各个边 \n drawRoundRectPath(cxt, width, height, radius);\n cxt.fillStyle = fillColor || \"#000\"; //若是给定了值就用给定的值否则给予默认值 \n cxt.fill();\n cxt.restore();\n}\nfunction drawRoundRectPath(cxt, width, height, radius) {\n cxt.beginPath(0);\n //从右下角顺时针绘制,弧度从0到1/2PI \n cxt.arc(width - radius, height - radius, radius, 0, Math.PI / 2);\n //矩形下边线 \n cxt.lineTo(radius, height);\n //左下角圆弧,弧度从1/2PI到PI \n cxt.arc(radius, height - radius, radius, Math.PI / 2, Math.PI);\n //矩形左边线 \n cxt.lineTo(0, radius);\n //左上角圆弧,弧度从PI到3/2PI \n cxt.arc(radius, radius, radius, Math.PI, Math.PI * 3 / 2);\n //上边线 \n cxt.lineTo(width - radius, 0);\n //右上角圆弧 \n cxt.arc(width - radius, radius, radius, Math.PI * 3 / 2, Math.PI * 2);\n //右边线 \n cxt.lineTo(width, height - radius);\n cxt.closePath();\n}\nexport function createInvoiceQrCode(_a) {\n var data = _a.data;\n return __awaiter(this, void 0, void 0, function () {\n function loadImg(_url) {\n var img = new Image();\n img.src = _url;\n return new Promise(function (resolve, reject) {\n img.onload = function () {\n resolve(img);\n };\n });\n }\n var url, amountWithTax, remark, sellerName, orderCode, createTime, opts, qrUrl, qrImg, canvas, ctx;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n url = data.url, amountWithTax = data.amountWithTax, remark = data.remark, sellerName = data.sellerName, orderCode = data.orderCode, createTime = data.createTime;\n opts = {\n errorCorrectionLevel: 'M',\n margin: 0,\n width: 800\n };\n return [4 /*yield*/, QRCode.toDataURL(url, opts)];\n case 1:\n qrUrl = _b.sent();\n return [4 /*yield*/, loadImg(qrUrl)];\n case 2:\n qrImg = _b.sent();\n console.log(qrImg);\n canvas = document.createElement('canvas');\n if (!canvas.getContext)\n return [2 /*return*/];\n ctx = canvas.getContext('2d');\n canvas.width = 1200;\n canvas.height = 1900;\n ctx.fillStyle = '#fff';\n ctx.fillRect(0, 0, 1200, 1900);\n ctx.fillStyle = '#3378FF';\n ctx.fillRect(0, 0, 1200, 280);\n ctx.fillStyle = 'rgba(255, 128, 0, 0.04)';\n ctx.fillRect(0, 280, 1200, 104);\n ctx.drawImage(qrImg, 200, 484, 800, 800); // 二维码\n drawCustomsDeclarationText(ctx, 80, 30, sellerName, 600, 63, '#FFFFFF', 'Bold 56px Microsoft YaHei', 1);\n drawCustomsDeclarationText(ctx, 52, 60, '提醒:二维码有效期为15天,电子发票默认推送至客户定制邮箱', 47, 310, '#FF8000', '400 40px Microsoft YaHei', 0);\n drawCustomsDeclarationText(ctx, 52, 16, '发票金额', 200, 1384, '#666666', '400 40px Microsoft YaHei', 0);\n drawCustomsDeclarationText(ctx, 52, 16, '开票日期', 200, 1500, '#666666', '400 40px Microsoft YaHei', 0);\n drawCustomsDeclarationText(ctx, 52, 16, '订单编号', 200, 1616, '#666666', '400 40px Microsoft YaHei', 0);\n drawCustomsDeclarationText(ctx, 52, 8, '备注', 200, 1732, '#666666', '400 40px Microsoft YaHei', 0);\n drawCustomsDeclarationText(ctx, 52, 20, amountWithTax, 1000, 1384, '#000000', 'Bold 40px Microsoft YaHei', 2);\n drawCustomsDeclarationText(ctx, 52, 20, createTime, 1000, 1500, '#000000', 'Bold 40px Microsoft YaHei', 2);\n drawCustomsDeclarationText(ctx, 52, 20, orderCode, 1000, 1616, '#000000', 'Bold 40px Microsoft YaHei', 2);\n drawCustomsDeclarationText(ctx, 52, 36, remark, 1000, 1732, '#000000', 'Bold 40px Microsoft YaHei', 2);\n return [2 /*return*/, canvas.toDataURL()];\n }\n });\n });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { getMixLength, drawCanvasText, isEmpty } from '@/utils/basicUtil';\n/*\n* startX 起点x坐标\n* startY 起点y坐标\n* ctx canvas画笔\n* points 点坐标集,用于连画操作,非必填\n*/\nfunction drawLine(_a) {\n var startX = _a.startX, startY = _a.startY, ctx = _a.ctx, points = _a.points, _b = _a.lineWidth, lineWidth = _b === void 0 ? 4 : _b, _c = _a.color, color = _c === void 0 ? '#000' : _c;\n ctx.beginPath();\n ctx.moveTo(startX, startY);\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n if (points && points.length) {\n points.forEach(function (item) {\n ctx.lineTo(item.pointX, item.pointY);\n });\n }\n ctx.stroke();\n ctx.closePath();\n ctx.save();\n}\nfunction drawAllLines(ctx) {\n var points = [\n { pointX: 2280, pointY: 472 },\n { pointX: 2280, pointY: 3303 },\n { pointX: 200, pointY: 3303 },\n { pointX: 200, pointY: 472 },\n ];\n drawLine({ startX: 200, startY: 472, ctx: ctx, points: points, lineWidth: 4, color: '#000' });\n drawLine({ startX: 200, startY: 672, ctx: ctx, points: [{ pointX: 2280, pointY: 672 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 424, startY: 572, ctx: ctx, points: [{ pointX: 1240, pointY: 572 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1464, startY: 572, ctx: ctx, points: [{ pointX: 2280, pointY: 572 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 424, startY: 472, ctx: ctx, points: [{ pointX: 424, pointY: 3303 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 738, startY: 472, ctx: ctx, points: [{ pointX: 738, pointY: 672 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1240, startY: 472, ctx: ctx, points: [{ pointX: 1240, pointY: 784 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1464, startY: 472, ctx: ctx, points: [{ pointX: 1464, pointY: 672 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1778, startY: 472, ctx: ctx, points: [{ pointX: 1778, pointY: 672 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 424, startY: 784, ctx: ctx, points: [{ pointX: 2280, pointY: 784 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 842, startY: 672, ctx: ctx, points: [{ pointX: 842, pointY: 784 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1240, startY: 672, ctx: ctx, points: [{ pointX: 1240, pointY: 784 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1518, startY: 672, ctx: ctx, points: [{ pointX: 1518, pointY: 784 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1796, startY: 672, ctx: ctx, points: [{ pointX: 1796, pointY: 784 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1974, startY: 672, ctx: ctx, points: [{ pointX: 1974, pointY: 784 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 200, startY: 1808, ctx: ctx, points: [{ pointX: 2280, pointY: 1808 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 200, startY: 2833, ctx: ctx, points: [{ pointX: 2280, pointY: 2833 }], lineWidth: 4, color: '#000' });\n drawLine({ startX: 1090, startY: 2419, ctx: ctx, points: [{ pointX: 1493, pointY: 2419 }], lineWidth: 2, color: '#000' });\n drawLine({ startX: 1643, startY: 2419, ctx: ctx, points: [{ pointX: 2055, pointY: 2419 }], lineWidth: 2, color: '#000' });\n drawLine({ startX: 1090, startY: 2750, ctx: ctx, points: [{ pointX: 1493, pointY: 2750 }], lineWidth: 2, color: '#000' });\n drawLine({ startX: 1643, startY: 2750, ctx: ctx, points: [{ pointX: 2055, pointY: 2750 }], lineWidth: 2, color: '#000' });\n var cube1 = [\n { pointX: 750, pointY: 1828 },\n { pointX: 750, pointY: 1880 },\n { pointX: 698, pointY: 1880 },\n { pointX: 698, pointY: 1828 },\n ];\n var cube2 = [\n { pointX: 962, pointY: 1957 },\n { pointX: 962, pointY: 2009 },\n { pointX: 910, pointY: 2009 },\n { pointX: 910, pointY: 1957 },\n ];\n var cube3 = [\n { pointX: 962, pointY: 2025 },\n { pointX: 962, pointY: 2077 },\n { pointX: 910, pointY: 2077 },\n { pointX: 910, pointY: 2025 },\n ];\n var cube4 = [\n { pointX: 750, pointY: 2486 },\n { pointX: 750, pointY: 2537 },\n { pointX: 698, pointY: 2537 },\n { pointX: 698, pointY: 2486 },\n ];\n drawLine({ startX: 698, startY: 1828, ctx: ctx, points: cube1, lineWidth: 2, color: '#000' });\n drawLine({ startX: 910, startY: 1957, ctx: ctx, points: cube2, lineWidth: 2, color: '#000' });\n drawLine({ startX: 910, startY: 2025, ctx: ctx, points: cube3, lineWidth: 2, color: '#000' });\n drawLine({ startX: 698, startY: 2486, ctx: ctx, points: cube4, lineWidth: 2, color: '#000' });\n}\nfunction drawAllFixedText(ctx) {\n drawCanvasText(ctx, 64, 40, '开具红字增值税专用发票信息表', 1240, 180, '#000', 'normal 64px Microsoft YaHei', 1);\n drawCanvasText(ctx, 40, 40, '填开日期:', 272, 384, '#000', 'normal 40px Microsoft YaHei', 0);\n drawCanvasText(ctx, 48, 10, '销售方', 312, 545, '#000', 'normal 48px SimSun', 1);\n drawCanvasText(ctx, 48, 10, '购买方', 1352, 545, '#000', 'normal 48px SimSun', 1);\n drawCanvasText(ctx, 44, 20, '名 称', 581, 497, '#000', 'normal 44px SimSun', 1);\n drawCanvasText(ctx, 44, 20, '纳税人识别号', 581, 596, '#000', 'normal 44px SimSun', 1);\n drawCanvasText(ctx, 44, 20, '名 称', 1621, 497, '#000', 'normal 44px SimSun', 1);\n drawCanvasText(ctx, 44, 20, '纳税人识别号', 1621, 596, '#000', 'normal 44px SimSun', 1);\n drawCanvasText(ctx, 60, 5, '开具红字专用发票内容', 312, 1054, '#000', 'normal 48px SimSun', 1);\n drawCanvasText(ctx, 44, 18, '货物(劳务服务)名称', 633, 680, '#000', 'normal 44px SimSun', 1);\n drawCanvasText(ctx, 44, 18, '数量', 1046, 703, '#000', 'normal 44px SimSun', 1);\n drawCanvasText(ctx, 44, 18, '单价', 1379, 703, '#000', 'normal 44px SimSun', 1);\n drawCanvasText(ctx, 44, 18, '金额', 1662, 703, '#000', 'normal 44px SimSun', 1);\n drawCanvasText(ctx, 44, 18, '税率', 1885, 703, '#000', 'normal 44px SimSun', 1);\n drawCanvasText(ctx, 44, 18, '税额', 2137, 703, '#000', 'normal 44px SimSun', 1);\n drawCanvasText(ctx, 44, 18, '合计', 590, 1743, '#000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 60, 5, '说明', 312, 2296, '#000', 'normal 48px SimSun', 1);\n drawCanvasText(ctx, 48, 20, '一、购买方', 450, 1830, '#000', 'normal 48px SimSun', 0);\n drawCanvasText(ctx, 48, 100, '对应蓝字专用发票抵扣增值税销项税额情况:', 536, 1893, '#000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 48, 100, '1.已抵扣:', 698, 1961, '#000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 48, 100, '2.未抵扣:', 698, 2029, '#000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 48, 100, '对应蓝字专用发票的代码:', 536, 2351, '#000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 48, 100, '号码:', 1504, 2351, '#000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 48, 20, '二、销售方', 450, 2488, '#000', 'normal 48px SimSun', 0);\n drawCanvasText(ctx, 48, 100, '对应蓝字专用发票的代码:', 536, 2691, '#000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 48, 100, '号码:', 1504, 2691, '#000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 60, 7, '红字发票信息表编号', 240, 2978, '#000', 'normal 48px SimSun', 1);\n}\nfunction drawMainInfo(ctx, data) {\n var applyTime = data.applyTime;\n var dateFormat = new Date(applyTime);\n var year = dateFormat.getFullYear();\n var month = dateFormat.getMonth() + 1;\n var monthStr = month.toString();\n if (month >= 1 && month <= 9) {\n monthStr = '0' + month;\n }\n var day = dateFormat.getDate();\n var dayStr = day.toString();\n if (day >= 0 && day <= 9) {\n dayStr = '0' + day;\n }\n var dateStr = applyTime ? year + \"\\u5E74\" + monthStr + \"\\u6708\" + dayStr + \"\\u65E5\" : '';\n drawCanvasText(ctx, 44, 24, dateStr, 500, 378, '#000', 'normal 44px SimSun', 0);\n}\nfunction drawSellerAndPurchaser(ctx, data) {\n console.log(data);\n drawCanvasText(ctx, 48, 24, data.sellerName, 753, 476, '#000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 48, 24, data.sellerTaxNo, 753, 600, '#000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 48, 24, data.purchaserName, 1786, 476, '#000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 48, 24, data.purchaserTaxNo, 1786, 600, '#000', 'normal 44px SimSun', 0);\n}\nfunction drawDetails(ctx, data) {\n var details = data.details;\n function drawGoodsName(startX, startY, text) {\n if (getMixLength(text) <= 18) {\n drawCanvasText(ctx, 44, 19, text, startX, startY, '#000000', 'normal 44px SimSun', 0);\n }\n else if (getMixLength(text) <= 22) {\n drawCanvasText(ctx, 40, 23, text, startX, startY, '#000000', 'normal 36px SimSun', 0);\n }\n else if (getMixLength(text) <= 30) {\n drawCanvasText(ctx, 26, 31, text, startX, startY, '#000000', 'normal 26px SimSun', 0);\n }\n else if (getMixLength(text) <= 34) {\n drawCanvasText(ctx, 24, 35, text, startX, startY, '#000000', 'normal 24px SimSun', 0);\n }\n else if (getMixLength(text) <= 42) {\n drawCanvasText(ctx, 20, 43, text, startX, startY, '#000000', 'normal 20px SimSun', 0);\n }\n else {\n drawCanvasText(ctx, 20, 43, text, startX, startY - 4, '#000000', 'normal 20px SimSun', 0);\n }\n }\n function drawQuantity(startX, startY, text) {\n if (getMixLength(text) <= 18) {\n drawCanvasText(ctx, 44, 19, text, startX, startY, '#000000', 'normal 44px SimSun', 2);\n }\n else if (getMixLength(text) <= 22) {\n drawCanvasText(ctx, 36, 23, text, startX, startY, '#000000', 'normal 36px SimSun', 2);\n }\n else if (getMixLength(text) <= 30) {\n drawCanvasText(ctx, 26, 31, text, startX, startY, '#000000', 'normal 26px SimSun', 2);\n }\n else if (getMixLength(text) <= 34) {\n drawCanvasText(ctx, 24, 35, text, startX, startY, '#000000', 'normal 24px SimSun', 2);\n }\n else if (getMixLength(text) <= 42) {\n drawCanvasText(ctx, 20, 43, text, startX, startY, '#000000', 'normal 20px SimSun', 0);\n }\n else {\n drawCanvasText(ctx, 20, 43, text, startX, startY - 4, '#000000', 'normal 20px SimSun', 0);\n }\n }\n function drawUnitPrice(startX, startY, text) {\n if (getMixLength(text) <= 11) {\n drawCanvasText(ctx, 44, 12, text, startX, startY, '#000000', 'normal 44px SimSun', 2);\n }\n else if (getMixLength(text) <= 14) {\n drawCanvasText(ctx, 36, 15, text, startX, startY, '#000000', 'normal 36px SimSun', 2);\n }\n else if (getMixLength(text) <= 20) {\n drawCanvasText(ctx, 20, 20, text, startX, startY, '#000000', 'normal 26px SimSun', 2);\n }\n else {\n drawCanvasText(ctx, 20, 20, text, startX, startY, '#000000', 'normal 26px SimSun', 2);\n }\n }\n function drawAmount(startX, startY, text) {\n if (getMixLength(text) <= 11) {\n drawCanvasText(ctx, 44, 12, text, startX, startY, '#000000', 'normal 44px SimSun', 2);\n }\n else if (getMixLength(text) <= 14) {\n drawCanvasText(ctx, 36, 15, text, startX, startY, '#000000', 'normal 36px SimSun', 2);\n }\n else if (getMixLength(text) <= 20) {\n drawCanvasText(ctx, 20, 20, text, startX, startY, '#000000', 'normal 26px SimSun', 2);\n }\n else {\n drawCanvasText(ctx, 20, 20, text, startX, startY, '#000000', 'normal 26px SimSun', 2);\n }\n }\n function drawTaxRate(startX, startY, text, record) {\n if (record.taxPre === 0 && record.taxPreType === 1 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '免税';\n }\n else if (record.taxPre === 0 && record.taxPreType === 2 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '不征税';\n }\n else if (typeof text === 'number') {\n text = text * 100 + \"%\";\n }\n drawCanvasText(ctx, 44, 6, text, startX, startY, '#000000', 'normal 44px SimSun', 1);\n }\n function drawTaxAmount(startX, startY, text, record) {\n if (record.taxPre === 0 && record.taxPreType === 1 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '***';\n }\n else if (record.taxPre === 0 && record.taxPreType === 2 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '***';\n }\n else {\n text = isEmpty(text) ? '' : text === 0 ? '***' : text;\n }\n if (getMixLength(text) <= 18) {\n drawCanvasText(ctx, 44, 19, text, startX, startY, '#000000', 'normal 44px SimSun', 2);\n }\n else if (getMixLength(text) <= 22) {\n drawCanvasText(ctx, 36, 23, text, startX, startY, '#000000', 'normal 36px SimSun', 2);\n }\n else if (getMixLength(text) <= 30) {\n drawCanvasText(ctx, 26, 31, text, startX, startY, '#000000', 'normal 26px SimSun', 2);\n }\n else if (getMixLength(text) <= 34) {\n drawCanvasText(ctx, 24, 35, text, startX, startY, '#000000', 'normal 24px SimSun', 2);\n }\n else if (getMixLength(text) <= 42) {\n drawCanvasText(ctx, 20, 43, text, startX, startY, '#000000', 'normal 20px SimSun', 0);\n }\n else {\n drawCanvasText(ctx, 20, 43, text, startX, startY - 4, '#000000', 'normal 20px SimSun', 0);\n }\n }\n details.forEach(function (v, i) {\n drawGoodsName(432, 793 + i * 40, \"\" + v.goodsName);\n if (v.quantity && v.unitPrice) {\n drawQuantity(1238, 793 + i * 40, v.quantity);\n drawUnitPrice(1516, 793 + i * 40, v.unitPrice);\n }\n drawAmount(1794, 793 + i * 40, v.amount);\n drawTaxRate(1885, 793 + i * 40, v.taxRate, v);\n drawTaxAmount(2278, 793 + i * 40, v.taxAmount, v);\n });\n var amount = details[0].amount;\n var taxAmount = details[0].taxAmount;\n drawAmount(1794, 1743, amount ? \"\\u00A5\" + amount : amount);\n drawTaxAmount(2278, 1743, taxAmount ? \"\\u00A5\" + taxAmount : taxAmount, details[0]);\n}\nfunction drawDescription(ctx, data) {\n var applicationRole = data.applicationRole, invoiceCode = data.invoiceCode, invoiceNo = data.invoiceNo, deductFlag = data.deductFlag;\n if (applicationRole === 1) { // 1 购方申请 2 销方申请\n drawCanvasText(ctx, 44, 43, invoiceCode, 1090, 2351, '#000000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 44, 43, invoiceNo, 1644, 2351, '#000000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 44, 43, '√', 698, 1828, '#000000', 'normal 50px SimSun', 0);\n if (deductFlag === 1) { // 购方申请时使用 1 已抵扣 2 未抵扣\n drawCanvasText(ctx, 44, 43, '√', 910, 1957, '#000000', 'normal 50px SimSun', 0);\n }\n else if (deductFlag === 2) {\n drawCanvasText(ctx, 44, 43, '√', 910, 2025, '#000000', 'normal 50px SimSun', 0);\n }\n }\n else {\n drawCanvasText(ctx, 44, 43, invoiceCode, 1090, 2691, '#000000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 44, 43, invoiceNo, 1644, 2691, '#000000', 'normal 44px SimSun', 0);\n drawCanvasText(ctx, 44, 43, '√', 698, 2486, '#000000', 'normal 50px SimSun', 0);\n }\n}\nexport function createRedLetterNotice(_a) {\n var data = _a.data;\n return __awaiter(this, void 0, void 0, function () {\n var canvas, ctx;\n return __generator(this, function (_b) {\n canvas = document.createElement('canvas');\n if (!canvas.getContext)\n return [2 /*return*/];\n ctx = canvas.getContext('2d');\n canvas.width = 2480;\n canvas.height = 3508;\n ctx.fillStyle = '#fff';\n ctx.fillRect(0, 0, 2480, 3508);\n drawAllLines(ctx);\n drawAllFixedText(ctx);\n drawMainInfo(ctx, data);\n drawSellerAndPurchaser(ctx, data);\n drawDetails(ctx, data);\n drawDescription(ctx, data);\n drawCanvasText(ctx, 44, 43, data.applicationNo, 440, 3043, '#000000', 'normal 50px SimSun', 0);\n return [2 /*return*/, canvas.toDataURL()];\n });\n });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { drawCanvasText } from '@/utils/basicUtil';\nfunction drawDashed(ctx, y) {\n ctx.lineWidth = 4;\n ctx.strokeStyle = 'black';\n ctx.beginPath();\n ctx.setLineDash([20, 15]);\n ctx.moveTo(0, y);\n ctx.lineTo(630, y);\n ctx.stroke();\n}\nfunction drawCircle(ctx, y) {\n // 开始绘制路径\n ctx.beginPath();\n ctx.lineWidth = 4;\n ctx.strokeStyle = 'black';\n ctx.setLineDash([]);\n // 绘制圆的路径**\n ctx.arc(116, y + 60, 60, 0, Math.PI * 2, false);\n // 0°是从三点钟方向开始的\n // 描边路径\n ctx.stroke();\n}\nfunction drawItemsItem(ctx, data) {\n ctx.fillStyle = '#fff';\n ctx.fillRect(0, 0, 630, 1150);\n drawDashed(ctx, 160);\n drawDashed(ctx, 542);\n // 收的圆\n drawCircle(ctx, 198);\n drawCanvasText(ctx, 65, 40, '收', 84, 230, '#000', 'bold 65px Microsoft YaHei', 0);\n // 寄的圆\n drawCircle(ctx, 580);\n drawCanvasText(ctx, 65, 40, '寄', 84, 612, '#000', 'bold 65px Microsoft YaHei', 0);\n // 订单信息\n drawCanvasText(ctx, 56, 16, data.mailNo, 315, 32, '#000', 'normal 56px Bahnschrift', 1);\n drawCanvasText(ctx, 28, 40, data.createTime, 315, 96, '#000', 'normal 28px Microsoft YaHei', 1);\n // 收件信息\n drawCanvasText(ctx, 42, 26, data.sender, 56, 352, '#000', 'normal 40px Microsoft YaHei', 0);\n drawCanvasText(ctx, 42, 26, data.senderMobile, 56, 452, '#000', 'normal 40px Microsoft YaHei', 0);\n // 寄件信息\n drawCanvasText(ctx, 42, 26, data.receiver, 56, 734, '#000', 'normal 40px Microsoft YaHei', 0);\n drawCanvasText(ctx, 42, 26, data.receiveAddress, 56, 834, '#000', 'normal 40px Microsoft YaHei', 0);\n // 条码\n drawCanvasText(ctx, 42, 26, data.mailNo, 315, 970, '#000', 'normal 120px C39HrP24DhTt', 1);\n}\nfunction drawItemsAll(ctx, data) {\n data.forEach(function (v, i) {\n if (i === 0) {\n ctx.translate(60, 60);\n drawItemsItem(ctx, v);\n }\n else if (i < 5) {\n ctx.translate(690, 0);\n drawItemsItem(ctx, v);\n }\n else if (i === 5) {\n ctx.translate(0, 1210);\n drawItemsItem(ctx, v);\n }\n else {\n ctx.translate(-690, 0);\n drawItemsItem(ctx, v);\n }\n });\n}\nexport function createExpressDeliveryCode(_a) {\n var data = _a.data;\n return __awaiter(this, void 0, void 0, function () {\n var canvas, ctx;\n return __generator(this, function (_b) {\n canvas = document.createElement('canvas');\n if (!canvas.getContext)\n return [2 /*return*/];\n ctx = canvas.getContext('2d');\n canvas.width = 3508;\n canvas.height = 2480;\n ctx.fillStyle = '#fff';\n ctx.fillRect(0, 0, 3508, 2480);\n drawItemsAll(ctx, data);\n return [2 /*return*/, canvas.toDataURL()];\n });\n });\n}\n","// import { Modal } from 'antd'\nvar CreatedOKLodop7766 = null;\n//====判断是否需要 Web打印服务CLodop:===\n//===(不支持插件的浏览器版本需要用它)===\nexport const needCLodop = ()=> {\n try {\n var ua = navigator.userAgent;\n if (ua.match(/Windows\\sPhone/i))\n return true;\n if (ua.match(/iPhone|iPod|iPad/i))\n return true;\n if (ua.match(/Android/i))\n return true;\n if (ua.match(/Edge\\D?\\d+/i))\n return true;\n\n var verTrident = ua.match(/Trident\\D?\\d+/i);\n var verIE = ua.match(/MSIE\\D?\\d+/i);\n var verOPR = ua.match(/OPR\\D?\\d+/i);\n var verFF = ua.match(/Firefox\\D?\\d+/i);\n var x64 = ua.match(/x64/i);\n if ((!verTrident) && (!verIE) && (x64))\n return true;\n else if (verFF) {\n verFF = verFF[0].match(/\\d+/);\n if ((Number(verFF[0]) >= 41) || (x64))\n return true;\n } else if (verOPR) {\n verOPR = verOPR[0].match(/\\d+/);\n if (Number(verOPR[0]) >= 32)\n return true;\n } else if ((!verTrident) && (!verIE)) {\n var verChrome = ua.match(/Chrome\\D?\\d+/i);\n if (verChrome) {\n verChrome = verChrome[0].match(/\\d+/);\n if (Number(verChrome[0]) >= 41)\n return true;\n }\n }\n return false;\n } catch (err) {\n return true;\n }\n}\n//====获取LODOP对象的主过程:====\nexport const getLodop = (oOBJECT, oEMBED, licenses, CLodopIsLocal)=> {\n \n var strHtmInstall = \"<br><font color='#000'>第二步:<br>打印控件未安装!点击这里<a href='https://smarttax-basic.oss-cn-shanghai.aliyuncs.com/lodop_plugin/install_lodop32.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>\";\n var strHtmUpdate = \"<br><font color='#000'>第二步:<br>打印控件需要升级!点击这里<a href='https://smarttax-basic.oss-cn-shanghai.aliyuncs.com/lodop_plugin/install_lodop32.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>\";\n var strHtm64_Install = \"<br><font color='#000'>第二步:<br>打印控件未安装!点击这里<a href='https://smarttax-basic.oss-cn-shanghai.aliyuncs.com/lodop_plugin/install_lodop64.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>\";\n var strHtm64_Update = \"<br><font color='#000'>第二步:<br>打印控件需要升级!点击这里<a href='https://smarttax-basic.oss-cn-shanghai.aliyuncs.com/lodop_plugin/install_lodop64.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>\";\n var strHtmFireFox = \"<br><br><font color='#000'>(注意:如曾安装过Lodop旧版附件npActiveXPLugin,请在【工具】->【附加组件】->【扩展】中先卸它)</font>\";\n var strHtmChrome = \"<br><br><font color='#000'>(如果此前正常,仅因浏览器升级或重安装而出问题,需重新执行以上安装)</font>\";\n var strCLodopInstall_1 = \"<br><font color='#000'>第二步:<br>Web打印服务CLodop未安装启动,点击这里<a href='https://smarttax-basic.oss-cn-shanghai.aliyuncs.com/lodop_plugin/CLodop_Setup_for_Win32NT.exe' target='_self'>下载执行安装</a>\";\n var strCLodopInstall_2 = \"<br>(若此前已安装过,可<a href='CLodop.protocol:setup' target='_self'>点这里直接再次启动</a>)\";\n var strCLodopInstall_3 = \",成功后请刷新本页面。</font>\";\n var strCLodopUpdate = \"<br><font color='#000'>第二步:<br>Web打印服务CLodop需升级!点击这里<a href='https://smarttax-basic.oss-cn-shanghai.aliyuncs.com/lodop_plugin/CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>,升级后请刷新页面。</font>\";\n var strPrintFont = \"<br><font color='#000'>第一步:<br>请先安装打印所需字体!点击这里<a href='https://smarttax-basic.oss-cn-shanghai.aliyuncs.com/resource/%E5%AD%97%E4%BD%93.ttf' target='_self'>下载并双击打开后安装字体文件</a><br>(如已安装,请忽略)</font><br>\";\n var LODOP;\n function modal (str) {\n var wrpStr = `\n <div style=\"width:500px;height:300px;padding: 20px 15px 0px 15px;z-index:99999;background:rgba(255,251,251,1);\">\n <p style=\"text-align: right;margin: 0\"><span class=\"icon-font\" id=\"lodop-print-close\" style=\"cursor:pointer\"><img style=\"width: 20px\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAFKUlEQVR4Xu2bWc8URRSGX2IIUSOKK664RI0aWVwQccEt7oILeM8N/AN/hRfeypXXqCgKIu6K+woSYowxigqKCigKRo1LHnMm6Uy6TndXV9U3cabuYLqr6nmm+nTNOfVN05i3aWPOr4mAyQoYcwOTR2DMF0BjEDxC0gOSlkh6VdLDkr4dcWknS1pdmfODkn4NzbnpEVgraUXl5h32709GVMIFkh6VdFFlfo9IWhkj4DpJL9fcuN0kfDpiEs43+Itr5nWWpC/r5uutgJAA+tlmEj4bEQnnGvy8wHwuk/RBVwHzbQUcE+j0I5Pw+RRLOFvSY5IWBObxiqTrYx4B7mGF/O0AYpUY8cUUSTjT4C8NjE+sYn7ErtrWFAS5abqkPxzA9yQtl/RVYQlnGPzlgXGJUcATs4KtjQBuPlzSIaefd0zCN4UknGbwVwTGIzYBT6xyW1sBdHKUpANOb2+ZhN1Ng/b8/BSDvzLQDzEJeGJUY+sigM6OlbTX6fUNk/Bd48hxF8w2+KsCtxOL7pf0ftvuuwqg3xMl7XEG2GISvm87iZbXMS7R/prA9TsN/t2W/f13WYwA7mMZ7nIGYttMYPyxy2Sca4+39zx7k7r2tcG/3XW8WAGMQxTGeqixi0TCvq6TGrqex47t7Q2BfvgiWPZvxozTRwDjsQnxNkIvmoSfYiYniU0Y8DcF7ueHGfCvR/Yf/QhUxztPkve74HmT4L1B6uY/0+BvDsARh4B/LRa+TwwYHvNCb7clabNJCP4sHerwSAt4twbgfjB4trm9Wt9HoDo4P0S2OrPZJOk+Sb81zJhNF9H+9sB1vIb55l/qRW43pxRAl+zJvXfwBlsJvwcmP8Pg7wx8vt/gX0gBn/IRqM6H7an3OnrKJPw5BMFvDr75pQG4nw3+uVTwuQTQLzs1LzI/aRL+MpjDDP7uANwvBv9sSvicAuibPKIXpNaZBK7lm783AHfQ4J9JDZ9bAP3fKMl7XgGnsWGqawRMAh6xI0tLHQTrJsmrjDdA10agBJ6Yka2VEMDkiepPd6AgQAJPrMjaSgkAggD3RAsaAiPwxIjsraSAwbPO3j7U/jH4QWz43wkYLrTUASKIFVCklVwBbeAH0MUklBLQBb6ohBICPPhBjZGa3pQ8DrkFePDkEAYbIIIetb3iEnIK8ODJ2wP/sRHPte0wNb6iEnIJ8OBJoQE/nDugFslKOKekhBwCPHjy9sB/GIC8xCRQzi6yElIL8ODJIAPfVLSglM1KmFNCQkoBHjx5e+DbFi0WmoTTc0tIJcCDJ28PfNeixSKTcGpOCSkEePDk7YGPKlpIWmwSOPiUJSb0FeDBk7cHPrpoYcRXm4STckjoI8CDJ28PfK+iRQX4WpNwQmoJsQI8ePL21OfrTpgF5t/qvymM8nY4LqWEGAEePHl74KkJ5mgUSJEwK5WErgI8ePL2wFMLzNkolCLh6BQSugjw4MnbA08NsES7xQqnHNvp9XZoK8CDJ28PfEzmt4+s20wChdRoCW0EePDk7YHf2Iekx713mAQKqlESmgRwOnxVoHPy9sB3SXf3YA3eepdJoLBa19bY6fHaDz0BbDxCp73I2wO/PgdRRJ/LTAIF1rrGmabaY/6eAJIUdQcNydsD3ybHH8ESfcs9JoFC63CLOixNJ2xmqiezyNsD/3j0NPPeyAEMMsrVL7bXYWnK3PzFCDV7nnWep2yFykRuKMMRt4gNvJkekhQ8U9AUBBPNaXS7mQgY3e+mzMwmK6CM59EdZexXwL8Q0/tB+Dg3tAAAAABJRU5ErkJggg==\"></img></span></p>\n ${str}\n </div>`\n var div = document.createElement('div')\n div.style.cssText = 'background:rgba(0,0,0,0.3);position:fixed;top:0%;left:0%;width:100%;height:100%;z-index:99999;display: flex;justify-content: center;align-items: center;'\n div.innerHTML = wrpStr\n document.body.appendChild(div)\n let lodopPrintClose = document.getElementById('lodop-print-close')\n lodopPrintClose.onclick = function () {\n document.body.removeChild(div)\n }\n }\n try {\n var ua = navigator.userAgent;\n var isIE = !!(ua.match(/MSIE/i)) || !!(ua.match(/Trident/i));\n if (needCLodop()) {\n try {\n LODOP = window.getCLodop();\n } catch (err) {}\n if (!LODOP && document.readyState !== \"complete\") {\n // alert(\"网页还没下载完毕,请稍等一下再操作.\");\n return;\n }\n if (!LODOP) {\n modal(strPrintFont + strCLodopInstall_1 + (CLodopIsLocal ? strCLodopInstall_2 : \"\") + strCLodopInstall_3);\n return;\n } else {\n if (window.CLODOP.CVERSION < \"3.0.6.0\") {\n // document.body.innerHTML = strCLodopUpdate + document.body.innerHTML;\n modal(strPrintFont + strCLodopUpdate)\n }\n if (oEMBED && oEMBED.parentNode)\n oEMBED.parentNode.removeChild(oEMBED);\n if (oOBJECT && oOBJECT.parentNode)\n oOBJECT.parentNode.removeChild(oOBJECT);\n }\n } else {\n var is64IE = isIE && !!(ua.match(/x64/i));\n //=====如果页面有Lodop就直接使用,没有则新建:==========\n if (oOBJECT || oEMBED) {\n if (isIE)\n LODOP = oOBJECT;\n else\n LODOP = oEMBED;\n } else if (!CreatedOKLodop7766) {\n LODOP = document.createElement(\"object\");\n LODOP.setAttribute(\"width\", 0);\n LODOP.setAttribute(\"height\", 0);\n LODOP.setAttribute(\"style\", \"position:absolute;left:0px;top:-100px;width:0px;height:0px;\");\n if (isIE)\n LODOP.setAttribute(\"classid\", \"clsid:2105C259-1E0C-4534-8141-A753534CB4CA\");\n else\n LODOP.setAttribute(\"type\", \"application/x-print-lodop\");\n document.documentElement.appendChild(LODOP);\n CreatedOKLodop7766 = LODOP; LODOP = document.createElement(\"object\");\n LODOP.setAttribute(\"width\", 0);\n LODOP.setAttribute(\"height\", 0);\n LODOP.setAttribute(\"style\", \"position:absolute;left:0px;top:-100px;width:0px;height:0px;\");\n if (isIE)\n LODOP.setAttribute(\"classid\", \"clsid:2105C259-1E0C-4534-8141-A753534CB4CA\");\n else\n LODOP.setAttribute(\"type\", \"application/x-print-lodop\");\n document.documentElement.appendChild(LODOP);\n CreatedOKLodop7766 = LODOP;\n } else\n LODOP = CreatedOKLodop7766;\n //=====Lodop插件未安装时提示下载地址:==========\n if ((!LODOP) || (!LODOP.VERSION)) {\n if (ua.indexOf('Chrome') >= 0)\n modal(strHtmChrome)\n if (ua.indexOf('Firefox') >= 0)\n modal(strHtmFireFox)\n modal((is64IE ? strHtm64_Install : strHtmInstall));\n return LODOP;\n }\n }\n if (LODOP.VERSION < \"6.2.2.4\") {\n if (!needCLodop())\n modal((is64IE ? strHtm64_Update : strHtmUpdate))\n return LODOP;\n }\n //===如下空白位置适合调用统一功能(如注册语句、语言选择等):==\n\n\n LODOP.SET_LICENSES(\"\",licenses,\"\",\"\");\n //=======================================================\n return LODOP;\n } catch (err) {\n alert(\"getLodop出错:\" + err);\n }\n}\nexport default {\n needCLodop,\n getLodop\n}\n","import { getLodop } from '../LodopFuncs.js';\nimport { CRC16 } from '@/utils/crc';\nimport { digitUppercase, isEmpty, getMixLength } from '@/utils/basicUtil';\n//====页面引用CLodop云打印必须的JS文件,用双端口(8000和18000)避免其中某个被占用:====\nfunction drawQrcode(LODOP, data) {\n var invoiceType = data.invoiceType, invoiceCode = data.invoiceCode, invoiceNo = data.invoiceNo, amount = data.amount, drewDate = data.drewDate, checkCode = data.checkCode;\n var type = '10';\n if (Number(invoiceType) === 1) {\n type = '01';\n }\n else if (Number(invoiceType) === 2) {\n type = '04';\n }\n else if (Number(invoiceType) === 3) {\n type = '10';\n }\n else if (Number(invoiceType) === 4) {\n type = '08';\n }\n var dateFormat = new Date(drewDate);\n var year = dateFormat.getFullYear();\n var month = dateFormat.getMonth() + 1;\n var monthStr = month.toString();\n if (month >= 1 && month <= 9) {\n monthStr = '0' + month;\n }\n var day = dateFormat.getDate();\n var dayStr = day.toString();\n if (day >= 0 && day <= 9) {\n dayStr = '0' + day;\n }\n var dateStr = drewDate ? \"\" + year + monthStr + dayStr : '';\n var tempAmount = amount ? Number(amount).toFixed(2) : amount === 0 ? Number(amount).toFixed(2) : amount;\n var content = \"01,\" + type + \",\" + invoiceCode + \",\" + invoiceNo + \",\" + tempAmount + \",\" + dateStr + \",\" + checkCode;\n var crc = CRC16.ToCRC16(content, true);\n var qrContent = content + \",\" + crc;\n console.log(qrContent);\n LODOP.ADD_PRINT_BARCODE('3.5mm', '8.5mm', \"22.00mm\", \"22.00mm\", \"QRCode\", \"\" + qrContent);\n LODOP.SET_PRINT_STYLEA(0, \"GroundColor\", \"#FFFFFF\");\n LODOP.SET_PRINT_STYLEA(0, \"QRCodeVersion\", 5);\n LODOP.SET_PRINT_STYLEA(0, \"QRCodeErrorLevel\", \"L\");\n LODOP.SET_PRINT_STYLEA(0, \"DataCharset\", \"GB2312\");\n}\n// 处理pt/px 转换为 mm单位\nfunction changeUnit(text) {\n if (text.toString().includes('mm')) {\n return Number(text.split('mm')[0]);\n }\n else if (text.toString().includes('pt')) {\n return text.split('pt')[0] * 0.376;\n }\n else {\n console.log(text, '-----');\n return Number(text * 25.4 / 96);\n }\n}\n/*\n//LODOP 打印 对象\n//lineHeight 段落文本行高\n//byteLength 设置单字节文字一行内的数量\n//text 写入画面的段落文本\n//startLeft 开始绘制文本的 x 坐标位置(相对于画布)\n//startTop 开始绘制文本的 y 坐标位置(相对于画布)\n//ctxFont 字体大小\n//ctxFontFamily 字体样式\n//textAlign 对齐方式 1 左对齐 2 居中对齐 3 右对齐\n//inputWidth 输入框宽度,如果需要限定死宽,通过这个控制\n*/\nfunction drawInvoiceText(LODOP, lineHeight, byteLength, text, startLeft, startTop, ctxFont, ctxFontFamily, textAlign, inputWidth, letterSpacing) {\n if (textAlign === void 0) { textAlign = 1; }\n if (inputWidth === void 0) { inputWidth = null; }\n if (letterSpacing === void 0) { letterSpacing = 0.3; }\n if (typeof text === 'number') {\n text = text + '';\n }\n if (text === null || text === undefined) {\n text = '';\n }\n function getTrueLength(str) {\n var len = str.length, truelen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n truelen += 2;\n }\n else {\n truelen += 1;\n }\n }\n return truelen;\n }\n function cutString(str, leng) {\n var len = str.length, tlen = len, nlen = 0;\n var isNextLine = false;\n for (var x = 0; x < len; x++) {\n isNextLine = str.substr(x, 1) === '\\n';\n if (isNextLine) {\n tlen = x;\n break;\n }\n if (str.charCodeAt(x) > 128) {\n if (nlen + 2 < leng) {\n nlen += 2;\n }\n else {\n tlen = x;\n break;\n }\n }\n else {\n if (nlen + 1 < leng) {\n nlen += 1;\n }\n else {\n tlen = x;\n break;\n }\n }\n }\n return ({ tlen: tlen, isNextLine: isNextLine });\n }\n for (var i = 1; getTrueLength(text) > 0; i++) {\n var _a = cutString(text, byteLength), tl = _a.tlen, isNextLine = _a.isNextLine;\n // ctx.fillStyle = ctxFillStyle //字体颜色\n // ctx.font = ctxFont //字体 \n // ctx.textBaseline = 'top'\n // ctx.fillText(text.substr(0, tl).replace(/^\\s+|\\s+$/, \"\"), startLeft, (i-1) * lineHeight + startTop)\n if (!startTop) {\n console.log(text);\n }\n var top_1 = ((i - 1) * changeUnit(lineHeight) + changeUnit(startTop)) + 'mm';\n var width = byteLength / 2 * ctxFont + ctxFont + \"pt\";\n if (inputWidth) {\n width = inputWidth;\n }\n LODOP.ADD_PRINT_TEXT(top_1, startLeft, width, 18, text.substr(0, tl).replace(/^\\s+|\\s+$/, \"\"));\n if (isNextLine) { // \b换行 要把/n 去掉 所以加了两个字符\n text = text.substr(tl + 1);\n }\n else {\n text = text.substr(tl);\n }\n LODOP.SET_PRINT_STYLEA(0, \"FontSize\", ctxFont);\n LODOP.SET_PRINT_STYLEA(0, \"LineSpacing\", -3);\n LODOP.SET_PRINT_STYLEA(0, \"LetterSpacing\", letterSpacing);\n LODOP.SET_PRINT_STYLEA(0, \"TextNeatRow\", true);\n LODOP.SET_PRINT_STYLEA(0, \"FontName\", ctxFontFamily);\n if (textAlign === 2) {\n if (text.length < byteLength) {\n LODOP.SET_PRINT_STYLEA(0, \"Alignment\", 2);\n }\n }\n else if (textAlign === 1) {\n LODOP.SET_PRINT_STYLEA(0, \"Alignment\", 1);\n }\n else if (textAlign === 3) {\n LODOP.SET_PRINT_STYLEA(0, \"Alignment\", 3);\n }\n }\n}\nfunction drawInvoiceMainInfo(LODOP, data) {\n var invoiceCode = data.invoiceCode, invoiceNo = data.invoiceNo, drewDate = data.drewDate, checkCode = data.checkCode, machineCode = data.machineCode, invoiceStatus = data.invoiceStatus, status = data.status, invoiceType = data.invoiceType;\n function drawDate(date) {\n if (!date) {\n return;\n }\n var dateFormat = new Date(date);\n var year = dateFormat.getFullYear();\n var month = dateFormat.getMonth() + 1;\n var monthStr = month.toString();\n if (month >= 1 && month <= 9) {\n monthStr = '0' + month;\n }\n var day = dateFormat.getDate();\n var dayStr = day.toString();\n if (day >= 0 && day <= 9) {\n dayStr = '0' + day;\n }\n var dateStr = year + \"\\u5E74\" + monthStr + \"\\u6708\" + dayStr + \"\\u65E5\";\n // LODOP.ADD_PRINT_TEXT(71,650,108,18,dateStr)\n drawInvoiceText(LODOP, '9pt', 42, dateStr, '175mm', '18mm', 9, '宋体');\n }\n function drawCheckCode(text) {\n if (text === void 0) { text = ''; }\n if (isEmpty(text) || Number(invoiceType) === 1 || Number(invoiceType) === 4) {\n return;\n }\n drawInvoiceText(LODOP, '9pt', 8, '校验码', '30mm', '18mm', 9, '宋体');\n var cLength = text.length / 4;\n for (var i = 0; i < 4; i++) {\n var checkCodeText = text.substr(i === 0 ? 0 : (cLength * i), cLength);\n drawInvoiceText(LODOP, '9pt', 6, checkCodeText, 42 + i * 10 + \"mm\", '18mm', 9, '宋体');\n }\n }\n drawDate(drewDate);\n drawCheckCode(checkCode);\n drawInvoiceText(LODOP, '9pt', 42, invoiceCode, '178mm', '8mm', 8, '宋体', 2, '38mm');\n drawInvoiceText(LODOP, '9pt', 42, invoiceNo, '178mm', '13mm', 11, '宋体', 2, '38mm');\n}\nfunction drawSellerAndPurchaser(LODOP, data) {\n var purchaserName = data.purchaserName, purchaserTaxNo = data.purchaserTaxNo, purchaserAddress = data.purchaserAddress, purchaserTel = data.purchaserTel, purchaserBankName = data.purchaserBankName, purchaserBankAccount = data.purchaserBankAccount, sellerName = data.sellerName, sellerTaxNo = data.sellerTaxNo, sellerAddress = data.sellerAddress, sellerTel = data.sellerTel, sellerBankName = data.sellerBankName, sellerBankAccount = data.sellerBankAccount;\n function calcAndDraw(startX, startY, text) {\n console.log(text.length);\n if (getMixLength(text) <= 48) {\n drawInvoiceText(LODOP, '9pt', 49, text, startX, startY, 9, '宋体', 1, '80mm');\n }\n else if (getMixLength(text) <= 62) {\n drawInvoiceText(LODOP, '7pt', 57, text, startX, startY, 7.5, '宋体', 1, '80mm');\n }\n else {\n drawInvoiceText(LODOP, '7pt', 69, text, startX, startY, 6.5, '宋体', 1, '88mm');\n }\n }\n calcAndDraw('36mm', '26mm', purchaserName);\n drawInvoiceText(LODOP, '9pt', 30, purchaserTaxNo, '39mm', '31mm', 12, 'Courier New');\n calcAndDraw('36mm', '36mm', \"\" + (purchaserAddress || '') + (purchaserTel || ''));\n calcAndDraw('36mm', '41mm', \"\" + (purchaserBankName || '') + (purchaserBankAccount || ''));\n calcAndDraw('36mm', '100mm', sellerName);\n drawInvoiceText(LODOP, '9pt', 30, sellerTaxNo, '39mm', '105mm', 12, 'Courier New');\n calcAndDraw('36mm', '110mm', \"\" + (sellerAddress || '') + (sellerTel || ''));\n calcAndDraw('36mm', '115mm', \"\" + (sellerBankName || '') + (sellerBankAccount || ''));\n}\nfunction drawCipher(LODOP, data) {\n var _a = data.ciphertext, ciphertext = _a === void 0 ? '' : _a;\n if (isEmpty(ciphertext)) {\n return;\n }\n var cLength = ciphertext.length / 4;\n for (var i = 0; i < 4; i++) {\n var text = ciphertext.substr(i === 0 ? 0 : (cLength * i), cLength);\n drawInvoiceText(LODOP, '9pt', 36, text, '126mm', 26 + i * 5 + \"mm\", 12, 'Courier New');\n }\n}\nfunction drawGoods(LODOP, data) {\n var details = data.details, amount = data.amount, taxAmount = data.taxAmount, taxRate = data.taxRate, listFlag = data.listFlag, qdbz = data.qdbz;\n function drawGoodsName(startX, startY, text, newSize) {\n if (newSize) {\n drawInvoiceText(LODOP, '9pt', 29, text, startX, startY, 9, '宋体', 0, '53mm');\n }\n else {\n if (getMixLength(text) <= 31) {\n drawInvoiceText(LODOP, '9pt', 32, text, startX, startY, 9, '宋体', 0, '53mm');\n }\n else if (getMixLength(text) <= 34) {\n drawInvoiceText(LODOP, '8pt', 36, text, startX, startY, 8, '宋体', 0, '54mm');\n }\n else if (getMixLength(text) <= 40) {\n drawInvoiceText(LODOP, '7pt', 42, text, startX, startY, 7, '宋体', 0, '54mm');\n }\n else if (getMixLength(text) <= 47) {\n drawInvoiceText(LODOP, '6pt', 48, text, startX, startY, 6, '宋体', 0, '54mm');\n }\n else if (getMixLength(text) <= 51) {\n drawInvoiceText(LODOP, '5.5pt', 52, text, startX, startY, 5.5, '宋体', 0, '54mm');\n }\n else {\n drawInvoiceText(LODOP, '5.5pt', 52, text, startX, startY, 5.5, '宋体', 0, '54mm');\n }\n }\n }\n function drawSpecification(startX, startY, text) {\n if (getMixLength(text) <= 14) {\n drawInvoiceText(LODOP, '9pt', 15, text, startX, startY, 9, '宋体', 0, '26mm');\n }\n else if (getMixLength(text) <= 16) {\n drawInvoiceText(LODOP, '9pt', 17, text, startX, startY, 7, '宋体', 0, '26mm');\n }\n else if (getMixLength(text) <= 19) {\n drawInvoiceText(LODOP, '9pt', 20, text, startX, startY, 6.5, '宋体', 0, '26mm');\n }\n else {\n drawInvoiceText(LODOP, '4.5pt', 22, text, startX, startY, 5.5, '宋体', 0, '26mm');\n }\n }\n function drawUnit(startX, startY, text) {\n if (getMixLength(text) <= 7) {\n drawInvoiceText(LODOP, '9pt', 8, text, startX, startY, 9, '宋体', 2);\n }\n else if (getMixLength(text) <= 9) {\n drawInvoiceText(LODOP, '9pt', 10, text, startX, startY, 7, '宋体', 2);\n }\n else if (getMixLength(text) <= 11) {\n drawInvoiceText(LODOP, '9pt', 12, text, startX, startY, 6, '宋体', 2);\n }\n else if (getMixLength(text) <= 13) {\n drawInvoiceText(LODOP, '9pt', 14, text, startX, startY, 5, '宋体', 2);\n }\n else if (getMixLength(text) <= 17) {\n drawInvoiceText(LODOP, '9pt', 18, text, startX, startY, 4, '宋体', 2);\n }\n else {\n drawInvoiceText(LODOP, '5pt', 18, text, startX, startY, 4, '宋体', 2);\n }\n }\n function drawQuantity(startX, startY, text) {\n if (getMixLength(text) <= 9) {\n drawInvoiceText(LODOP, '9pt', 11, text, startX, startY, 9, '宋体', 3, '20mm');\n }\n else if (getMixLength(text) <= 12) {\n drawInvoiceText(LODOP, '9pt', 13, text, startX, startY, 7, '宋体', 3, '20mm');\n }\n else if (getMixLength(text) <= 14) {\n drawInvoiceText(LODOP, '9pt', 15, text, startX, startY, 7, '宋体', 3, '20mm');\n }\n else if (getMixLength(text) <= 16) {\n drawInvoiceText(LODOP, '9pt', 17, text, startX, startY, 6, '宋体', 3, '20mm');\n }\n else {\n drawInvoiceText(LODOP, '6pt', 17, text, startX, startY, 6, '宋体', 3, '20mm');\n }\n }\n function drawUnitPrice(startX, startY, text) {\n if (getMixLength(text) <= 9) {\n drawInvoiceText(LODOP, '9pt', 11, text, startX, startY, 9, '宋体', 3, '22mm');\n }\n else if (getMixLength(text) <= 12) {\n drawInvoiceText(LODOP, '9pt', 13, text, startX, startY, 8, '宋体', 3, '22mm');\n }\n else if (getMixLength(text) <= 14) {\n drawInvoiceText(LODOP, '9pt', 15, text, startX, startY, 7, '宋体', 3, '22mm');\n }\n else if (getMixLength(text) <= 16) {\n drawInvoiceText(LODOP, '9pt', 17, text, startX, startY, 6, '宋体', 3, '22mm');\n }\n else {\n drawInvoiceText(LODOP, '6pt', 17, text, startX, startY, 6, '宋体', 3, '22mm');\n }\n }\n function drawAmount(startX, startY, text) {\n var temp = text ? Number(text).toFixed(2) : text === 0 ? Number(text).toFixed(2) : text;\n drawInvoiceText(LODOP, '9pt', 18, temp, startX, startY, 9, '宋体', 3, '28mm');\n }\n function drawTaxRate(startX, startY, text, record) {\n if (record) {\n if (record.taxPre === 0 && record.taxPreType === 1 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '免税';\n }\n else if (record.taxPre === 0 && record.taxPreType === 2 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '不征税';\n }\n else if (typeof text === 'number') {\n text = text * 100 + \"%\";\n }\n }\n else {\n text = text;\n }\n if (getMixLength(text) <= 5) {\n drawInvoiceText(LODOP, '9pt', 6, text, startX, startY, 9, '宋体', 3, '12mm', 1);\n }\n else if (getMixLength(text) <= 6) {\n drawInvoiceText(LODOP, '8pt', 7, text, startX, startY, 8, '宋体', 3, '12mm', 1);\n }\n else if (getMixLength(text) <= 7) {\n drawInvoiceText(LODOP, '7pt', 8, text, startX, startY, 7, '宋体', 3, '12mm', 1);\n }\n else if (getMixLength(text) <= 8) {\n drawInvoiceText(LODOP, '6pt', 9, text, startX, startY, 6, '宋体', 3, '12mm', 1);\n }\n else {\n drawInvoiceText(LODOP, '6pt', 9, text, startX, startY, 6, '宋体', 3, '12mm', 1);\n }\n }\n function drawTaxAmount(startX, startY, text, record) {\n if (record.taxPre === 0 && record.taxPreType === 1 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '***';\n }\n else if (record.taxPre === 0 && record.taxPreType === 2 && Number(record.invoiceType) !== 1 && Number(record.invoiceType) !== 4) {\n text = '***';\n }\n else {\n text = isEmpty(text) ? '' : text === 0 ? '***' : Number(text).toFixed(2);\n }\n drawInvoiceText(LODOP, '9pt', 18, text, startX, startY, 9, '宋体', 3, '28mm');\n }\n function drawTotalAmount(startX, startY, text) {\n var temp = text ? Number(text).toFixed(2) : text === 0 ? Number(text).toFixed(2) : text;\n drawInvoiceText(LODOP, '9pt', 18, \"\\u00A5\" + temp, startX, startY, 9, 'Courier New', 3, '28mm');\n }\n function drawTotalTaxAmount(startX, startY, text) {\n drawInvoiceText(LODOP, '9pt', 18, text, startX, startY, 9, 'Courier New', 3, '28mm');\n }\n function drawListTaxRate(data) {\n var taxRateArr = [];\n var temporaryTaxRate;\n data.details.forEach(function (v, i) {\n if (v.taxPre === 0 && v.taxPreType === 1 && Number(data.invoiceType) !== 1 && Number(data.invoiceType) !== 4) {\n temporaryTaxRate = '免税';\n }\n else {\n if (v.taxPre === 0 && v.taxPreType === 2 && Number(data.invoiceType) !== 1 && Number(data.invoiceType) !== 4) {\n temporaryTaxRate = '不征税';\n }\n else {\n if (typeof v.taxRate === 'number') {\n temporaryTaxRate = v.taxRate * 100 + '%';\n }\n else {\n temporaryTaxRate = v.taxRate;\n }\n }\n }\n if (!taxRateArr.includes(temporaryTaxRate)) {\n taxRateArr.push(temporaryTaxRate);\n }\n });\n if (taxRateArr.length === 1) {\n drawTaxRate('162mm', '52mm', taxRateArr[0], '');\n }\n else if (taxRateArr.length === 2) {\n if (taxRateArr.includes('免税') && taxRateArr.includes('不征税')) {\n drawTaxRate('162mm', '52mm', '零税率', '');\n }\n }\n }\n function drawListTaxAmount(data) {\n var temporaryTaxAmount;\n if (!isEmpty(data.taxAmount)) {\n if (typeof data.taxAmount === 'number') {\n if (data.taxAmount === 0) {\n temporaryTaxAmount = '***';\n }\n else {\n temporaryTaxAmount = data.taxAmount.toFixed(2);\n }\n }\n }\n else {\n temporaryTaxAmount = data.taxAmount.toFixed(2);\n }\n drawInvoiceText(LODOP, '9pt', 18, temporaryTaxAmount, '175mm', '52mm', 9, '宋体', 3, '28mm');\n }\n if (listFlag === 1 || details.length > 8 || qdbz === 1) {\n if (amount >= 0) {\n drawGoodsName('7mm', '52mm', '(详见销货清单)');\n drawAmount('134mm', '52mm', amount);\n drawListTaxRate(data);\n drawListTaxAmount(data);\n }\n else { // 明细超8项且为负数票\n drawGoodsName('7mm', '52mm', '详见对应正数发票及清单');\n drawAmount('134mm', '52mm', amount);\n drawListTaxRate(data);\n drawListTaxAmount(data);\n // drawInvoiceText(LODOP, '9pt', 9, taxAmount, '175mm', '52mm', 9, '宋体', 3, '28mm')\n }\n }\n else {\n var getBit = function (value) {\n if (!isEmpty(value)) {\n var reg = /([0-9]+\\.[0-9]{9})[0-9]*/;\n var str = value.toString();\n str = str.replace(reg, \"$1\");\n return str;\n }\n return value;\n };\n var getTrueLength_1 = function (str) {\n var len = str.length, truelen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n truelen += 2;\n }\n else {\n truelen += 1;\n }\n }\n return truelen;\n };\n var flagSum_1 = 0; // 长度标示\n var rowSum_1 = 0; //行数总数\n var top_2 = 0; //居上的距离\n details.forEach(function (v, i) {\n // console.log(\"文字长度>>>>>>>>\", getTrueLength(`${v.shortName || ''}${v.goodsName}`))\n // console.log('提前判断的长度>>>>>>>', Math.ceil(getTrueLength(`${v.shortName || ''}${v.goodsName}`) / 28))\n flagSum_1 += Math.ceil(getTrueLength_1(\"\" + (v.shortName || '') + v.goodsName) / 28);\n // console.log('总书>>>>>>>', flagSum)\n });\n details.forEach(function (v, i) {\n console.log(flagSum_1);\n if (flagSum_1 <= 8) {\n if (i !== 0) {\n top_2 = rowSum_1 * 3.5;\n }\n rowSum_1 += Math.ceil(getTrueLength_1(\"\" + (v.shortName || '') + v.goodsName) / 28);\n // console.log('行数》》》》》》', Math.ceil(getTrueLength(`${v.shortName || ''}${v.goodsName}`) / 28)) // 所占行数\n // console.log(rowSum ,'>>>>>>>>>>>>>>>>>>>>>>>>>')\n // console.log(top)\n // if (rowSum > 8) {\n // console.error('大于8了')\n // ${52 + i * 4}mm\n // return\n // }\n drawGoodsName('6mm', 52 + top_2 + \"mm\", \"\" + (v.shortName || '') + v.goodsName, 'newSize');\n drawSpecification('57mm', 52 + top_2 + \"mm\", v.specification);\n drawUnit('80mm', 52 + top_2 + \"mm\", v.unit);\n if (v.quantity && v.unitPrice) {\n var quantity = String(v.quantity);\n var unitPrice = String(v.unitPrice);\n drawQuantity('92mm', 52 + top_2 + \"mm\", quantity.length > 13 ? quantity.substr(0, 13) : quantity);\n drawUnitPrice('112mm', 52 + top_2 + \"mm\", unitPrice.length > 13 ? unitPrice.substr(0, 13) : unitPrice);\n }\n drawAmount('134mm', 52 + top_2 + \"mm\", v.amount);\n drawTaxRate('162mm', 52 + top_2 + \"mm\", v.taxRate, v);\n drawTaxAmount('175mm', 52 + top_2 + \"mm\", v.taxAmount, v);\n }\n else {\n drawGoodsName('6mm', 52 + i * 4 + \"mm\", \"\" + (v.shortName || '') + v.goodsName);\n drawSpecification('57mm', 52 + i * 4 + \"mm\", v.specification);\n drawUnit('80mm', 52 + i * 4 + \"mm\", v.unit);\n if (v.quantity && v.unitPrice) {\n var quantity = String(v.quantity);\n var unitPrice = String(v.unitPrice);\n drawQuantity('92mm', 52 + i * 4 + \"mm\", quantity.length > 13 ? quantity.substr(0, 13) : quantity);\n drawUnitPrice('112mm', 52 + i * 4 + \"mm\", unitPrice.length > 13 ? unitPrice.substr(0, 13) : unitPrice);\n }\n drawAmount('134mm', 52 + i * 4 + \"mm\", v.amount);\n drawTaxRate('162mm', 52 + i * 4 + \"mm\", v.taxRate, v);\n drawTaxAmount('175mm', 52 + i * 4 + \"mm\", v.taxAmount, v);\n }\n });\n }\n drawTotalAmount('134mm', '86mm', amount);\n var temporaryTaxAmount = isEmpty(taxAmount) ? '' : taxAmount === 0 ? '***' : taxAmount;\n if (temporaryTaxAmount !== '' && temporaryTaxAmount !== '***') {\n temporaryTaxAmount = temporaryTaxAmount ? Number(temporaryTaxAmount).toFixed(2) : temporaryTaxAmount === 0 ? Number(temporaryTaxAmount).toFixed(2) : temporaryTaxAmount;\n temporaryTaxAmount = \"\\u00A5\" + temporaryTaxAmount;\n }\n drawTotalTaxAmount('175mm', '86mm', temporaryTaxAmount);\n}\nfunction drawTotalAmountWithTax(LODOP, data) {\n var amountWithTax = data.amountWithTax;\n function drawCircle(x, y, r) {\n LODOP.ADD_PRINT_ELLIPSE(changeUnit(y) - changeUnit(r) / 2 + \"mm\", changeUnit(x) - changeUnit(r) / 2 + \"mm\", r, r, 0, 1);\n var temp = Math.sqrt(changeUnit(r) / 2);\n LODOP.ADD_PRINT_LINE(changeUnit(y) - temp + \"mm\", changeUnit(x) - temp + \"mm\", changeUnit(y) + temp + \"mm\", changeUnit(x) + temp + \"mm\", 0, 1);\n LODOP.ADD_PRINT_LINE(changeUnit(y) - temp + \"mm\", changeUnit(x) + temp + \"mm\", changeUnit(y) + temp + \"mm\", changeUnit(x) - temp + \"mm\", 0, 1);\n }\n function drawAmountWithTaxUpperCase(startX, startY, text) {\n if (text > 0) {\n text = digitUppercase(text).replace('元', '圆');\n }\n else {\n text = \"\\uFF08\\u8D1F\\u6570\\uFF09\" + digitUppercase(Math.abs(text)).replace('元', '圆');\n }\n drawInvoiceText(LODOP, '9pt', 56, text, startX, startY, 9, '宋体', 0, '96mm');\n }\n function drawAmountWithTax(startX, startY, text) {\n drawInvoiceText(LODOP, '9pt', 56, text, startX, startY, 11, 'Courier New', 0, '37mm');\n }\n drawCircle('60mm', '94.2mm', '4mm');\n drawAmountWithTaxUpperCase('63mm', '93mm', amountWithTax);\n var tempAmountWithTax = amountWithTax ? Number(amountWithTax).toFixed(2) : amountWithTax === 0 ? Number(amountWithTax).toFixed(2) : amountWithTax;\n drawAmountWithTax('168mm', '93mm', \"\\u00A5\" + tempAmountWithTax);\n}\n// 备注\nfunction drawRemark(LODOP, data) {\n var text = data.remark;\n if (isEmpty(text)) {\n text = '';\n }\n var startX = '126mm';\n var startY = '100mm';\n var remarks = text.replace(/\\\\r\\\\n/g, '\\n') || '';\n drawInvoiceText(LODOP, '9pt', 50, remarks, startX, startY, 9, '宋体');\n}\nfunction drawName(LODOP, data) {\n var payee = data.payee, reviewer = data.reviewer, drawer = data.drawer;\n drawInvoiceText(LODOP, '9pt', 50, payee, '22mm', '121mm', 9, '宋体');\n drawInvoiceText(LODOP, '9pt', 50, reviewer, '74mm', '121mm', 9, '宋体');\n drawInvoiceText(LODOP, '9pt', 50, drawer, '121mm', '121mm', 9, '宋体');\n}\nfunction drawSpecialTag(LODOP, data) {\n var invoiceStatus = data.invoiceStatus, status = data.status, amountWithTax = data.amountWithTax, amount = data.amount;\n if (amountWithTax < 0 && amount < 0) {\n drawInvoiceText(LODOP, '9pt', 42, '销项负数', '30mm', '14mm', 9, '黑体');\n }\n if (data.specialFlag === 1) {\n drawInvoiceText(LODOP, '9pt', 42, '成品油', '30mm', '10mm', 9, '黑体');\n }\n if (data.specialFlag === 3) {\n drawInvoiceText(LODOP, '9pt', 42, '机动车', '30mm', '10mm', 9, '黑体');\n }\n}\nexport var invoice = function (_a) {\n var data = _a.data, _b = _a.top, top = _b === void 0 ? 0 : _b, _c = _a.left, left = _c === void 0 ? 0 : _c, _d = _a.showWindow, showWindow = _d === void 0 ? false : _d, _e = _a.toolsType, toolsType = _e === void 0 ? 0 : _e, _f = _a.licenses, licenses = _f === void 0 ? '' : _f, _g = _a.company, company = _g === void 0 ? '' : _g, _h = _a.getProjectLodop, getProjectLodop = _h === void 0 ? getLodop : _h, _j = _a.isInitPrinter, isInitPrinter = _j === void 0 ? 1 : _j, _k = _a.printer, printer = _k === void 0 ? '' : _k;\n left = left - 16;\n console.log('调用打印方法了', data, top, left, showWindow, toolsType);\n var LODOP = getProjectLodop('', '', licenses);\n if (!LODOP) {\n return;\n }\n LODOP.PRINT_INITA(top, left, \"241.3mm\", \"139.7mm\", data.invoiceCode + ' ' + data.invoiceNo);\n LODOP.SET_PRINT_PAGESIZE(1, \"241.3mm\", \"139.7mm\", \"\");\n LODOP.SET_SHOW_MODE(\"LANGUAGE\", 0);\n LODOP.SET_LICENSES(company, licenses, \"\", \"\");\n if (isInitPrinter === 0 && printer) { // 设置了打印机名称\n LODOP.SET_PRINTER_INDEXA(printer);\n }\n drawQrcode(LODOP, data);\n drawInvoiceMainInfo(LODOP, data);\n drawSellerAndPurchaser(LODOP, data);\n drawCipher(LODOP, data);\n drawGoods(LODOP, data);\n drawTotalAmountWithTax(LODOP, data);\n drawRemark(LODOP, data);\n drawName(LODOP, data);\n drawSpecialTag(LODOP, data);\n if (showWindow) {\n LODOP.PREVIEW();\n // LODOP.PRINT_DESIGN()\n }\n else {\n LODOP.PRINT();\n }\n console.log('打印打印');\n};\n","import { ConvertNumber } from '@/utils/basicUtil';\nimport { getLodop } from '../LodopFuncs.js';\nvar outputInvoiceDic = {\n 0: '类型异常',\n 1: '增值税专用发票',\n 2: '增值税普通发票',\n 3: '增值税电子发票',\n};\nexport var invoiceList = function (_a) {\n var data = _a.data, _b = _a.top, top = _b === void 0 ? 0 : _b, _c = _a.left, left = _c === void 0 ? 0 : _c, _d = _a.width, width = _d === void 0 ? '210mm' : _d, _e = _a.height, height = _e === void 0 ? '297mm' : _e, _f = _a.showWindow, showWindow = _f === void 0 ? false : _f, _g = _a.invoiceListFieldMapping, invoiceListFieldMapping = _g === void 0 ? { invoiceList: [] } : _g, _h = _a.licenses, licenses = _h === void 0 ? '' : _h, _j = _a.company, company = _j === void 0 ? '' : _j, _k = _a.getProjectLodop, getProjectLodop = _k === void 0 ? getLodop : _k, _l = _a.isInitPrinter, isInitPrinter = _l === void 0 ? 1 : _l, _m = _a.printer, printer = _m === void 0 ? '' : _m;\n var discountLine = [];\n var averageWidth = 0;\n var unitPriceWidth = 0;\n var taxRateWidth = 0;\n var invoiceListField = [];\n if (invoiceListFieldMapping.invoiceList) {\n invoiceListField = invoiceListFieldMapping.invoiceList;\n }\n if (invoiceListField.length > 0) {\n var L = invoiceListField.length;\n averageWidth = Number(ConvertNumber(70 / (7 + L), 2));\n unitPriceWidth = Number(ConvertNumber(84 / (7 + L), 2));\n taxRateWidth = Number(ConvertNumber(54 / (7 + L), 2));\n }\n else {\n averageWidth = 10;\n unitPriceWidth = 12;\n taxRateWidth = 8;\n }\n data.details.forEach(function (v) {\n if (v.invoiceLineType === 1) {\n discountLine.push(v);\n }\n });\n var renderPurchaserName = function () {\n if (data.purchaserName && data.purchaserName.length > 26) {\n return (\"<span style=\\\"font-size: 12px;\\\">\" + data.purchaserName + \"</span>\");\n }\n else {\n return (\"<span style=\\\"font-size: 14px;\\\">\" + data.purchaserName + \"</span>\");\n }\n };\n var renderSellerName = function () {\n if (data.sellerName && data.sellerName.length > 26) {\n return (\"<span style=\\\"font-size: 12px;\\\">\" + data.sellerName + \"</span>\");\n }\n else {\n return (\"<span style=\\\"font-size: 14px;\\\">\" + data.sellerName + \"</span>\");\n }\n };\n var renderRemark = function () {\n var temporaryRemarks = data.remark ? data.remark.replace(/\\\\r\\\\n/g, '\\n') || '' : '';\n if (temporaryRemarks && temporaryRemarks.length <= 50) {\n return (\"<span style=\\\"font-size: 14px;\\\">\" + temporaryRemarks + \"</span>\");\n }\n else if (temporaryRemarks && temporaryRemarks.length > 50 && temporaryRemarks.length < 100) {\n return (\"<span style=\\\"font-size: 12px;\\\">\" + temporaryRemarks + \"</span>\");\n }\n else if (temporaryRemarks) {\n return (\"<span style=\\\"font-size: 10px;\\\">\" + temporaryRemarks + \"</span>\");\n }\n else {\n return '';\n }\n };\n var drawDate = function (date) {\n if (!date) {\n return;\n }\n var dateFormat = new Date(date);\n var year = dateFormat.getFullYear();\n var month = dateFormat.getMonth() + 1;\n var monthStr = month.toString();\n if (month >= 1 && month <= 9) {\n monthStr = '0' + month;\n }\n var day = dateFormat.getDate();\n var dayStr = day.toString();\n if (day >= 0 && day <= 9) {\n dayStr = '0' + day;\n }\n var dateStr = year + \"\\u5E74\" + monthStr + \"\\u6708\" + dayStr + \"\\u65E5\";\n return dateStr;\n };\n var tableDom = document.createElement('div');\n tableDom.innerHTML = \"<table border=0 width=\\\"700\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\" style=\\\"border-collapse:collapse\\\" bordercolor=\\\"#000000\\\">\\n <thead>\\n <tr>\\n <td colspan=\\\"\" + (9 + invoiceListField.length) + \"\\\" height=\\\"50px;\\\"></td>\\n </tr>\\n <tr>\\n <td colspan=\\\"\" + (9 + invoiceListField.length) + \"\\\" style=\\\"font-size: 24px;font-weight: bold;text-align: center;\\\">\\u9500\\u552E\\u8D27\\u7269\\u6216\\u8005\\u63D0\\u4F9B\\u5E94\\u7A0E\\u52B3\\u52A1\\u3001\\u670D\\u52A1\\u6E05\\u5355</td>\\n </tr>\\n <tr>\\n <td colspan=\\\"\" + (9 + invoiceListField.length) + \"\\\" height=\\\"20px;\\\"></td>\\n </tr>\\n <tr>\\n <td border=1 colspan=\\\"\" + (9 + invoiceListField.length) + \"\\\" style=\\\"text-align: left;\\\">\\n <span style=\\\"font-size: 14px;\\\">\\u8D2D\\u4E70\\u65B9\\u540D\\u79F0\\uFF1A</span>\\n \" + renderPurchaserName() + \"\\n </td>\\n </tr>\\n <tr>\\n <td colspan=\\\"\" + (9 + invoiceListField.length) + \"\\\" height=\\\"15px;\\\"></td>\\n </tr>\\n <tr>\\n <td border=1 colspan=\\\"\" + (9 + invoiceListField.length) + \"\\\" style=\\\"text-align: left;\\\">\\n <span style=\\\"font-size: 14px;\\\">\\u9500\\u552E\\u65B9\\u540D\\u79F0\\uFF1A</span>\\n \" + renderSellerName() + \"\\n </td>\\n </tr>\\n <tr>\\n <td colspan=\\\"\" + (9 + invoiceListField.length) + \"\\\" height=\\\"15px;\\\"></td>\\n </tr>\\n <tr>\\n <td colspan=\\\"\" + (6 + invoiceListField.length / 2) + \"\\\" style=\\\"text-align: left;font-size: 14px;\\\">\\n \\u6240\\u5C5E\\u589E\\u503C\\u7A0E\" + (Number(data.invoiceType) === 1 ? '专用' : Number(data.invoiceType) === 2 ? '普通' : Number(data.invoiceType) === 3 ? '电子普通' : '电子专用') + \"\\u53D1\\u7968\\u4EE3\\u7801\\uFF1A\" + data.invoiceCode + \"\\n <span style=\\\"margin-left: 10px;\\\">\\u53F7\\u7801\\uFF1A\" + data.invoiceNo + \"</span>\\n </td>\\n <td width=\\\"100%\\\" colspan=\\\"\" + (3 + invoiceListField.length / 2) + \"\\\" tindex=\\\"1\\\" style=\\\"text-align: right;font-size: 14px;\\\">\\n \\u5171<span style=\\\"margin: 0px 10px;\\\"><font tdata=\\\"PageCount\\\">##</font></span>\\u9875\\n <span style=\\\"margin-left: 10px;\\\">\\u7B2C<span style=\\\"margin: 0px 10px;\\\"><font tdata=\\\"PageNO\\\">##</font></span>\\u9875</span>\\n </td>\\n </tr>\\n <tr>\\n <td colspan=\\\"\" + (9 + invoiceListField.length) + \"\\\" height=\\\"10px\\\"></td>\\n </tr>\\n <tr>\\n <td width=\\\"7%\\\" height=\\\"30px;\\\" style=\\\"text-align: center;border: 1px solid #000;font-size: 12px;\\\">\\u5E8F\\u53F7</td>\\n <td width=\\\"23%\\\" height=\\\"30px;\\\" style=\\\"text-align: center;border: 1px solid #000;font-size: 12px;\\\">\\u8D27\\u7269\\uFF08\\u52B3\\u52A1\\uFF09\\u540D\\u79F0</td>\\n <td width=\\\"\" + averageWidth + \"%\\\" height=\\\"30px;\\\" style=\\\"text-align: center;border: 1px solid #000;font-size: 12px;\\\">\\u89C4\\u683C\\u578B\\u53F7</td>\\n <td width=\\\"\" + averageWidth + \"%\\\" height=\\\"30px;\\\" style=\\\"text-align: center;border: 1px solid #000;font-size: 12px;\\\">\\u5355\\u4F4D</td>\\n <td width=\\\"\" + averageWidth + \"%\\\" height=\\\"30px;\\\" style=\\\"text-align: center;border: 1px solid #000;font-size: 12px;\\\">\\u6570\\u91CF</td>\\n <td width=\\\"\" + unitPriceWidth + \"%\\\" height=\\\"30px;\\\" style=\\\"text-align: center;border: 1px solid #000;font-size: 12px;\\\">\\u5355\\u4EF7</td>\\n <td width=\\\"\" + averageWidth + \"%\\\" height=\\\"30px;\\\" style=\\\"text-align: center;border: 1px solid #000;font-size: 12px;\\\">\\u91D1\\u989D</td>\\n <td width=\\\"\" + taxRateWidth + \"%\\\" height=\\\"30px;\\\" style=\\\"text-align: center;border: 1px solid #000;font-size: 12px;\\\">\\u7A0E\\u7387</td>\\n <td width=\\\"\" + averageWidth + \"%\\\" height=\\\"30px;\\\" style=\\\"text-align: center;border: 1px solid #000;font-size: 12px;\\\">\\u7A0E\\u989D</td>\\n \" + invoiceListField.map(function (val, i) { return (\"<td width=\\\"\" + averageWidth + \"%\\\" height=\\\"30px;\\\" style=\\\"text-align: center;border: 1px solid #000;font-size: 12px;\\\">\" + val.displayName + \"</td>\"); }) + \"\\n </tr>\\n </thead>\\n \" + data.details.map(function (v, i) {\n var goodsName = v.goodsName;\n goodsName = v.shortName + goodsName;\n var goodsNameStyle = '12px';\n if (goodsName && goodsName.length < 14) {\n goodsNameStyle = '12px';\n }\n else if (goodsName && goodsName.length < 23) {\n goodsNameStyle = '10px';\n }\n else {\n goodsNameStyle = '8px';\n }\n var specificationStyle = '12px';\n var unitStyle = '12px';\n var quantityStyle = '12px';\n var unitPriceStyle = '12px';\n var amountStyle = '12px';\n var taxRateStyle = '12px';\n var taxAmountStyle = '10px';\n var temporaryQuantity;\n var temporaryUnitPrice;\n if (v.discountFlag !== 1) {\n if (v.specification && v.specification.length < 9) {\n specificationStyle = '12px';\n }\n else if (v.specification && v.specification.length < 17) {\n specificationStyle = '10px';\n }\n else {\n specificationStyle = '8px';\n } // 规格型号\n if (v.unit && v.unit.length < 3) {\n unitStyle = '12px';\n }\n else if (v.unit && v.unit.length < 5) {\n unitStyle = '10px';\n }\n else {\n unitStyle = '8px';\n } // 单位\n if (v.quantity === 0 && v.unitPrice === 0) {\n temporaryQuantity = '';\n temporaryUnitPrice = '';\n }\n else if (v.quantity !== 0 && v.unitPrice === 0) {\n temporaryQuantity = v.quantity;\n temporaryUnitPrice = v.unitPrice.toFixed(2);\n }\n else {\n temporaryQuantity = v.quantity;\n temporaryUnitPrice = v.unitPrice ? String(v.unitPrice).slice(0, 13) : v.unitPrice;\n }\n if (temporaryQuantity && JSON.stringify(temporaryQuantity).length < 9) {\n quantityStyle = '12px';\n }\n else if (temporaryQuantity && JSON.stringify(temporaryQuantity).length < 23) {\n quantityStyle = '10px';\n }\n else {\n quantityStyle = '8px';\n } // 数量\n if (temporaryUnitPrice && JSON.stringify(temporaryUnitPrice).length < 12) {\n unitPriceStyle = '12px';\n }\n else if (temporaryUnitPrice && JSON.stringify(temporaryUnitPrice).length < 23) {\n unitPriceStyle = '10px';\n }\n else {\n unitPriceStyle = '8px';\n } // 单价\n }\n var temporaryAmount = v.amount ? Number(v.amount).toFixed(2) : v.amount;\n temporaryAmount = temporaryAmount.toString();\n if (temporaryAmount && JSON.stringify(temporaryAmount).length < 15) {\n amountStyle = '12px';\n }\n else if (temporaryAmount && JSON.stringify(temporaryAmount).length < 23) {\n amountStyle = '10px';\n }\n else {\n amountStyle = '8px';\n } // 金额\n var temporaryTaxRate;\n if (v.taxPre === 0 && v.taxPreType === 1 && Number(data.invoiceType) !== 1 && Number(data.invoiceType) !== 4) {\n temporaryTaxRate = '免税';\n }\n else {\n if (v.taxPre === 0 && v.taxPreType === 2 && Number(data.invoiceType) !== 1 && Number(data.invoiceType) !== 4) {\n temporaryTaxRate = '不征税';\n }\n else {\n if (typeof v.taxRate === 'number') {\n temporaryTaxRate = v.taxRate * 100 + '%';\n }\n else {\n temporaryTaxRate = v.taxRate;\n }\n }\n } // 税率\n var temporaryTax = v.taxPre === 0 && v.taxPreType === 1 && Number(data.invoiceType) !== 1 && Number(data.invoiceType) !== 4 ? '***' : v.taxPre === 0 && v.taxPreType === 2 && Number(data.invoiceType) !== 1 && Number(data.invoiceType) !== 4 ? '***' : v.taxAmount === 0 ? '***' : v.taxAmount ? Number(v.taxAmount).toFixed(2) : v.taxAmount;\n temporaryTax = temporaryTax.toString();\n if (temporaryTax && JSON.stringify(temporaryTax).length < 15) {\n taxAmountStyle = '12px';\n }\n else if (temporaryTax && JSON.stringify(temporaryTax).length < 23) {\n taxAmountStyle = '10px';\n }\n else {\n taxAmountStyle = '8px';\n } // 税额}\n var invoiceListFieldsTd = '';\n invoiceListField.forEach(function (invVal) {\n var fieldValue = '';\n if (invVal.source === 'mainFields') {\n fieldValue = data[invVal.fieldName];\n if (invVal.sourceFieldName === 'invoiceType') {\n fieldValue = outputInvoiceDic[fieldValue] || '';\n }\n }\n else {\n fieldValue = v[invVal.fieldName];\n }\n invoiceListFieldsTd += \"<td width=\\\"\" + averageWidth + \"%\\\" height=\\\"30px;\\\" style=\\\"height: 30px;text-align: left;border-right: 1px solid #000;font-size: 12px;table-layout:fixed;word-break:break-all;word-wrap:break-word;border-collapse:collapse;\\\">\\n \" + fieldValue + \"\\n </td>\";\n });\n return (\"<tr>\\n <td width=\\\"7%\\\" style=\\\"height: 30px;font-size: 12px;text-align: center;border-left: 1px solid #000;border-right: 1px solid #000;\\\">\" + (i + 1) + \"</td>\\n <td width=\\\"23%\\\" style=\\\"height: 30px;border-right: 1px solid #000;font-size: \" + goodsNameStyle + \";\\\">\" + goodsName + \"</td>\\n <td width=\\\"\" + averageWidth + \"%\\\" style=\\\"height: 30px;border-right: 1px solid #000;font-size: \" + specificationStyle + \";\\\">\" + v.specification + \"</td>\\n <td width=\\\"\" + averageWidth + \"%\\\" style=\\\"height: 30px;text-align: center;border-right: 1px solid #000;font-size: \" + unitStyle + \";\\\">\" + v.unit + \"</td>\\n <td width=\\\"\" + averageWidth + \"%\\\" style=\\\"height: 30px;text-align: right;border-right: 1px solid #000;font-size: \" + quantityStyle + \";padding-right: 2px;\\\">\" + temporaryQuantity + \"</td>\\n <td width=\\\"\" + unitPriceWidth + \"%\\\" style=\\\"height: 30px;text-align: right;border-right: 1px solid #000;font-size: \" + unitPriceStyle + \";padding-right: 2px;\\\">\" + temporaryUnitPrice + \"</td>\\n <td width=\\\"\" + averageWidth + \"%\\\" tclass=\\\"\" + (v.invoiceLineType === 1 ? 'discountTemporaryAmount' : 'temporaryAmount') + \"\\\" style=\\\"height: 30px;text-align: right;border-right: 1px solid #000;font-size: \" + amountStyle + \";padding-right: 2px;\\\">\" + temporaryAmount + \"</td>\\n <td width=\\\"\" + taxRateWidth + \"%\\\" style=\\\"height: 30px;text-align: right;border-right: 1px solid #000;padding-right: 2px;font-size: \" + taxRateStyle + \";\\\">\" + temporaryTaxRate + \"</td>\\n <td width=\\\"\" + averageWidth + \"%\\\" tclass=\\\"\" + (v.invoiceLineType === 1 ? 'discountTemporaryTax' : 'temporaryTax') + \"\\\" style=\\\"height: 30px;text-align: right;border-right: 1px solid #000;font-size: \" + taxAmountStyle + \";padding-right: 2px;\\\">\" + temporaryTax + \"</td>\\n \" + invoiceListFieldsTd + \"\\n </tr>\");\n }) + \"\\n <tfoot>\\n <tr>\\n <td width=\\\"7%\\\" align=\\\"center\\\" style=\\\"height:30px;border-left: 1px solid #000;border-right: 1px solid #000;font-size: 12px;\\\">\\u5C0F\\u8BA1</td>\\n <td width=\\\"23%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + unitPriceWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" tdata=\\\"SubSum\\\" format=\\\"#,##0.00\\\" align=\\\"right\\\" style=\\\"height:30px;font-size: 12px;border-right: 1px solid #000;padding-right: 2px;\\\"><font id=\\\"id01\\\">#########</font></td>\\n <td width=\\\"\" + taxRateWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" tdata=\\\"SubSum\\\" format=\\\"#,##0.00\\\" align=\\\"right\\\" style=\\\"height:30px;font-size: 12px;border-right: 1px solid #000;padding-right: 2px;\\\"><font id=\\\"id01\\\">#########</font></td>\\n \" + invoiceListField.map(function (val, i) { return (\"<td width=\\\"\" + averageWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\"); }) + \"\\n </tr>\\n \" + (discountLine.length ? \"\\n <tr>\\n <td width=\\\"7%\\\" align=\\\"center\\\" style=\\\"height:30px;border-left: 1px solid #000;border-right: 1px solid #000;font-size: 12px;\\\">\\u6298\\u6263</td>\\n <td width=\\\"23%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + unitPriceWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" tdata=\\\"SubSum\\\" format=\\\"#,##0.00\\\" align=\\\"right\\\" style=\\\"height:30px;font-size: 12px;border-right: 1px solid #000;padding-right: 2px;\\\"><font tclass=\\\"discountTemporaryAmount\\\">#########</font></td>\\n <td width=\\\"\" + taxRateWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" tdata=\\\"SubSum\\\" format=\\\"#,##0.00\\\" align=\\\"right\\\" style=\\\"height:30px;font-size: 12px;border-right: 1px solid #000;padding-right: 2px;\\\"><font tclass=\\\"discountTemporaryTax\\\">#########</font></td>\\n \" + invoiceListField.map(function (val, i) { return (\"<td width=\\\"\" + averageWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\"); }) + \"\\n </tr>\\n \" : \"\") + \"\\n <tr>\\n <td width=\\\"7%\\\" align=\\\"center\\\" style=\\\"height:30px;border-left: 1px solid #000;border-right: 1px solid #000;font-size: 12px;\\\">\\u5408\\u8BA1</td>\\n <td width=\\\"23%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + unitPriceWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" tdata=\\\"AllSum\\\" format=\\\"#,##0.00\\\" align=\\\"right\\\" style=\\\"height:30px;font-size: 12px;border-right: 1px solid #000;padding-right: 2px;\\\">\\n <font id=\\\"id02\\\" >###########</font>\\n </td>\\n <td width=\\\"\" + taxRateWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\\n <td width=\\\"\" + averageWidth + \"%\\\" tdata=\\\"AllSum\\\" format=\\\"#,##0.00\\\" align=\\\"right\\\" style=\\\"height:30px;font-size: 12px;border-right: 1px solid #000;padding-right: 2px;\\\"><font id=\\\"id02\\\">#########</font></td>\\n \" + invoiceListField.map(function (val, i) { return (\"<td width=\\\"\" + averageWidth + \"%\\\" style=\\\"border-right: 1px solid #000;\\\"></td>\"); }) + \"\\n </tr>\\n <tr>\\n <td width=\\\"7%\\\" align=\\\"center\\\" style=\\\"height:50px;border: 1px solid #000;font-size: 12px;\\\">\\u5907\\u6CE8</td>\\n <td colspan=\\\"\" + (8 + invoiceListField.length) + \"\\\" style=\\\"height:50px;border: 1px solid #000;\\\">\" + renderRemark() + \"</td>\\n </tr>\\n <tr>\\n <td width=\\\"100%\\\" colspan=\\\"\" + (9 + invoiceListField.length) + \"\\\" height=\\\"10px\\\"></td>\\n </tr>\\n <tr>\\n <td width=\\\"100%\\\" colspan=\\\"\" + (6 + invoiceListField.length / 2) + \"\\\" style=\\\"font-size: 14px;\\\">\\u9500\\u8D27\\u5355\\u4F4D\\uFF08\\u7AE0\\uFF09\\uFF1A</td>\\n <td width=\\\"100%\\\" colspan=\\\"\" + (3 + invoiceListField.length / 2) + \"\\\" style=\\\"font-size: 14px;\\\">\\u5F00\\u7968\\u65E5\\u671F\\uFF1A\" + drawDate(data.drewDate) + \"</td>\\n </tr>\\n <tr>\\n <td width=\\\"100%\\\" colspan=\\\"\" + (9 + invoiceListField.length) + \"\\\" height=\\\"10px\\\"></td>\\n </tr>\\n \\n </tfoot>\\n </table>\";\n var LODOP = getProjectLodop('', '', licenses);\n LODOP.PRINT_INITA(top, left, width, height, data.invoiceCode + ' ' + data.invoiceNo);\n // LODOP.PRINT_INITA(top,left,907,1500,data.invoiceCode + ' ' + data.invoiceNo)\n if (width === '210mm' && height === '297mm') {\n LODOP.SET_PRINT_PAGESIZE(1, 0, 0, \"A4\"); //设置纸张大小 兼容兄弟牌打印机无纸情况\n }\n else {\n LODOP.SET_PRINT_PAGESIZE(1, width, height, \"\"); //设置纸张大小\n }\n // LODOP.SET_PRINT_MODE(\"FULL_WIDTH_FOR_OVERFLOW\",true) // 宽度溢出缩放\n LODOP.SET_SHOW_MODE(\"LANGUAGE\", 0);\n LODOP.SET_LICENSES(company, licenses, \"\", \"\");\n // LODOP.PRINT_INIT(\"清单打印\")\n // LODOP.ADD_PRINT_TABLE(0,0,\"100%\",\"247mm\",tableDom.innerHTML)\n // LODOP.ADD_PRINT_TABLE(0,0,\"RightMargin:0\",\"BottomMargin:30mm\",tableDom.innerHTML)\n LODOP.ADD_PRINT_TABLE(0, \"5%\", \"90%\", \"BottomMargin:30mm\", tableDom.innerHTML);\n // LODOP.SET_PRINT_STYLEA(0,\"Horient\",2) //打印项在纸张中水平居中\n // LODOP.PREVIEW()\n // LODOP.PRINT()\n // LODOP.PRINT_DESIGN()\n if (isInitPrinter === 0 && printer) { // 设置了打印机名称\n LODOP.SET_PRINTER_INDEXA(printer);\n }\n if (showWindow) {\n LODOP.PREVIEW();\n }\n else {\n LODOP.PRINT();\n }\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { getLodop } from '../LodopFuncs.js';\nimport { createCustomsDeclarationForm } from '../../Canvas/CustomsDeclarationForm/index';\nexport var customsDeclaration = function (_a) {\n var data = _a.data, _b = _a.top, top = _b === void 0 ? 0 : _b, _c = _a.left, left = _c === void 0 ? 0 : _c, _d = _a.showWindow, showWindow = _d === void 0 ? false : _d, _e = _a.licenses, licenses = _e === void 0 ? '' : _e, _f = _a.company, company = _f === void 0 ? '' : _f, _g = _a.getProjectLodop, getProjectLodop = _g === void 0 ? getLodop : _g, _h = _a.isInitPrinter, isInitPrinter = _h === void 0 ? 1 : _h, _j = _a.printer, printer = _j === void 0 ? '' : _j;\n return __awaiter(void 0, void 0, void 0, function () {\n var base64s, i, error_1;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n console.log('调用打印方法了', data, top, left, showWindow);\n base64s = [];\n _k.label = 1;\n case 1:\n _k.trys.push([1, 7, , 8]);\n return [4 /*yield*/, createCustomsDeclarationForm({ data: data })];\n case 2:\n base64s = _k.sent();\n i = 0;\n _k.label = 3;\n case 3:\n if (!(i < base64s.length)) return [3 /*break*/, 6];\n return [4 /*yield*/, pointOption({ data: data, top: top, left: left, showWindow: showWindow, licenses: licenses, company: company, getProjectLodop: getProjectLodop, isInitPrinter: isInitPrinter, printer: printer }, base64s[i])];\n case 4:\n _k.sent();\n _k.label = 5;\n case 5:\n i++;\n return [3 /*break*/, 3];\n case 6: return [3 /*break*/, 8];\n case 7:\n error_1 = _k.sent();\n console.error(error_1);\n return [3 /*break*/, 8];\n case 8: return [2 /*return*/];\n }\n });\n });\n};\nfunction pointOption(_a, file) {\n var data = _a.data, _b = _a.top, top = _b === void 0 ? 0 : _b, _c = _a.left, left = _c === void 0 ? 0 : _c, _d = _a.showWindow, showWindow = _d === void 0 ? false : _d, _e = _a.licenses, licenses = _e === void 0 ? '' : _e, _f = _a.company, company = _f === void 0 ? '' : _f, _g = _a.getProjectLodop, getProjectLodop = _g === void 0 ? getLodop : _g, _h = _a.isInitPrinter, isInitPrinter = _h === void 0 ? 1 : _h, _j = _a.printer, printer = _j === void 0 ? '' : _j;\n return __awaiter(this, void 0, void 0, function () {\n var LODOP;\n return __generator(this, function (_k) {\n LODOP = getProjectLodop('', '', licenses);\n if (!LODOP) {\n return [2 /*return*/];\n }\n LODOP.PRINT_INITA(top, left, \"297mm\", \"210mm\", data.invoiceCode + ' ' + data.invoiceNo);\n LODOP.SET_PRINT_PAGESIZE(2, \"210mm\", \"297mm\", \"\");\n LODOP.SET_SHOW_MODE(\"LANGUAGE\", 0);\n LODOP.SET_LICENSES(company, licenses, \"\", \"\");\n if (isInitPrinter === 0 && printer) { // 设置了打印机名称\n LODOP.SET_PRINTER_INDEXA(printer);\n }\n LODOP.ADD_PRINT_IMAGE(0, 0, \"100%\", \"100%\", file);\n LODOP.SET_PRINT_STYLEA(0, \"Stretch\", 2); //(不可变形)扩展缩放模式\n if (showWindow) {\n LODOP.PREVIEW();\n // LODOP.PRINT_DESIGN()\n }\n else {\n LODOP.PRINT();\n }\n console.log('打印打印');\n return [2 /*return*/];\n });\n });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { getLodop } from '../LodopFuncs.js';\nfunction drawQrcode(LODOP, data) {\n LODOP.ADD_PRINT_BARCODE('20mm', '7mm', \"60.00mm\", \"60.00mm\", \"QRCode\", \"\" + data.url);\n LODOP.SET_PRINT_STYLEA(0, \"GroundColor\", \"#FFFFFF\");\n LODOP.SET_PRINT_STYLEA(0, \"QRCodeVersion\", 10);\n LODOP.SET_PRINT_STYLEA(0, \"QRCodeErrorLevel\", \"L\");\n LODOP.SET_PRINT_STYLEA(0, \"DataCharset\", \"GB2312\");\n}\n// 处理pt/px 转换为 mm单位\nfunction changeUnit(text) {\n if (text.toString().includes('mm')) {\n return Number(text.split('mm')[0]);\n }\n else if (text.toString().includes('pt')) {\n return text.split('pt')[0] * 0.376;\n }\n else {\n console.log(text, '-----');\n return Number(text * 25.4 / 96);\n }\n}\n/**\n *\n * @param LODOP 打印 对象\n * @param lineHeight 段落文本行高\n * @param byteLength 设置单字节文字一行内的数量\n * @param text 写入画面的段落文本\n * @param startLeft 开始绘制文本的 x 坐标位置(相对于画布)\n * @param startTop 开始绘制文本的 y 坐标位置(相对于画布)\n * @param ctxFont 字体大小\n * @param ctxFontFamily 字体样式\n * @param textAlign 对齐方式 1 左对齐 2 居中对齐 3 右对齐\n * @param inputWidth 输入框宽度,如果需要限定死宽,通过这个控制\n */\nfunction drawInvoiceText(LODOP, lineHeight, byteLength, text, startLeft, startTop, ctxFont, ctxFontFamily, textAlign, inputWidth) {\n if (textAlign === void 0) { textAlign = 1; }\n if (inputWidth === void 0) { inputWidth = null; }\n if (typeof text === 'number') {\n text = text + '';\n }\n if (text === null || text === undefined) {\n text = '';\n }\n function getTrueLength(str) {\n var len = str.length, truelen = 0;\n for (var x = 0; x < len; x++) {\n if (str.charCodeAt(x) > 128) {\n truelen += 2;\n }\n else {\n truelen += 1;\n }\n }\n return truelen;\n }\n function cutString(str, leng) {\n var len = str.length, tlen = len, nlen = 0;\n var isNextLine = false;\n for (var x = 0; x < len; x++) {\n isNextLine = str.substr(x, 1) === '\\n';\n if (isNextLine) {\n tlen = x;\n break;\n }\n if (str.charCodeAt(x) > 128) {\n if (nlen + 2 < leng) {\n nlen += 2;\n }\n else {\n tlen = x;\n break;\n }\n }\n else {\n if (nlen + 1 < leng) {\n nlen += 1;\n }\n else {\n tlen = x;\n break;\n }\n }\n }\n return ({ tlen: tlen, isNextLine: isNextLine });\n }\n for (var i = 1; getTrueLength(text) > 0; i++) {\n var _a = cutString(text, byteLength), tl = _a.tlen, isNextLine = _a.isNextLine;\n // ctx.fillStyle = ctxFillStyle //字体颜色\n // ctx.font = ctxFont //字体 \n // ctx.textBaseline = 'top'\n // ctx.fillText(text.substr(0, tl).replace(/^\\s+|\\s+$/, \"\"), startLeft, (i-1) * lineHeight + startTop)\n if (!startTop) {\n console.log(text);\n }\n var top_1 = ((i - 1) * changeUnit(lineHeight) + changeUnit(startTop)) + 'mm';\n var width = byteLength / 2 * ctxFont + ctxFont + \"pt\";\n if (inputWidth) {\n width = inputWidth;\n }\n LODOP.ADD_PRINT_TEXT(top_1, startLeft, width, 18, text.substr(0, tl).replace(/^\\s+|\\s+$/, \"\"));\n if (isNextLine) { // \b换行 要把/n 去掉 所以加了两个字符\n text = text.substr(tl + 1);\n }\n else {\n text = text.substr(tl);\n }\n LODOP.SET_PRINT_STYLEA(0, \"FontSize\", ctxFont);\n LODOP.SET_PRINT_STYLEA(0, \"LineSpacing\", -3);\n LODOP.SET_PRINT_STYLEA(0, \"TextNeatRow\", true);\n LODOP.SET_PRINT_STYLEA(0, \"FontName\", ctxFontFamily);\n if (textAlign === 2) {\n if (text.length < byteLength) {\n LODOP.SET_PRINT_STYLEA(0, \"Alignment\", 2);\n }\n }\n else if (textAlign === 1) {\n LODOP.SET_PRINT_STYLEA(0, \"Alignment\", 1);\n }\n else if (textAlign === 3) {\n LODOP.SET_PRINT_STYLEA(0, \"Alignment\", 3);\n }\n }\n}\n/**\n *\n * @param data\n * {\n * sellerName\n * }\n * @returns\n */\nexport var invoiceQrCode = function (_a) {\n var data = _a.data, _b = _a.top, top = _b === void 0 ? 0 : _b, _c = _a.left, left = _c === void 0 ? 0 : _c, _d = _a.showWindow, showWindow = _d === void 0 ? false : _d, _e = _a.licenses, licenses = _e === void 0 ? '' : _e, _f = _a.company, company = _f === void 0 ? '' : _f, _g = _a.getProjectLodop, getProjectLodop = _g === void 0 ? getLodop : _g, _h = _a.isInitPrinter, isInitPrinter = _h === void 0 ? 1 : _h, _j = _a.printer, printer = _j === void 0 ? '' : _j;\n return __awaiter(void 0, void 0, void 0, function () {\n var LODOP;\n return __generator(this, function (_k) {\n console.log('调用打印方法了', data, top, left, showWindow);\n LODOP = getProjectLodop('', '', licenses);\n if (!LODOP) {\n return [2 /*return*/];\n }\n LODOP.PRINT_INITA(top, left, \"80mm\", \"100mm\", '开票二维码');\n LODOP.SET_PRINT_PAGESIZE(1, \"80mm\", \"100mm\", \"\");\n LODOP.SET_SHOW_MODE(\"LANGUAGE\", 0);\n LODOP.SET_LICENSES(company, licenses, \"\", \"\");\n if (isInitPrinter === 0 && printer) { // 设置了打印机名称\n LODOP.SET_PRINTER_INDEXA(printer);\n }\n drawInvoiceText(LODOP, '10pt', 28, data.sellerName, '3mm', '5mm', 10, '宋体', 2);\n drawInvoiceText(LODOP, '9pt', 40, '二维码有限期为15天,请及时开票!', '4mm', '15mm', 7, '宋体', 2);\n drawInvoiceText(LODOP, '9pt', 40, '开票金额:', '5mm', '70mm', 7, '宋体', 1);\n drawInvoiceText(LODOP, '9pt', 32, data.amountWithTax + \"\\u5143\", '5mm', '70mm', 8, '宋体', 3);\n drawInvoiceText(LODOP, '9pt', 40, '订单编号:', '5mm', '75mm', 7, '宋体', 1);\n drawInvoiceText(LODOP, '9pt', 32, \"\" + data.orderCode, '10mm', '75mm', 7, '宋体', 3);\n drawInvoiceText(LODOP, '9pt', 40, '生成时间:', '5mm', '80mm', 7, '宋体', 1);\n drawInvoiceText(LODOP, '9pt', 32, \"\" + data.createTime, '10mm', '80mm', 7, '宋体', 3);\n drawQrcode(LODOP, data);\n if (showWindow) {\n LODOP.PREVIEW();\n // LODOP.PRINT_DESIGN()\n }\n else {\n LODOP.PRINT();\n }\n console.log('打印打印');\n return [2 /*return*/];\n });\n });\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { getLodop } from '../LodopFuncs.js';\nimport { createRedLetterNotice } from '../../Canvas/RedLetterNotice/index';\nexport var redLetterNotice = function (_a) {\n var data = _a.data, _b = _a.top, top = _b === void 0 ? 0 : _b, _c = _a.left, left = _c === void 0 ? 0 : _c, _d = _a.showWindow, showWindow = _d === void 0 ? false : _d, _e = _a.licenses, licenses = _e === void 0 ? '' : _e, _f = _a.company, company = _f === void 0 ? '' : _f, _g = _a.getProjectLodop, getProjectLodop = _g === void 0 ? getLodop : _g, _h = _a.isInitPrinter, isInitPrinter = _h === void 0 ? 1 : _h, _j = _a.printer, printer = _j === void 0 ? '' : _j;\n return __awaiter(void 0, void 0, void 0, function () {\n var base64, error_1, LODOP;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n console.log('调用打印方法了', data, top, left, showWindow);\n base64 = '';\n _k.label = 1;\n case 1:\n _k.trys.push([1, 3, , 4]);\n return [4 /*yield*/, createRedLetterNotice({ data: data })];\n case 2:\n base64 = _k.sent();\n return [3 /*break*/, 4];\n case 3:\n error_1 = _k.sent();\n console.error(error_1);\n return [3 /*break*/, 4];\n case 4:\n LODOP = getProjectLodop('', '', licenses);\n if (!LODOP) {\n return [2 /*return*/];\n }\n LODOP.PRINT_INITA(top, left, \"210mm\", \"297mm\", data.invoiceCode + ' ' + data.invoiceNo);\n LODOP.SET_PRINT_PAGESIZE(1, \"210mm\", \"297mm\", \"\");\n LODOP.SET_SHOW_MODE(\"LANGUAGE\", 0);\n LODOP.SET_LICENSES(company, licenses, \"\", \"\");\n if (isInitPrinter === 0 && printer) { // 设置了打印机名称\n LODOP.SET_PRINTER_INDEXA(printer);\n }\n LODOP.ADD_PRINT_IMAGE(0, 0, \"100%\", \"100%\", base64);\n LODOP.SET_PRINT_STYLEA(0, \"Stretch\", 2); //(不可变形)扩展缩放模式\n if (showWindow) {\n LODOP.PREVIEW();\n // LODOP.PRINT_DESIGN()\n }\n else {\n LODOP.PRINT();\n }\n console.log('打印打印');\n return [2 /*return*/];\n }\n });\n });\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { getLodop } from '../LodopFuncs.js';\nimport { createInvoice } from '../../Canvas/Invoice/index';\nexport var invoiceSample = function (_a) {\n var data = _a.data, _b = _a.top, top = _b === void 0 ? 0 : _b, _c = _a.left, left = _c === void 0 ? 0 : _c, _d = _a.showWindow, showWindow = _d === void 0 ? false : _d, _e = _a.licenses, licenses = _e === void 0 ? '' : _e, _f = _a.company, company = _f === void 0 ? '' : _f, _g = _a.getProjectLodop, getProjectLodop = _g === void 0 ? getLodop : _g, _h = _a.isInitPrinter, isInitPrinter = _h === void 0 ? 1 : _h, _j = _a.printer, printer = _j === void 0 ? '' : _j;\n return __awaiter(void 0, void 0, void 0, function () {\n var base64, error_1, LODOP;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n console.log('调用打印方法了', data, top, left, showWindow);\n base64 = '';\n _k.label = 1;\n case 1:\n _k.trys.push([1, 3, , 4]);\n return [4 /*yield*/, createInvoice({ data: data, showSample: false })];\n case 2:\n base64 = _k.sent();\n return [3 /*break*/, 4];\n case 3:\n error_1 = _k.sent();\n console.error(error_1);\n return [3 /*break*/, 4];\n case 4:\n LODOP = getProjectLodop('', '', licenses);\n if (!LODOP) {\n return [2 /*return*/];\n }\n // LODOP.PRINT_INITA(top,left,\"297mm\",\"210mm\",data.invoiceCode + ' ' + data.invoiceNo)\n LODOP.PRINT_INIT(data.invoiceCode + ' ' + data.invoiceNo);\n LODOP.SET_PRINT_PAGESIZE(2, 0, 0, \"A4\");\n // LODOP.SET_PRINT_PAGESIZE(2, \"297mm\", \"210mm\", \"\")\n LODOP.SET_SHOW_MODE(\"LANGUAGE\", 0);\n LODOP.SET_LICENSES(company, licenses, \"\", \"\");\n if (isInitPrinter === 0 && printer) { // 设置了打印机名称\n LODOP.SET_PRINTER_INDEXA(printer);\n }\n LODOP.ADD_PRINT_IMAGE(0, 0, \"200mm\", \"133.2mm\", base64);\n LODOP.SET_PRINT_STYLEA(0, \"Stretch\", 1); //(不可变形)扩展缩放模式\n LODOP.SET_PRINT_STYLEA(0, \"Horient\", 2); //(不可变形)扩展缩放模式\n if (showWindow) {\n LODOP.PREVIEW();\n // LODOP.PRINT_DESIGN()\n }\n else {\n LODOP.PRINT();\n }\n console.log('打印打印');\n return [2 /*return*/];\n }\n });\n });\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { getLodop } from '../LodopFuncs.js';\nimport { createExpressDeliveryCode } from '../../Canvas/ExpressDeliveryCode/index';\nexport var expressDeliveryCode = function (_a) {\n var data = _a.data, _b = _a.top, top = _b === void 0 ? 0 : _b, _c = _a.left, left = _c === void 0 ? 0 : _c, _d = _a.showWindow, showWindow = _d === void 0 ? false : _d, _e = _a.licenses, licenses = _e === void 0 ? '' : _e, _f = _a.company, company = _f === void 0 ? '' : _f, _g = _a.getProjectLodop, getProjectLodop = _g === void 0 ? getLodop : _g, _h = _a.isInitPrinter, isInitPrinter = _h === void 0 ? 1 : _h, _j = _a.printer, printer = _j === void 0 ? '' : _j;\n return __awaiter(void 0, void 0, void 0, function () {\n var base64, error_1, LODOP;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n console.log('调用打印方法了', data, top, left, showWindow);\n base64 = '';\n _k.label = 1;\n case 1:\n _k.trys.push([1, 3, , 4]);\n return [4 /*yield*/, createExpressDeliveryCode({ data: data })];\n case 2:\n base64 = _k.sent();\n return [3 /*break*/, 4];\n case 3:\n error_1 = _k.sent();\n console.error(error_1);\n return [3 /*break*/, 4];\n case 4:\n LODOP = getProjectLodop('', '', licenses);\n if (!LODOP) {\n return [2 /*return*/];\n }\n LODOP.PRINT_INITA(top, left, \"297mm\", \"210mm\", data.invoiceCode + ' ' + data.invoiceNo);\n LODOP.SET_PRINT_PAGESIZE(2, \"210mm\", \"297mm\", \"\");\n LODOP.SET_SHOW_MODE(\"LANGUAGE\", 0);\n LODOP.SET_LICENSES(company, licenses, \"\", \"\");\n if (isInitPrinter === 0 && printer) { // 设置了打印机名称\n LODOP.SET_PRINTER_INDEXA(printer);\n }\n LODOP.ADD_PRINT_IMAGE(0, 0, \"100%\", \"100%\", base64);\n LODOP.SET_PRINT_STYLEA(0, \"Stretch\", 2); //(不可变形)扩展缩放模式\n if (showWindow) {\n LODOP.PREVIEW();\n // LODOP.PRINT_DESIGN()\n }\n else {\n LODOP.PRINT();\n }\n console.log('打印打印');\n return [2 /*return*/];\n }\n });\n });\n};\n","import { invoice } from './invoice/index';\nimport { invoiceList } from './invoiceList/index';\nimport { customsDeclaration } from './customsDeclaration/index';\nimport { invoiceQrCode } from './invoiceQrCode/index';\nimport { redLetterNotice } from './redLetterNotice/index';\nimport { invoiceSample } from './invoiceSample/index';\nimport { expressDeliveryCode } from './expressDeliveryCode/index';\nexport function printInvoice(params) {\n invoice(params);\n}\nexport function printInvoiceList(params) {\n invoiceList(params);\n}\nexport function printCustomsDeclaration(params) {\n customsDeclaration(params);\n}\nexport function printInvoiceQrCode(params) {\n invoiceQrCode(params);\n}\nexport function printRedLetterNotice(params) {\n redLetterNotice(params);\n}\nexport function printInvoiceSample(params) {\n invoiceSample(params);\n}\nexport function printExpressDeliveryCode(params) {\n expressDeliveryCode(params);\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { createInvoice } from './Canvas/Invoice/index';\nimport { createFullElectricity } from './Canvas/FullElectricity/index';\nimport { createMotorVehicleInvoice } from './Canvas/MotorVehicleInvoice/index';\nimport { createInvoiceList } from './Canvas/InvoiceList/index';\nimport { createCustomsDeclarationForm } from './Canvas/CustomsDeclarationForm/index';\nimport { createCustomsPaymentLetter } from './Canvas/CustomsPaymentLetter/index';\nimport { createInvoiceQrCode } from './Canvas/invoiceQrCode/index';\nimport { createRedLetterNotice } from './Canvas/RedLetterNotice/index';\nimport { createExpressDeliveryCode } from './Canvas/ExpressDeliveryCode/index';\nimport { printInvoice, printInvoiceList, printCustomsDeclaration, printInvoiceQrCode, printRedLetterNotice, printInvoiceSample, printExpressDeliveryCode } from './Print/index';\nimport { needCLodop, getLodop } from './Print/LodopFuncs.js';\nvar InvoiceSample = /** @class */ (function () {\n function InvoiceSample(params) {\n this.getLodop = null;\n this.needCLodop = null;\n var data = (params === null || params === void 0 ? void 0 : params.data) || {};\n this.invoiceData = data;\n this.getInvoiceSample = this.getInvoiceSample.bind(this);\n this.getMotorVehicleInvoiceSample = this.getMotorVehicleInvoiceSample.bind(this);\n this.getInvoiceListSample = this.getInvoiceListSample.bind(this);\n this.getCustomsDeclarationFormSample = this.getCustomsDeclarationFormSample.bind(this);\n this.getCustomsPaymentLetterSample = this.getCustomsPaymentLetterSample.bind(this);\n this.createInvoiceQrCode = this.createInvoiceQrCode.bind(this);\n this.createRedLetterNotice = this.createRedLetterNotice.bind(this);\n this.createExpressDeliveryCode = this.createExpressDeliveryCode.bind(this);\n this.printInvoice = this.printInvoice.bind(this);\n this.printInvoiceList = this.printInvoiceList.bind(this);\n this.printCustomsDeclaration = this.printCustomsDeclaration.bind(this);\n this.printInvoiceQrCode = this.printInvoiceQrCode.bind(this);\n this.printRedLetterNotice = this.printRedLetterNotice.bind(this);\n this.printInvoiceSample = this.printInvoiceSample.bind(this);\n this.printExpressDeliveryCode = this.printExpressDeliveryCode.bind(this);\n this.initLodop = this.initLodop.bind(this);\n this.getLodop = getLodop;\n this.needCLodop = needCLodop;\n }\n // showSample boolean 是否展示样张两个字\n InvoiceSample.prototype.getInvoiceSample = function (params) {\n var showSample = true;\n var samplePosition = 'bottom';\n if (params && typeof params === 'object') {\n showSample = params.showSample;\n samplePosition = params.samplePosition;\n }\n try {\n return createInvoice({ data: this.invoiceData, showSample: showSample, samplePosition: samplePosition });\n }\n catch (error) {\n console.error(error);\n }\n };\n InvoiceSample.prototype.getMotorVehicleInvoiceSample = function (params) {\n var showSample = true;\n if (params && typeof params === 'object') {\n showSample = params.showSample;\n }\n try {\n return createMotorVehicleInvoice({ data: this.invoiceData, showSample: showSample });\n }\n catch (error) {\n console.error(error);\n }\n };\n InvoiceSample.prototype.getInvoiceListSample = function () {\n try {\n return createInvoiceList(this.invoiceData);\n }\n catch (error) {\n console.error(error);\n }\n };\n InvoiceSample.prototype.getFullElectricity = function (params) {\n var showSample = true;\n var samplePosition = 'bottom';\n if (params && typeof params === 'object') {\n showSample = params.showSample;\n samplePosition = params.samplePosition;\n }\n try {\n return createFullElectricity({ data: this.invoiceData, showSample: showSample, samplePosition: samplePosition });\n }\n catch (error) {\n console.error(error);\n }\n };\n InvoiceSample.prototype.getCustomsDeclarationFormSample = function () {\n return __awaiter(this, void 0, void 0, function () {\n var error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, createCustomsDeclarationForm({ data: this.invoiceData })];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n error_1 = _a.sent();\n console.error(error_1);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n InvoiceSample.prototype.getCustomsPaymentLetterSample = function () {\n return __awaiter(this, void 0, void 0, function () {\n var error_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, createCustomsPaymentLetter({ data: this.invoiceData })];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n error_2 = _a.sent();\n console.error(error_2);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n InvoiceSample.prototype.createInvoiceQrCode = function () {\n return __awaiter(this, void 0, void 0, function () {\n var error_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, createInvoiceQrCode({ data: this.invoiceData })];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n error_3 = _a.sent();\n console.error(error_3);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n InvoiceSample.prototype.createRedLetterNotice = function () {\n return __awaiter(this, void 0, void 0, function () {\n var error_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, createRedLetterNotice({ data: this.invoiceData })];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n error_4 = _a.sent();\n console.error(error_4);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n InvoiceSample.prototype.createExpressDeliveryCode = function () {\n return __awaiter(this, void 0, void 0, function () {\n var error_5;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, createExpressDeliveryCode({ data: this.invoiceData })];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n error_5 = _a.sent();\n console.error(error_5);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n InvoiceSample.prototype.printInvoice = function (params) {\n var licenses = params.licenses, resetProps = __rest(params, [\"licenses\"]);\n if (!licenses) {\n console.error('请传入licenses注册码字段');\n }\n printInvoice(__assign({ data: this.invoiceData, licenses: licenses }, resetProps));\n };\n InvoiceSample.prototype.printInvoiceList = function (params) {\n var licenses = params.licenses, resetProps = __rest(params, [\"licenses\"]);\n if (!licenses) {\n console.error('请传入licenses注册码字段');\n }\n printInvoiceList(__assign({ data: this.invoiceData, licenses: licenses }, resetProps));\n };\n InvoiceSample.prototype.printCustomsDeclaration = function (params) {\n var licenses = params.licenses, resetProps = __rest(params, [\"licenses\"]);\n if (!licenses) {\n console.error('请传入licenses注册码字段');\n }\n printCustomsDeclaration(__assign({ data: this.invoiceData, licenses: licenses }, resetProps));\n };\n InvoiceSample.prototype.printExpressDeliveryCode = function (params) {\n var licenses = params.licenses, resetProps = __rest(params, [\"licenses\"]);\n if (!licenses) {\n console.error('请传入licenses注册码字段');\n }\n printExpressDeliveryCode(__assign({ data: this.invoiceData, licenses: licenses }, resetProps));\n };\n InvoiceSample.prototype.printInvoiceQrCode = function (params) {\n var licenses = params.licenses, resetProps = __rest(params, [\"licenses\"]);\n if (!licenses) {\n console.error('请传入licenses注册码字段');\n }\n printInvoiceQrCode(__assign({ data: this.invoiceData, licenses: licenses }, resetProps));\n };\n InvoiceSample.prototype.printRedLetterNotice = function (params) {\n var licenses = params.licenses, resetProps = __rest(params, [\"licenses\"]);\n if (!licenses) {\n console.error('请传入licenses注册码字段');\n }\n printRedLetterNotice(__assign({ data: this.invoiceData, licenses: licenses }, resetProps));\n };\n InvoiceSample.prototype.printInvoiceSample = function (params) {\n var licenses = params.licenses, resetProps = __rest(params, [\"licenses\"]);\n if (!licenses) {\n console.error('请传入licenses注册码字段');\n }\n printInvoiceSample(__assign({ data: this.invoiceData, licenses: licenses }, resetProps));\n };\n InvoiceSample.prototype.initLodop = function (_a) {\n var _b = _a.targetAddress, targetAddress = _b === void 0 ? 'localhost' : _b;\n var CLodopIsLocal;\n if (needCLodop()) {\n var src1 = \"http://\" + targetAddress + \":8000/CLodopfuncs.js?priority=1\";\n var src2 = \"http://\" + targetAddress + \":18000/CLodopfuncs.js?priority=0\";\n var head = document.head || document.getElementsByTagName(\"head\")[0] || document.documentElement;\n var oscript = document.createElement(\"script\");\n oscript.src = src1;\n head.insertBefore(oscript, head.firstChild);\n oscript = document.createElement(\"script\");\n oscript.src = src2;\n head.insertBefore(oscript, head.firstChild);\n CLodopIsLocal = !!((src1 + src2).match(/\\/\\/localho|\\/\\/127.0.0./i));\n this.CLodopIsLocal = CLodopIsLocal;\n }\n };\n return InvoiceSample;\n}());\nexport default InvoiceSample;\n"],"sourceRoot":""}
|