{"version":3,"sources":["webpack://cryptoPro/webpack/universalModuleDefinition","webpack://cryptoPro/webpack/bootstrap","webpack://cryptoPro/./helpers/_afterPluginsLoaded.ts","webpack://cryptoPro/./helpers/_extractMeaningfulErrorMessage.ts","webpack://cryptoPro/./helpers/_generateCadesFn.ts","webpack://cryptoPro/./constants/index.ts","webpack://cryptoPro/./api/getUserCertificates.ts","webpack://cryptoPro/./api/certificate/index.ts","webpack://cryptoPro/./api/certificate/getCadesProp.ts","webpack://cryptoPro/./api/getSystemInfo.ts","webpack://cryptoPro/./crypto-pro.ts","webpack://cryptoPro/./api/index.ts","webpack://cryptoPro/./api/getCertificate.ts","webpack://cryptoPro/./vendor/cadesplugin_api.js","webpack://cryptoPro/./api/certificate/certificate.ts","webpack://cryptoPro/./constants/cades-constants.ts","webpack://cryptoPro/./constants/issuer-tags-translations.ts","webpack://cryptoPro/./constants/oids-dictionary.ts","webpack://cryptoPro/./constants/subject-tags-translations.ts","webpack://cryptoPro/./api/certificate/exportBase64.ts","webpack://cryptoPro/./api/certificate/getAlgorithm.ts","webpack://cryptoPro/./api/certificate/getDecodedExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getInfo.ts","webpack://cryptoPro/./helpers/_parseCertInfo.ts","webpack://cryptoPro/./api/certificate/hasExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/isValid.ts","webpack://cryptoPro/./helpers/_extractCommonName.ts","webpack://cryptoPro/./api/isValidSystemSetup.ts","webpack://cryptoPro/./helpers/_isSupportedCadesVersion.ts","webpack://cryptoPro/./helpers/_isSupportedCSPVersion.ts","webpack://cryptoPro/./api/createSignature.ts","webpack://cryptoPro/./helpers/_getCadesCert.ts","webpack://cryptoPro/./helpers/_getDateObj.ts","webpack://cryptoPro/./api/createHash.ts","webpack://cryptoPro/../node_modules/buffer/index.js","webpack://cryptoPro/../node_modules/webpack/buildin/global.js","webpack://cryptoPro/../node_modules/base64-js/index.js","webpack://cryptoPro/../node_modules/ieee754/index.js","webpack://cryptoPro/../node_modules/isarray/index.js"],"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","isSetLogLevel","isPluginLoaded","_afterPluginsLoaded","fn","canPromise","Boolean","Promise","error","console","Error","_extractMeaningfulErrorMessage","cadesplugin","set_log_level","LOG_LEVEL_ERROR","apply","this","args","errorContainer","getLastError","message","test","searchResult","match","__cadesAsyncToken__","__createCadesPluginObject__","_generateCadesFn","callback","cadesGeneratorsAPI","CreateObjectAsync","callbackName","callbackLiteral","String","callbackArguments","callbackBody","replace","crossEnvCallbackLiteral","Function","join","certificatesCache","getUserCertificates","resetCache","eval","cadesStore","cadesCertificates","cadesCertificatesCount","Open","CAPICOM_CURRENT_USER_STORE","CAPICOM_MY_STORE","CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED","Certificates","Find","CAPICOM_CERTIFICATE_FIND_TIME_VALID","CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY","CAPICOM_PROPID_KEY_PROV_INFO","Count","certificateList","cadesCertificate","Item","push","Certificate","_extractCommonName","SubjectName","IssuerName","Thumbprint","ValidFromDate","ValidToDate","Close","getCadesProp","propName","_cadesCertificate","propertyValue","getSystemInfo","sysInfo","cadesVersion","cspVersion","cadesAbout","PluginVersion","CSPVersion","Version","toString","getCertificate","thumbprint","availableCertificates","foundCertificate","find","cert","pluginObject","plugin_resolved","plugin_reject","plugin_resolve","isOpera","isFireFox","isEdge","isSafari","failed_extensions","resolve","reject","browserSpecs","check_browser","ru_cryptopro_npcades_10_native_bridge","callbacksCount","callbacks","resultForCallback","callbackId","resultArray","functionName","hasCallback","iframe","document","createElement","arrObjs","Array","setAttribute","encodeURIComponent","JSON","stringify","e","alert","documentElement","appendChild","parentNode","removeChild","JSModuleVersion","async_spawn","set","set_pluginObject","is_capilite_enabled","isNativeMessageSupported","ReleasePluginObjects","CreateObject","cadesplugin_load_timeout","setTimeout","check_load_timeout","set_constantValues","current_log_level","check_plugin_working","tem","ua","navigator","userAgent","M","version","exec","appName","appVersion","splice","cpcsp_console_log","level","msg","LOG_LEVEL_DEBUG","log","LOG_LEVEL_INFO","info","postMessage","CAPICOM_LOCAL_MACHINE_STORE","CADESCOM_LOCAL_MACHINE_STORE","CADESCOM_CURRENT_USER_STORE","CADESCOM_CONTAINER_STORE","CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME","CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED","CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING","CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE","XmlDsigGost3410UrlObsolete","XmlDsigGost3411UrlObsolete","XmlDsigGost3410Url","XmlDsigGost3411Url","CADESCOM_CADES_DEFAULT","CADESCOM_CADES_BES","CADESCOM_CADES_T","CADESCOM_CADES_X_LONG_TYPE_1","CADESCOM_PKCS7_TYPE","CADESCOM_ENCODE_BASE64","CADESCOM_ENCODE_BINARY","CADESCOM_ENCODE_ANY","CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT","CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN","CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY","CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME","CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME","CAPICOM_CERTIFICATE_FIND_SHA1_HASH","CAPICOM_CERTIFICATE_FIND_ISSUER_NAME","CAPICOM_CERTIFICATE_FIND_ROOT_NAME","CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME","CAPICOM_CERTIFICATE_FIND_EXTENSION","CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY","CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY","CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID","CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED","CAPICOM_CERTIFICATE_FIND_KEY_USAGE","CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE","CAPICOM_PROPID_ENHKEY_USAGE","CAPICOM_OID_OTHER","CAPICOM_OID_KEY_USAGE_EXTENSION","CAPICOM_EKU_CLIENT_AUTH","CAPICOM_EKU_SMARTCARD_LOGON","CAPICOM_EKU_OTHER","CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME","CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME","CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION","CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME","CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME","CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION","CADESCOM_ATTRIBUTE_OTHER","CADESCOM_STRING_TO_UCS2LE","CADESCOM_BASE64_TO_BINARY","CADESCOM_DISPLAY_DATA_NONE","CADESCOM_DISPLAY_DATA_CONTENT","CADESCOM_DISPLAY_DATA_ATTRIBUTE","CADESCOM_ENCRYPTION_ALGORITHM_RC2","CADESCOM_ENCRYPTION_ALGORITHM_RC4","CADESCOM_ENCRYPTION_ALGORITHM_DES","CADESCOM_ENCRYPTION_ALGORITHM_3DES","CADESCOM_ENCRYPTION_ALGORITHM_AES","CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89","CADESCOM_HASH_ALGORITHM_SHA1","CADESCOM_HASH_ALGORITHM_MD2","CADESCOM_HASH_ALGORITHM_MD4","CADESCOM_HASH_ALGORITHM_MD5","CADESCOM_HASH_ALGORITHM_SHA_256","CADESCOM_HASH_ALGORITHM_SHA_384","CADESCOM_HASH_ALGORITHM_SHA_512","CADESCOM_HASH_ALGORITHM_CP_GOST_3411","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC","CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC","CADESCOM_AllowNone","CADESCOM_AllowNoOutstandingRequest","CADESCOM_AllowUntrustedCertificate","CADESCOM_AllowUntrustedRoot","CADESCOM_SkipInstallToStore","generatorFunc","continuer","verb","arg","result","generator","err","done","then","onFulfilled","onRejected","slice","arguments","isIE","isIOS","call_ru_cryptopro_npcades_10_native_bridge","getElementById","ActiveXObject","decimalToHexString","number","toUpperCase","GetMessageFromException","exception","cpcsp_chrome_nmcades","array","tmpobj","ex","response","str","show_firefox_missing_extension_dialog","cadesplugin_skip_extension_install","ovr","id","style","innerHTML","getElementsByTagName","addEventListener","plugin_loaded_error","visibility","install_opera_extension","event","opr","addons","installExtension","location","reload","stopPropagation","firefox_or_edge_nmcades_onload","check_chrome_plugin","plugin_loaded","nmcades_api_onload","data","url","substring","indexOf","fileref","onerror","onload","load_extension","load_npapi_plugin","elem","elem1","elem2","createPromise","check_npapi_plugin","display","mimetype","mimeTypes","enabledPlugin","div","length","readyState","obj","EnableInternalCSP","issuerName","subjectName","validFrom","validTo","getOwnerInfo","getInfo","SUBJECT_TAGS_TRANSLATIONS","getIssuerInfo","ISSUER_TAGS_TRANSLATIONS","getExtendedKeyUsage","getDecodedExtendedKeyUsage","getAlgorithm","isValid","exportBase64","hasExtendedKeyUsage","oids","CAPICOM_ACTIVE_DIRECTORY_USER_STORE","CAPICOM_MEMORY_STORE","CAPICOM_PROPID_ACCESS_STATE","CAPICOM_PROPID_ARCHIVED","CAPICOM_PROPID_ARCHIVED_KEY_HASH","CAPICOM_PROPID_AUTO_ENROLL","CAPICOM_PROPID_CROSS_CERT_DIST_POINTS","CAPICOM_PROPID_CTL_USAGE","CAPICOM_PROPID_DATE_STAMP","CAPICOM_PROPID_DESCRIPTION","CAPICOM_PROPID_EFS","CAPICOM_PROPID_ENROLLMENT","CAPICOM_PROPID_EXTENDED_ERROR_INFO","CAPICOM_PROPID_FIRST_RESERVED","CAPICOM_PROPID_FIRST_USER","CAPICOM_PROPID_FORTEZZA_DATA","CAPICOM_PROPID_FRIENDLY_NAME","CAPICOM_PROPID_HASH_PROP","CAPICOM_PROPID_IE30_RESERVED","CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH","CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH","CAPICOM_PROPID_KEY_CONTEXT","CAPICOM_PROPID_KEY_IDENTIFIER","CAPICOM_PROPID_KEY_PROV_HANDLE","CAPICOM_PROPID_KEY_SPEC","CAPICOM_PROPID_LAST_RESERVED","CAPICOM_PROPID_LAST_USER","CAPICOM_PROPID_MD5_HASH","CAPICOM_PROPID_NEXT_UPDATE_LOCATION","CAPICOM_PROPID_PUBKEY_ALG_PARA","CAPICOM_PROPID_PUBKEY_HASH_RESERVED","CAPICOM_PROPID_PVK_FILE","CAPICOM_PROPID_RENEWAL","CAPICOM_PROPID_SHA1_HASH","CAPICOM_PROPID_SIGNATURE_HASH","CAPICOM_PROPID_SMART_CARD_DATA","CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH","CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH","CAPICOM_PROPID_UNKNOWN","CAPICOM_SMART_CARD_USER_STORE","CAPICOM_STORE_OPEN_EXISTING_ONLY","CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED","CAPICOM_STORE_OPEN_READ_ONLY","CAPICOM_STORE_OPEN_READ_WRITE","CHECK_NONE","CHECK_OFFLINE_REVOCATION_STATUS","CHECK_ONLINE_REVOCATION_STATUS","CHECK_SIGNATURE_VALIDITY","CHECK_TIME_VALIDITY","CHECK_TRUSTED_ROOT","TRUST_CTL_IS_NOT_SIGNATURE_VALID","TRUST_CTL_IS_NOT_TIME_VALID","TRUST_CTL_IS_NOT_VALID_FOR_USAGE","TRUST_IS_CYCLIC","TRUST_IS_NOT_SIGNATURE_VALID","TRUST_IS_NOT_TIME_NESTED","TRUST_IS_NOT_TIME_VALID","TRUST_IS_NOT_VALID_FOR_USAGE","TRUST_IS_PARTIAL_CHAIN","TRUST_IS_REVOKED","TRUST_IS_UNTRUSTED_ROOT","TRUST_REVOCATION_STATUS_UNKNOWN","possibleNames","translation","OIDS_DICTIONARY","base64","Export","cadesPublicKey","algorithmInfo","algorithm","oid","PublicKey","Algorithm","FriendlyName","Value","reduce","decodedOids","oidCode","count","OIDS","ExtendedKeyUsage","EKUs","cadesExtendedKeyUsage","OID","tags","entitiesPath","entities","_parseCertInfo","tagsTranslations","rawInfo","extractedEntities","map","group","segmentsMatch","trim","title","description","oidIdentifierMatch","oidIdentifier","isTranslated","oidTranslation","tagTranslation","tag","certOids","isArray","every","oidToCheck","some","certOid","IsValid","Result","isValidSystemSetup","systemInfo","_isSupportedCadesVersion","_isSupportedCSPVersion","major","patch","Number","createSignature","messageHash","detachedSignature","_getCadesCert","cadesAttrs","cadesSignedData","cadesSigner","cadesAuthAttrs","signature","currentTime","_getDateObj","Date","propset_Name","propset_Value","propset_Certificate","AuthenticatedAttributes2","Add","propset_ContentEncoding","propset_Content","propset_Options","SignCades","cadesCertificateList","certificatesCount","dateObj","getVarDate","createHash","unencryptedMessage","messageBase64","hash","cadesHashedData","Buffer","from","propset_Algorithm","propset_DataEncoding","Hash","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","__proto__","encodingOrOffset","allocUnsafe","TypeError","ArrayBuffer","byteOffset","byteLength","undefined","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","fromString","isBuffer","len","checked","copy","buffer","val","type","fromObject","assertSize","size","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","lastIndexOf","arr","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","equals","inspect","max","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","g","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","num","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","LN2"],"mappings":"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","file":"crypto-pro.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(\"cryptoPro\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cryptoPro\"] = factory();\n\telse\n\t\troot[\"cryptoPro\"] = 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 = 8);\n","import { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\n\ntype Unpromisify = T extends Promise ? R : T;\n\nlet isSetLogLevel = false;\nlet isPluginLoaded = false;\n\nexport const _afterPluginsLoaded = any>(\n fn: T,\n): ((...args: Parameters) => Promise>>) => {\n const canPromise = Boolean(window.Promise);\n\n return async function (...args: Parameters): Promise>> {\n if (!isPluginLoaded) {\n try {\n require('../vendor/cadesplugin_api');\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при подключении модуля для работы с Cades plugin',\n );\n }\n\n isPluginLoaded = true;\n }\n\n const { cadesplugin } = window;\n\n if (!canPromise) {\n throw new Error('Необходим полифилл для Promise');\n }\n\n if (!cadesplugin) {\n throw new Error('Не подключен модуль для работы с Cades plugin');\n }\n\n if (!isSetLogLevel) {\n cadesplugin.set_log_level(cadesplugin.LOG_LEVEL_ERROR);\n\n isSetLogLevel = true;\n }\n\n try {\n await cadesplugin;\n } catch (error) {\n console.error(error);\n\n throw new Error(\n _extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации модуля для работы с Cades plugin',\n );\n }\n\n return await fn.apply(this, args);\n };\n};\n","export const _extractMeaningfulErrorMessage = (error: Error): string | null => {\n let errorContainer = window.cadesplugin?.getLastError && window.cadesplugin.getLastError(error);\n\n if (!errorContainer?.message) {\n if (!error.message) {\n return null;\n }\n\n errorContainer = error;\n }\n\n const containsRussianLetters = /[а-яА-Я]/.test(errorContainer.message);\n\n if (!containsRussianLetters) {\n return null;\n }\n\n const searchResult = errorContainer.message.match(/^(.*?)(?:(?:\\.?\\s?\\(?0x)|(?:\\.?$))/);\n\n return searchResult ? searchResult[1] : null;\n};\n","// синтетические переменные, которые подменяются в рантайме\nexport const __cadesAsyncToken__ = {};\nexport const __createCadesPluginObject__ = (...args): any => ({});\n\nfunction getGeneratorConstructor(): GeneratorFunction {\n return new Function('', 'return Object.getPrototypeOf(function*(){}).constructor')();\n}\n\nexport const _generateCadesFn = (callback: Function): string => {\n const { cadesplugin } = window;\n const cadesGeneratorsAPI = Boolean(cadesplugin.CreateObjectAsync);\n const callbackName = callback.name || 'dynamicFn';\n const callbackLiteral = String(callback);\n const callbackArguments = callbackLiteral.match(/^function[\\s\\w]*?\\((.*?)\\)/)?.[1] || '';\n const callbackBody = callbackLiteral.replace(/^.*?{([\\s\\S]*?)}$/, '$1');\n let crossEnvCallbackLiteral = String(\n new (cadesGeneratorsAPI ? getGeneratorConstructor() : Function)(callbackArguments, callbackBody),\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__createCadesPluginObject__(\\([\\s\\S]*?\\))/gm,\n `cadesplugin.CreateObject${cadesGeneratorsAPI ? 'Async' : ''}$1`,\n );\n\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\n /\\w+?\\.__cadesAsyncToken__\\s*?\\+\\s*?\\b/gm,\n cadesGeneratorsAPI ? 'yield ' : '',\n );\n\n if (!cadesGeneratorsAPI) {\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/propset_(.*?)\\((.*?)\\)/gm, '$1 = $2');\n }\n\n return [\n cadesGeneratorsAPI ? `cadesplugin.async_spawn(${crossEnvCallbackLiteral});` : `(${crossEnvCallbackLiteral})();`,\n `//# sourceURL=crypto-pro_${callbackName}.js`,\n ].join('');\n};\n","export * from './cades-constants';\nexport * from './issuer-tags-translations';\nexport * from './oids-dictionary';\nexport * from './subject-tags-translations';\n","import { CadesCertificate, Certificate } from './certificate';\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractCommonName } from '../helpers/_extractCommonName';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nlet certificatesCache: Certificate[];\n\n/**\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\n const { cadesplugin } = window;\n\n if (!resetCache && certificatesCache) {\n return certificatesCache;\n }\n\n return eval(\n _generateCadesFn(function getUserCertificates(): Certificate[] {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificates;\n let cadesCertificatesCount;\n\n try {\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\n\n if (cadesCertificates) {\n cadesCertificates =\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\n\n /**\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\n * или не действительны на данный момент\n */\n cadesCertificates =\n __cadesAsyncToken__ +\n cadesCertificates.Find(\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\n CAPICOM_PROPID_KEY_PROV_INFO,\n );\n\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!cadesCertificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n const certificateList: Certificate[] = [];\n\n try {\n while (cadesCertificatesCount) {\n const cadesCertificate: CadesCertificate =\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\n\n certificateList.push(\n new Certificate(\n cadesCertificate,\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\n ),\n );\n\n cadesCertificatesCount--;\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\n }\n\n cadesStore.Close();\n\n certificatesCache = certificateList;\n\n return certificatesCache;\n }),\n );\n});\n","export * from './certificate';\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает указанное внутренее свойство у сертификата в формате Cades\n *\n * @param propName = наименование свойства\n * @returns значение запрошенного свойства\n */\nexport const getCadesProp = _afterPluginsLoaded(function (propName: string): any {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getCadesProp() {\n let propertyValue;\n\n try {\n propertyValue = __cadesAsyncToken__ + cadesCertificate[propName];\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при обращении к свойству сертификата');\n }\n\n return propertyValue;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\nexport interface SystemInfo {\n cadesVersion: string;\n cspVersion: string;\n}\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP и плагине\n */\nexport const getSystemInfo = _afterPluginsLoaded(\n (): SystemInfo => {\n const sysInfo = {\n cadesVersion: null,\n cspVersion: null,\n };\n\n return eval(\n _generateCadesFn(function getSystemInfo(): SystemInfo {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n sysInfo.cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n if (!sysInfo.cadesVersion) {\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n sysInfo.cadesVersion = __cadesAsyncToken__ + sysInfo.cadesVersion.toString();\n sysInfo.cspVersion = __cadesAsyncToken__ + sysInfo.cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о системе');\n }\n\n return sysInfo;\n }),\n );\n },\n);\n","export * from './api';\n","export * from './getCertificate';\nexport * from './getUserCertificates';\nexport * from './getSystemInfo';\nexport * from './isValidSystemSetup';\nexport * from './createSignature';\nexport * from './createHash';\nexport * from './certificate';\n","import { Certificate } from './certificate';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { getUserCertificates } from './getUserCertificates';\n\n/**\n * Возвращает сертификат по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат\n */\nexport const getCertificate = _afterPluginsLoaded(\n async (thumbprint: string): Promise => {\n if (!thumbprint) {\n throw new Error('Отпечаток не указан');\n }\n\n const availableCertificates: Certificate[] = await getUserCertificates();\n const foundCertificate: Certificate = availableCertificates.find((cert) => cert.thumbprint === thumbprint);\n\n if (!foundCertificate) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\n }\n\n return foundCertificate;\n },\n);\n",";(function () {\n //already loaded\n if(window.cadesplugin)\n return;\n\n var pluginObject;\n var plugin_resolved = 0;\n var plugin_reject;\n var plugin_resolve;\n var isOpera = 0;\n var isFireFox = 0;\n var isEdge = 0;\n var isSafari = 0;\n var failed_extensions = 0;\n\n var canPromise = !!window.Promise;\n var cadesplugin;\n\n if(canPromise)\n {\n cadesplugin = new Promise(function(resolve, reject)\n {\n plugin_resolve = resolve;\n plugin_reject = reject;\n });\n } else\n {\n cadesplugin = {};\n }\n\n function check_browser() {\n var ua= navigator.userAgent, tem, M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n if(/trident/i.test(M[1])){\n tem= /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return {name:'IE',version:(tem[1] || '')};\n }\n if(M[1]=== 'Chrome'){\n tem= ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\n if(tem!= null) return {name:tem[1].replace('OPR', 'Opera'),version:tem[2]};\n }\n M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];\n if((tem= ua.match(/version\\/(\\d+)/i))!= null) M.splice(1, 1, tem[1]);\n return {name:M[0],version:M[1]};\n }\n var browserSpecs = check_browser();\n\n function cpcsp_console_log(level, msg){\n //IE9 не может писать в консоль если не открыта вкладка developer tools\n if(typeof(console) === 'undefined')\n return;\n if (level <= cadesplugin.current_log_level ){\n if (level === cadesplugin.LOG_LEVEL_DEBUG)\n console.log(\"DEBUG: %s\", msg);\n if (level === cadesplugin.LOG_LEVEL_INFO)\n console.info(\"INFO: %s\", msg);\n if (level === cadesplugin.LOG_LEVEL_ERROR)\n console.error(\"ERROR: %s\", msg);\n return;\n }\n }\n\n function set_log_level(level){\n if (!((level === cadesplugin.LOG_LEVEL_DEBUG) ||\n (level === cadesplugin.LOG_LEVEL_INFO) ||\n (level === cadesplugin.LOG_LEVEL_ERROR))){\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"cadesplugin_api.js: Incorrect log_level: \" + level);\n return;\n }\n cadesplugin.current_log_level = level;\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = DEBUG\");\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = INFO\");\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = ERROR\");\n if(isNativeMessageSupported())\n {\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\n window.postMessage(\"set_log_level=debug\", \"*\");\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\n window.postMessage(\"set_log_level=info\", \"*\");\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\n window.postMessage(\"set_log_level=error\", \"*\");\n }\n }\n\n function set_constantValues()\n {\n cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;\n cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;\n cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;\n cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;\n cadesplugin.CADESCOM_CONTAINER_STORE = 100;\n\n cadesplugin.CAPICOM_MY_STORE = \"My\";\n\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\n\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\n\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\n\n cadesplugin.XmlDsigGost3410UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411\";\n cadesplugin.XmlDsigGost3411UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr3411\";\n cadesplugin.XmlDsigGost3410Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411\";\n cadesplugin.XmlDsigGost3411Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411\";\n\n cadesplugin.CADESCOM_CADES_DEFAULT = 0;\n cadesplugin.CADESCOM_CADES_BES = 1;\n cadesplugin.CADESCOM_CADES_T = 0x5;\n cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\n cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff;\n\n cadesplugin.CADESCOM_ENCODE_BASE64 = 0;\n cadesplugin.CADESCOM_ENCODE_BINARY = 1;\n cadesplugin.CADESCOM_ENCODE_ANY = -1;\n\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\n\n cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\n cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\n\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\n cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\n\n cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\n\n cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9;\n\n cadesplugin.CAPICOM_OID_OTHER = 0;\n cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\n\n cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2;\n cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5;\n cadesplugin.CAPICOM_EKU_OTHER = 0;\n\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\n cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1;\n\n cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0;\n cadesplugin.CADESCOM_BASE64_TO_BINARY = 1;\n\n cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0;\n cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1;\n cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\n\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\n\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0;\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1;\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2;\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3;\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\n\n cadesplugin.LOG_LEVEL_DEBUG = 4;\n cadesplugin.LOG_LEVEL_INFO = 2;\n cadesplugin.LOG_LEVEL_ERROR = 1;\n\n cadesplugin.CADESCOM_AllowNone = 0;\n cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1;\n cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2;\n cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4;\n cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000;\n }\n\n function async_spawn(generatorFunc) {\n function continuer(verb, arg) {\n var result;\n try {\n result = generator[verb](arg);\n } catch (err) {\n return Promise.reject(err);\n }\n if (result.done) {\n return result.value;\n } else {\n return Promise.resolve(result.value).then(onFulfilled, onRejected);\n }\n }\n var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));\n var onFulfilled = continuer.bind(continuer, \"next\");\n var onRejected = continuer.bind(continuer, \"throw\");\n return onFulfilled();\n }\n\n function isIE() {\n // var retVal = ((\"Microsoft Internet Explorer\" == navigator.appName) || // IE < 11\n // navigator.userAgent.match(/Trident\\/./i)); // IE 11\n return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE');\n }\n\n function isIOS() {\n return (navigator.userAgent.match(/ipod/i) ||\n navigator.userAgent.match(/ipad/i) ||\n navigator.userAgent.match(/iphone/i));\n }\n\n function isNativeMessageSupported()\n {\n // В IE работаем через NPAPI\n if(isIE())\n return false;\n // В Edge работаем через NativeMessage\n if(browserSpecs.name === 'Edge') {\n isEdge = true;\n return true;\n }\n // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии\n if(browserSpecs.name === 'Opera') {\n isOpera = true;\n if(browserSpecs.version >= 33){\n return true;\n }\n else{\n return false;\n }\n }\n if(browserSpecs.name === 'Firefox') {\n isFireFox = true;\n if(browserSpecs.version >= 52){\n return true;\n }\n else{\n return false;\n }\n }\n if(browserSpecs.name === 'Chrome') {\n if(browserSpecs.version >= 42){\n return true;\n }\n else{\n return false;\n }\n }\n //В Сафари начиная с 12 версии нет NPAPI\n if(browserSpecs.name === 'Safari') {\n isSafari = true;\n if(browserSpecs.version >= 12) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n // Функция активации объектов КриптоПро ЭЦП Browser plug-in\n function CreateObject(name) {\n if (isIOS()) {\n // На iOS для создания объектов используется функция\n // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js\n return call_ru_cryptopro_npcades_10_native_bridge(\"CreateObject\", [name]);\n }\n if (isIE()) {\n // В Internet Explorer создаются COM-объекты\n if (name.match(/X509Enrollment/i)) {\n try {\n // Объекты CertEnroll пробуем создавать через нашу фабрику,\n // если не получилось то через CX509EnrollmentWebClassFactory\n var objCertEnrollClassFactory = document.getElementById(\"webClassFactory\");\n return objCertEnrollClassFactory.CreateObject(name);\n }\n catch (e) {\n try {\n var objWebClassFactory = document.getElementById(\"certEnrollClassFactory\");\n return objWebClassFactory.CreateObject(name);\n }\n catch (err) {\n throw (\"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS\");\n }\n }\n }\n // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory\n try {\n var objWebClassFactory = document.getElementById(\"webClassFactory\");\n return objWebClassFactory.CreateObject(name);\n }\n catch (e) {\n // Для версий плагина ниже 2.0.12538\n return new ActiveXObject(name);\n }\n }\n // создаются объекты NPAPI\n return pluginObject.CreateObject(name);\n }\n\n function decimalToHexString(number) {\n if (number < 0) {\n number = 0xFFFFFFFF + number + 1;\n }\n\n return number.toString(16).toUpperCase();\n }\n\n function GetMessageFromException(e) {\n var err = e.message;\n if (!err) {\n err = e;\n } else if (e.number) {\n err += \" (0x\" + decimalToHexString(e.number) + \")\";\n }\n return err;\n }\n\n function getLastError(exception) {\n if(isNativeMessageSupported() || isIE() || isIOS() ) {\n return GetMessageFromException(exception);\n }\n\n try {\n return pluginObject.getLastError();\n } catch(e) {\n return GetMessageFromException(exception);\n }\n }\n\n // Функция для удаления созданных объектов\n function ReleasePluginObjects() {\n return cpcsp_chrome_nmcades.ReleasePluginObjects();\n }\n\n // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in\n function CreateObjectAsync(name) {\n return pluginObject.CreateObjectAsync(name);\n }\n\n //Функции для IOS\n var ru_cryptopro_npcades_10_native_bridge = {\n callbacksCount : 1,\n callbacks : {},\n\n // Automatically called by native layer when a result is available\n resultForCallback : function resultForCallback(callbackId, resultArray) {\n var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId];\n if (!callback) return;\n callback.apply(null,resultArray);\n },\n\n // Use this in javascript to request native objective-c code\n // functionName : string (I think the name is explicit :p)\n // args : array of arguments\n // callback : function with n-arguments that is going to be called when the native code returned\n call : function call(functionName, args, callback) {\n var hasCallback = callback && typeof callback === \"function\";\n var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0;\n\n if (hasCallback)\n ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback;\n\n var iframe = document.createElement(\"IFRAME\");\n var arrObjs = new Array(\"_CPNP_handle\");\n try{\n iframe.setAttribute(\"src\", \"cpnp-js-call:\" + functionName + \":\" + callbackId+ \":\" + encodeURIComponent(JSON.stringify(args, arrObjs)));\n } catch(e){\n alert(e);\n }\n document.documentElement.appendChild(iframe);\n iframe.parentNode.removeChild(iframe);\n iframe = null;\n }\n };\n\n function call_ru_cryptopro_npcades_10_native_bridge(functionName, array){\n var tmpobj;\n var ex;\n ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function(e, response){\n ex = e;\n var str='tmpobj='+response;\n eval(str);\n if (typeof (tmpobj) === \"string\"){\n tmpobj = tmpobj.replace(/\\\\\\n/gm, \"\\n\");\n tmpobj = tmpobj.replace(/\\\\\\r/gm, \"\\r\");\n }\n });\n if(ex)\n throw ex;\n return tmpobj;\n }\n\n function show_firefox_missing_extension_dialog()\n {\n if (!window.cadesplugin_skip_extension_install)\n {\n var ovr = document.createElement('div');\n ovr.id = \"cadesplugin_ovr\";\n ovr.style = \"visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)\";\n ovr.innerHTML = \"
\" +\n \"\" +\n \"

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.\" +\n \"

Скачать расширение

\" +\n \"
\";\n document.getElementsByTagName(\"Body\")[0].appendChild(ovr);\n document.getElementById(\"cadesplugin_close_install\").addEventListener('click',function()\n {\n plugin_loaded_error(\"Плагин недоступен\");\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\n });\n\n ovr.addEventListener('click',function()\n {\n plugin_loaded_error(\"Плагин недоступен\");\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\n });\n ovr.style.visibility=\"visible\";\n }\n }\n\n\n //Выводим окно поверх других с предложением установить расширение для Opera.\n //Если установленна переменная cadesplugin_skip_extension_install - не предлагаем установить расширение\n function install_opera_extension()\n {\n if (!window.cadesplugin_skip_extension_install)\n {\n document.addEventListener('DOMContentLoaded', function() {\n var ovr = document.createElement('div');\n ovr.id = \"cadesplugin_ovr\";\n ovr.style = \"visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)\";\n ovr.innerHTML = \"
\" +\n \"\" +\n \"

Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо установить расширение из каталога дополнений Opera.\" +\n \"

\" +\n \"
\";\n document.getElementsByTagName(\"Body\")[0].appendChild(ovr);\n var btn_install = document.getElementById(\"cadesplugin_install\");\n btn_install.addEventListener('click', function(event) {\n opr.addons.installExtension(\"epebfcehmdedogndhlcacafjaacknbcm\",\n function()\n {\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\n location.reload();\n },\n function(){})\n });\n document.getElementById(\"cadesplugin_close_install\").addEventListener('click',function()\n {\n plugin_loaded_error(\"Плагин недоступен\");\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\n });\n\n ovr.addEventListener('click',function()\n {\n plugin_loaded_error(\"Плагин недоступен\");\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\n });\n ovr.style.visibility=\"visible\";\n document.getElementById(\"cadesplugin_ovr_item\").addEventListener('click',function(e){\n e.stopPropagation();\n });\n });\n }else\n {\n plugin_loaded_error(\"Плагин недоступен\");\n }\n }\n\n function firefox_or_edge_nmcades_onload() {\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\n }\n\n function nmcades_api_onload () {\n window.postMessage(\"cadesplugin_echo_request\", \"*\");\n window.addEventListener(\"message\", function (event){\n if (typeof(event.data) !== \"string\" || !event.data.match(\"cadesplugin_loaded\"))\n return;\n if(isFireFox || isEdge || isSafari)\n {\n // Для Firefox, Сафари, Edge вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js\n var url = event.data.substring(event.data.indexOf(\"url:\") + 4);\n var fileref = document.createElement('script');\n fileref.setAttribute(\"type\", \"text/javascript\");\n fileref.setAttribute(\"src\", url);\n fileref.onerror = plugin_loaded_error;\n fileref.onload = firefox_or_edge_nmcades_onload;\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\n // Для Firefox, Safari и Edge у нас только по одному расширению.\n failed_extensions++;\n }else {\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\n }\n }, false);\n }\n\n //Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari\n function load_extension()\n {\n\n if(isFireFox || isEdge || isSafari){\n // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера.\n nmcades_api_onload();\n } else {\n // в асинхронном варианте для chrome и opera подключаем оба расширения\n var fileref = document.createElement('script');\n fileref.setAttribute(\"type\", \"text/javascript\");\n fileref.setAttribute(\"src\", \"chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js\");\n fileref.onerror = plugin_loaded_error;\n fileref.onload = nmcades_api_onload;\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\n fileref = document.createElement('script');\n fileref.setAttribute(\"type\", \"text/javascript\");\n fileref.setAttribute(\"src\", \"chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js\");\n fileref.onerror = plugin_loaded_error;\n fileref.onload = nmcades_api_onload;\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\n }\n }\n\n //Загружаем плагин для NPAPI\n function load_npapi_plugin()\n {\n var elem = document.createElement('object');\n elem.setAttribute(\"id\", \"cadesplugin_object\");\n elem.setAttribute(\"type\", \"application/x-cades\");\n elem.setAttribute(\"style\", \"visibility: hidden\");\n document.getElementsByTagName(\"body\")[0].appendChild(elem);\n pluginObject = document.getElementById(\"cadesplugin_object\");\n if(isIE())\n {\n var elem1 = document.createElement('object');\n elem1.setAttribute(\"id\", \"certEnrollClassFactory\");\n elem1.setAttribute(\"classid\", \"clsid:884e2049-217d-11da-b2a4-000e7bbb2b09\");\n elem1.setAttribute(\"style\", \"visibility: hidden\");\n document.getElementsByTagName(\"body\")[0].appendChild(elem1);\n var elem2 = document.createElement('object');\n elem2.setAttribute(\"id\", \"webClassFactory\");\n elem2.setAttribute(\"classid\", \"clsid:B04C8637-10BD-484E-B0DA-B8A039F60024\");\n elem2.setAttribute(\"style\", \"visibility: hidden\");\n document.getElementsByTagName(\"body\")[0].appendChild(elem2);\n }\n }\n\n //Отправляем событие что все ок.\n function plugin_loaded()\n {\n plugin_resolved = 1;\n if(canPromise)\n {\n plugin_resolve();\n }else {\n window.postMessage(\"cadesplugin_loaded\", \"*\");\n }\n }\n\n //Отправляем событие что сломались.\n function plugin_loaded_error(msg)\n {\n if(isNativeMessageSupported())\n {\n //в асинхронном варианте подключаем оба расширения, если сломались оба пробуем установить для Opera\n failed_extensions++;\n if(failed_extensions<2)\n return;\n if(isOpera && (typeof(msg) === 'undefined'|| typeof(msg) === 'object'))\n {\n install_opera_extension();\n return;\n }\n }\n if(typeof(msg) === 'undefined' || typeof(msg) === 'object')\n msg = \"Плагин недоступен\";\n plugin_resolved = 1;\n if(canPromise)\n {\n plugin_reject(msg);\n } else {\n window.postMessage(\"cadesplugin_load_error\", \"*\");\n }\n }\n\n //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку\n function check_load_timeout()\n {\n if(plugin_resolved === 1)\n return;\n if(isFireFox)\n {\n show_firefox_missing_extension_dialog();\n }\n plugin_resolved = 1;\n if(canPromise)\n {\n plugin_reject(\"Истекло время ожидания загрузки плагина\");\n } else {\n window.postMessage(\"cadesplugin_load_error\", \"*\");\n }\n\n }\n\n //Вспомогательная функция для NPAPI\n function createPromise(arg)\n {\n return new Promise(arg);\n }\n\n function check_npapi_plugin (){\n try {\n var oAbout = CreateObject(\"CAdESCOM.About\");\n plugin_loaded();\n }\n catch (err) {\n document.getElementById(\"cadesplugin_object\").style.display = 'none';\n // Объект создать не удалось, проверим, установлен ли\n // вообще плагин. Такая возможность есть не во всех браузерах\n var mimetype = navigator.mimeTypes[\"application/x-cades\"];\n if (mimetype) {\n var plugin = mimetype.enabledPlugin;\n if (plugin) {\n plugin_loaded_error(\"Плагин загружен, но не создаются обьекты\");\n }else\n {\n plugin_loaded_error(\"Ошибка при загрузке плагина\");\n }\n }else\n {\n plugin_loaded_error(\"Плагин недоступен\");\n }\n }\n }\n\n //Проверяем работает ли плагин\n function check_plugin_working()\n {\n var div = document.createElement(\"div\");\n div.innerHTML = \"\";\n var isIeLessThan9 = (div.getElementsByTagName(\"i\").length === 1);\n if (isIeLessThan9) {\n plugin_loaded_error(\"Internet Explorer версии 8 и ниже не поддерживается\");\n return;\n }\n\n if(isNativeMessageSupported())\n {\n load_extension();\n }else if(!canPromise) {\n window.addEventListener(\"message\", function (event){\n if (event.data !== \"cadesplugin_echo_request\")\n return;\n load_npapi_plugin();\n check_npapi_plugin();\n },\n false);\n }else\n {\n if(document.readyState === \"complete\"){\n load_npapi_plugin();\n check_npapi_plugin();\n } else {\n window.addEventListener(\"load\", function (event) {\n load_npapi_plugin();\n check_npapi_plugin();\n }, false);\n }\n }\n }\n\n function set_pluginObject(obj)\n {\n pluginObject = obj;\n }\n\n function is_capilite_enabled()\n {\n if ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP)\n return true;\n return false;\n };\n\n //Export\n cadesplugin.JSModuleVersion = \"2.1.2\";\n cadesplugin.async_spawn = async_spawn;\n cadesplugin.set = set_pluginObject;\n cadesplugin.set_log_level = set_log_level;\n cadesplugin.getLastError = getLastError;\n cadesplugin.is_capilite_enabled = is_capilite_enabled;\n\n if(isNativeMessageSupported())\n {\n cadesplugin.CreateObjectAsync = CreateObjectAsync;\n cadesplugin.ReleasePluginObjects = ReleasePluginObjects;\n }\n\n if(!isNativeMessageSupported())\n {\n cadesplugin.CreateObject = CreateObject;\n }\n\n if(window.cadesplugin_load_timeout)\n {\n setTimeout(check_load_timeout, window.cadesplugin_load_timeout);\n }\n else\n {\n setTimeout(check_load_timeout, 20000);\n }\n\n set_constantValues();\n\n cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR;\n window.cadesplugin = cadesplugin;\n check_plugin_working();\n}());\n","import { ISSUER_TAGS_TRANSLATIONS, SUBJECT_TAGS_TRANSLATIONS } from '../../constants';\nimport { TagTranslation } from '../../helpers/_parseCertInfo';\nimport { exportBase64 } from './exportBase64';\nimport { getAlgorithm } from './getAlgorithm';\nimport { getCadesProp } from './getCadesProp';\nimport { getDecodedExtendedKeyUsage, ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';\nimport { getExtendedKeyUsage } from './getExtendedKeyUsage';\nimport { getInfo } from './getInfo';\nimport { hasExtendedKeyUsage } from './hasExtendedKeyUsage';\nimport { isValid } from './isValid';\n\nexport type CadesCertificate = any;\n\nexport class Certificate {\n constructor(\n public _cadesCertificate: CadesCertificate,\n public name: string,\n public issuerName: string,\n public subjectName: string,\n public thumbprint: string,\n public validFrom: string,\n public validTo: string,\n ) {}\n\n public getOwnerInfo(): Promise {\n return getInfo.call(this, SUBJECT_TAGS_TRANSLATIONS, 'SubjectName');\n }\n\n public getIssuerInfo(): Promise {\n return getInfo.call(this, ISSUER_TAGS_TRANSLATIONS, 'IssuerName');\n }\n\n public getExtendedKeyUsage(): Promise {\n return getExtendedKeyUsage.call(this);\n }\n\n public getDecodedExtendedKeyUsage(): Promise {\n return getDecodedExtendedKeyUsage.call(this);\n }\n\n public getAlgorithm(): Promise {\n return getAlgorithm.call(this);\n }\n\n public getCadesProp(propName): Promise {\n return getCadesProp.call(this, propName);\n }\n\n public isValid(): Promise {\n return isValid.call(this);\n }\n\n public exportBase64(): Promise {\n return exportBase64.call(this);\n }\n\n public hasExtendedKeyUsage(oids): Promise {\n return hasExtendedKeyUsage.call(this, oids);\n }\n}\n","export const CADESCOM_ATTRIBUTE_OTHER = -1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CADESCOM_AllowNoOutstandingRequest = 1;\nexport const CADESCOM_AllowNone = 0;\nexport const CADESCOM_AllowUntrustedCertificate = 2;\nexport const CADESCOM_AllowUntrustedRoot = 4;\nexport const CADESCOM_BASE64_TO_BINARY = 0x01;\nexport const CADESCOM_CADES_BES = 1;\nexport const CADESCOM_CADES_DEFAULT = 0;\nexport const CADESCOM_CADES_T = 5;\nexport const CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\nexport const CADESCOM_CONTAINER_STORE = 100;\nexport const CADESCOM_CURRENT_USER_STORE = 2;\nexport const CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\nexport const CADESCOM_DISPLAY_DATA_CONTENT = 1;\nexport const CADESCOM_DISPLAY_DATA_NONE = 0;\nexport const CADESCOM_ENCODE_ANY = -1;\nexport const CADESCOM_ENCODE_BASE64 = 0;\nexport const CADESCOM_ENCODE_BINARY = 1;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\nexport const CADESCOM_HASH_ALGORITHM_MD2 = 1;\nexport const CADESCOM_HASH_ALGORITHM_MD4 = 2;\nexport const CADESCOM_HASH_ALGORITHM_MD5 = 3;\nexport const CADESCOM_HASH_ALGORITHM_SHA1 = 0;\nexport const CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\nexport const CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\nexport const CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\nexport const CADESCOM_LOCAL_MACHINE_STORE = 1;\nexport const CADESCOM_PKCS7_TYPE = 65535;\nexport const CADESCOM_STRING_TO_UCS2LE = 0x00;\nexport const CADESCOM_SkipInstallToStore = 268435456;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\nexport const CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\nexport const CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\nexport const CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\nexport const CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\nexport const CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\nexport const CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\nexport const CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\nexport const CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\nexport const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\nexport const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\nexport const CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\nexport const CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\nexport const CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\nexport const CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\nexport const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\nexport const CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\nexport const CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\nexport const CAPICOM_CURRENT_USER_STORE = 2;\nexport const CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\nexport const CAPICOM_EKU_CLIENT_AUTH = 2;\nexport const CAPICOM_EKU_OTHER = 0;\nexport const CAPICOM_EKU_SMARTCARD_LOGON = 5;\nexport const CAPICOM_LOCAL_MACHINE_STORE = 1;\nexport const CAPICOM_MEMORY_STORE = 0;\nexport const CAPICOM_MY_STORE = 'My';\nexport const CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\nexport const CAPICOM_OID_OTHER = 0;\nexport const CAPICOM_PROPID_ACCESS_STATE = 14;\nexport const CAPICOM_PROPID_ARCHIVED = 19;\nexport const CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;\nexport const CAPICOM_PROPID_AUTO_ENROLL = 21;\nexport const CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;\nexport const CAPICOM_PROPID_CTL_USAGE = 9;\nexport const CAPICOM_PROPID_DATE_STAMP = 27;\nexport const CAPICOM_PROPID_DESCRIPTION = 13;\nexport const CAPICOM_PROPID_EFS = 17;\nexport const CAPICOM_PROPID_ENHKEY_USAGE = 9;\nexport const CAPICOM_PROPID_ENROLLMENT = 26;\nexport const CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;\nexport const CAPICOM_PROPID_FIRST_RESERVED = 66;\nexport const CAPICOM_PROPID_FIRST_USER = 0x00008000;\nexport const CAPICOM_PROPID_FORTEZZA_DATA = 18;\nexport const CAPICOM_PROPID_FRIENDLY_NAME = 11;\nexport const CAPICOM_PROPID_HASH_PROP = 3;\nexport const CAPICOM_PROPID_IE30_RESERVED = 7;\nexport const CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;\nexport const CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;\nexport const CAPICOM_PROPID_KEY_CONTEXT = 5;\nexport const CAPICOM_PROPID_KEY_IDENTIFIER = 20;\nexport const CAPICOM_PROPID_KEY_PROV_HANDLE = 1;\nexport const CAPICOM_PROPID_KEY_PROV_INFO = 2;\nexport const CAPICOM_PROPID_KEY_SPEC = 6;\nexport const CAPICOM_PROPID_LAST_RESERVED = 0x00007fff;\nexport const CAPICOM_PROPID_LAST_USER = 0x0000ffff;\nexport const CAPICOM_PROPID_MD5_HASH = 4;\nexport const CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;\nexport const CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;\nexport const CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;\nexport const CAPICOM_PROPID_PVK_FILE = 12;\nexport const CAPICOM_PROPID_RENEWAL = 64;\nexport const CAPICOM_PROPID_SHA1_HASH = 3;\nexport const CAPICOM_PROPID_SIGNATURE_HASH = 15;\nexport const CAPICOM_PROPID_SMART_CARD_DATA = 16;\nexport const CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;\nexport const CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;\nexport const CAPICOM_PROPID_UNKNOWN = 0;\nexport const CAPICOM_SMART_CARD_USER_STORE = 4;\nexport const CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;\nexport const CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\nexport const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\nexport const CAPICOM_STORE_OPEN_READ_ONLY = 0;\nexport const CAPICOM_STORE_OPEN_READ_WRITE = 1;\nexport const CHECK_NONE = 0;\nexport const CHECK_OFFLINE_REVOCATION_STATUS = 16;\nexport const CHECK_ONLINE_REVOCATION_STATUS = 8;\nexport const CHECK_SIGNATURE_VALIDITY = 4;\nexport const CHECK_TIME_VALIDITY = 2;\nexport const CHECK_TRUSTED_ROOT = 1;\nexport const LOG_LEVEL_DEBUG = 4;\nexport const LOG_LEVEL_ERROR = 1;\nexport const LOG_LEVEL_INFO = 2;\nexport const TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;\nexport const TRUST_CTL_IS_NOT_TIME_VALID = 131072;\nexport const TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;\nexport const TRUST_IS_CYCLIC = 128;\nexport const TRUST_IS_NOT_SIGNATURE_VALID = 8;\nexport const TRUST_IS_NOT_TIME_NESTED = 2;\nexport const TRUST_IS_NOT_TIME_VALID = 1;\nexport const TRUST_IS_NOT_VALID_FOR_USAGE = 16;\nexport const TRUST_IS_PARTIAL_CHAIN = 65536;\nexport const TRUST_IS_REVOKED = 4;\nexport const TRUST_IS_UNTRUSTED_ROOT = 32;\nexport const TRUST_REVOCATION_STATUS_UNKNOWN = 64;\nexport const XmlDsigGost3410Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\nexport const XmlDsigGost3410UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411';\nexport const XmlDsigGost3411Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\nexport const XmlDsigGost3411UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr3411';\n","import { TagsTranslations } from './tags-translations';\n\nexport const ISSUER_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN'], translation: 'Удостоверяющий центр' },\n { possibleNames: ['C'], translation: 'Страна' },\n { possibleNames: ['S'], translation: 'Регион' },\n { possibleNames: ['STREET'], translation: 'Адрес' },\n { possibleNames: ['O'], translation: 'Компания' },\n { possibleNames: ['OU'], translation: 'Тип' },\n { possibleNames: ['T'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'INN', 'ИНН организации'], translation: 'ИНН' },\n { possibleNames: ['E'], translation: 'Email' },\n { possibleNames: ['L'], translation: 'Город' },\n];\n","export const OIDS_DICTIONARY = {\n '1.2.643.2.2.34.6': 'Пользователь Центра Регистрации',\n '1.2.643.2.39.1.1': 'Использование в программных продуктах системы \"1С:Предприятие 8\"',\n '1.2.643.3.131.1.1': 'ИНН',\n '1.2.643.3.141.1.1': 'РНС ФСС',\n '1.2.643.3.141.1.2': 'КП ФСС',\n '1.2.643.3.2.100.65.13.11': 'Использование в системе АИС \"Госзакупки\" Сахалинской области.',\n '1.2.643.3.8.100.1': 'Сертификат типа \"ekey-ГОСТ\"',\n '1.2.643.3.8.100.1.1': 'Общее использование в системах ИОК без права заверения финансовых документов',\n '1.2.643.3.8.100.1.10':\n 'Для участия в электронных торгах и подписания государственного контракта в информационных системах Тендерного комитета города Москвы уполномоченными лицами участников размещения государственного заказа города Москвы',\n '1.2.643.3.8.100.1.11':\n 'Подписание электронных документов в автоматизированной информационной системе размещения государственного и муниципального заказа Саратовской области',\n '1.2.643.3.8.100.1.12': 'Использование в системе государственного заказа Иркутской области',\n '1.2.643.3.8.100.1.13':\n 'Использование в электронной торговой площадке агентства государственного заказа Красноярского края',\n '1.2.643.3.8.100.1.14': 'Использование в электронной торговой площадке \"Тендер\"',\n '1.2.643.3.8.100.1.2': 'Передача отчетности по ТКС',\n '1.2.643.3.8.100.1.3': 'Оформление взаимных обязательств, соглашений, договоров, актов и т.п.',\n '1.2.643.3.8.100.1.4': 'Внутрикорпоративный документооборот',\n '1.2.643.3.8.100.1.5': 'Использование в системах электронной торговли',\n '1.2.643.3.8.100.1.6': 'Использование в торгово-закупочной системе \"ЭЛЕКТРА\"',\n '1.2.643.3.8.100.1.7': 'Использование в системе Портал государственных закупок Ставропольского края.',\n '1.2.643.3.8.100.1.8': 'Использование в Единой системе электронной торговли B2B-Center и B2G.',\n '1.2.643.3.8.100.1.9':\n 'Для участия в электронных торгах и подписания государственного контракта в электронной площадке ОАО «ЕЭТП» уполномоченными лицами участников размещения государственного или муниципального заказа',\n '1.2.643.5.1.24.2.1.3':\n 'Формирование документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.1.3.1':\n 'Формирование кадастровым инженером документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\n '1.2.643.5.1.24.2.2.2': 'Формирование документов как результата оказания услуги со стороны органов регистрации прав',\n '1.2.643.5.1.24.2.2.3':\n 'Формирование документов для получения государственных услуг в сфере государственной регистрации прав на недвижимое имущество и сделок с ним со стороны заявителя',\n '1.2.643.6.2.1.7.1':\n 'Использование единоличным исполнительным органом юридического лица или уполномоченными представителями юридического лица в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских и иных прав и обязанностей в сфере негосударственного пенсионного обеспечения, негосударственного пенсионного страхования, в сфере деятельности паевых инвестиционных фондов, акционерных инвестиционных фондов, профессиональных участников рынка ценных бумаг, а также связанной с обслуживанием указанной деятельности услуг кредитных и иных организаций',\n '1.2.643.6.2.1.7.2':\n 'Использование физическим лицом в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских прав и обязанностей в отношении инвестиционных паев паевых инвестиционных фондов, в том числе отношения, связанные с учетом и/или фиксацией прав на инвестиционные паи паевых инвестиционных фондов',\n '1.2.643.6.3':\n 'Использование в электронных торговых системах и в программном обеспечении, связанным с обменом электронных сообщений',\n '1.2.643.6.3.1.1': 'Использование на электронных площадок отобранных для проведения аукционах в электронной форме',\n '1.2.643.6.3.1.2.1': 'Тип участника - Юридическое лицо',\n '1.2.643.6.3.1.2.2': 'Тип участника - Физическое лицо',\n '1.2.643.6.3.1.2.3': 'Тип участника - Индивидуальный предприниматель',\n '1.2.643.6.3.1.3.1': 'Участник размещения заказа',\n '1.2.643.6.3.1.4.1': 'Администратор организации',\n '1.2.643.6.3.1.4.2': 'Уполномоченный специалист',\n '1.2.643.6.3.1.4.3': 'Специалист с правом подписи контракта',\n '1.2.840.113549.1.9.2': 'Неструктурированное имя',\n '1.3.6.1.4.1.24138.1.1.8.1': 'Обеспечение юридической значимости в Системе \"Электронная Торговая Площадка\"',\n '1.3.6.1.4.1.29919.21': 'Использование в системе Портал государственных закупок Ростовской области \"Рефери\".',\n '1.3.6.1.5.5.7.3.2': 'Проверка подлинности клиента',\n '1.3.6.1.5.5.7.3.4': 'Защищенная электронная почта',\n '1.3.643.3.8.100.15': 'Использование в ЭТП \"uTender\"',\n};\n","import { TagsTranslations } from './tags-translations';\n\nexport const SUBJECT_TAGS_TRANSLATIONS: TagsTranslations[] = [\n { possibleNames: ['UnstructuredName'], translation: 'Неструктурированное имя' },\n { possibleNames: ['CN'], translation: 'Владелец' },\n { possibleNames: ['SN'], translation: 'Фамилия' },\n { possibleNames: ['G'], translation: 'Имя Отчество' },\n { possibleNames: ['C'], translation: 'Страна' },\n { possibleNames: ['S'], translation: 'Регион' },\n { possibleNames: ['STREET'], translation: 'Адрес' },\n { possibleNames: ['O'], translation: 'Компания' },\n { possibleNames: ['OU'], translation: 'Отдел/подразделение' },\n { possibleNames: ['T'], translation: 'Должность' },\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\n { possibleNames: ['ИНН', 'INN', 'ИНН организации'], translation: 'ИНН' },\n { possibleNames: ['E'], translation: 'Email' },\n { possibleNames: ['L'], translation: 'Город' },\n];\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Экспортирует сертификат в формате base64\n *\n * @returns сертификат в формате base64\n */\nexport const exportBase64 = _afterPluginsLoaded(function (): string {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function exportBase64(): string {\n let base64: string;\n\n try {\n base64 = __cadesAsyncToken__ + cadesCertificate.Export(0);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при экспорте сертификата');\n }\n\n return base64;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\ninterface AlgorithmInfo {\n algorithm: string;\n oid: string;\n}\n\n/**\n * Возвращает информацию об алгоритме сертификата\n *\n * @returns информацию об алгоритме и его OID'е\n */\nexport const getAlgorithm = _afterPluginsLoaded(function (): AlgorithmInfo {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getAlgorithm(): AlgorithmInfo {\n const algorithmInfo: AlgorithmInfo = {\n algorithm: null,\n oid: null,\n };\n let cadesPublicKey;\n\n try {\n cadesPublicKey = __cadesAsyncToken__ + cadesCertificate.PublicKey();\n cadesPublicKey = __cadesAsyncToken__ + cadesPublicKey.Algorithm;\n algorithmInfo.algorithm = __cadesAsyncToken__ + cadesPublicKey.FriendlyName;\n algorithmInfo.oid = __cadesAsyncToken__ + cadesPublicKey.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении алгоритма');\n }\n\n return algorithmInfo;\n }),\n );\n});\n","import { OIDS_DICTIONARY } from '../../constants';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\nexport interface ExtendedKeysTranslations {\n [key: string]: string | null;\n}\n\n/**\n * Возвращает расшифрованные ОИД'ы сертификата\n *\n * @returns словарь расшифрованных ОИД'ов\n */\nexport const getDecodedExtendedKeyUsage = _afterPluginsLoaded(async function (): Promise {\n const certificateOids = await (this as Certificate).getExtendedKeyUsage();\n\n return certificateOids.reduce(\n (decodedOids, oidCode) => ({\n ...decodedOids,\n [oidCode]: OIDS_DICTIONARY[oidCode] || null,\n }),\n {},\n );\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Возвращает ОИД'ы сертификата\n *\n * @returns список ОИД'ов\n */\nexport const getExtendedKeyUsage = _afterPluginsLoaded(function (): string[] {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function getExtendedKeyUsage(): string[] {\n const OIDS: string[] = [];\n let count: any;\n\n try {\n count = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n count = __cadesAsyncToken__ + count.EKUs;\n count = __cadesAsyncToken__ + count.Count;\n\n if (count > 0) {\n while (count > 0) {\n let cadesExtendedKeyUsage;\n\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.EKUs;\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.Item(count);\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.OID;\n\n OIDS.push(cadesExtendedKeyUsage);\n\n count--;\n }\n }\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || \"Ошибка при получении ОИД'ов\");\n }\n\n return OIDS;\n }),\n );\n});\n","import { TagsTranslations } from '../../constants/tags-translations';\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { _parseCertInfo, TagTranslation } from '../../helpers/_parseCertInfo';\nimport { getCadesProp } from './getCadesProp';\n\n/**\n * Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам\n *\n * @param tags = словарь\n * @param entitiesPath = путь к разбираемой сущности\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const getInfo = _afterPluginsLoaded(async function (\n tags: TagsTranslations[],\n entitiesPath: string,\n): Promise {\n let entities: string;\n\n try {\n entities = await getCadesProp.call(this, entitiesPath);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при извлечении информации из сертификата');\n }\n\n return _parseCertInfo(tags, entities);\n});\n","import { OIDS_DICTIONARY } from '../constants';\nimport { TagsTranslations } from '../constants/tags-translations';\n\nexport interface TagTranslation {\n description: string;\n title: string;\n isTranslated: boolean;\n}\n\n/**\n * Парсит информацию из строки с информацией о сертификате\n *\n * @param tagsTranslations - словарь с расшифровками тэгов\n * @param rawInfo - данные для парсинга\n * @returns расшифрованная информация по отдельным тэгам\n */\nexport const _parseCertInfo = (tagsTranslations: TagsTranslations[], rawInfo: string): TagTranslation[] => {\n const extractedEntities: string[] = rawInfo.match(/([а-яА-Яa-zA-Z0-9\\s.]+)=(?:(\"[^\"]+?\")|(.+?))(?:,|$)/g);\n\n if (extractedEntities) {\n return extractedEntities.map((group) => {\n const segmentsMatch = group.trim().match(/^([а-яА-Яa-zA-Z0-9\\s.]+)=(.+?),?$/);\n let title = segmentsMatch?.[1];\n // Вырезаем лишние кавычки\n const description = segmentsMatch?.[2]?.replace(/^\"(.*)\"/, '$1')?.replace(/\"{2}/g, '\"');\n const oidIdentifierMatch = title?.match(/^OID\\.(.*)/);\n const oidIdentifier = oidIdentifierMatch?.[1];\n let isTranslated = false;\n\n // Если нашли в тайтле ОИД, пытаемся его расшифровать\n if (oidIdentifier) {\n const oidTranslation = OIDS_DICTIONARY[oidIdentifier];\n\n if (oidTranslation) {\n title = oidTranslation;\n isTranslated = true;\n }\n }\n\n const tagTranslation = tagsTranslations.find((tag) => tag.possibleNames.find((name) => name === title))\n ?.translation;\n\n if (tagTranslation) {\n title = tagTranslation;\n isTranslated = true;\n }\n\n return { description, title, isTranslated };\n });\n }\n};\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет наличие ОИД'а (ОИД'ов) у сертификата\n *\n * @param oids - ОИД'ы для проверки\n * @returns флаг наличия ОИД'ов у сертификата\n */\nexport const hasExtendedKeyUsage = _afterPluginsLoaded(async function (oids: string | string[]): Promise {\n const certOids = await (this as Certificate).getExtendedKeyUsage();\n\n let result: boolean;\n\n if (Array.isArray(oids)) {\n result = oids.every((oidToCheck) => certOids.some((certOid) => certOid === oidToCheck));\n } else {\n result = certOids.some((certOid) => certOid === oids);\n }\n\n return result;\n});\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\nimport { Certificate } from './certificate';\n\n/**\n * Проверяет действительность сертификата\n *\n * @returns флаг валидности\n */\nexport const isValid = _afterPluginsLoaded(function (): boolean {\n const cadesCertificate = (this as Certificate)._cadesCertificate;\n\n return eval(\n _generateCadesFn(function isValid() {\n let isValid;\n\n try {\n isValid = __cadesAsyncToken__ + cadesCertificate.IsValid();\n isValid = __cadesAsyncToken__ + isValid.Result;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при проверке сертификата');\n }\n\n return Boolean(isValid);\n }),\n );\n});\n","export const _extractCommonName = (subjectName: string): string | undefined =>\n subjectName.match(/CN=(.+?)(?:,|$)/)?.[1];\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { _isSupportedCadesVersion } from '../helpers/_isSupportedCadesVersion';\nimport { _isSupportedCSPVersion } from '../helpers/_isSupportedCSPVersion';\nimport { getSystemInfo, SystemInfo } from './getSystemInfo';\n\n/**\n * Проверяет корректность настроек ЭП на машине\n *\n * @returns флаг корректности настроек\n */\nexport const isValidSystemSetup = _afterPluginsLoaded(\n async (): Promise => {\n let systemInfo: SystemInfo;\n\n try {\n systemInfo = await getSystemInfo();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Настройки ЭП на данной машине не верны');\n }\n\n if (!_isSupportedCadesVersion(systemInfo.cadesVersion)) {\n throw new Error('Не поддерживаемая версия плагина');\n }\n\n if (!_isSupportedCSPVersion(systemInfo.cspVersion)) {\n throw new Error('Не поддерживаемая версия CSP');\n }\n\n return true;\n },\n);\n","export const _isSupportedCadesVersion = (version: string): boolean => {\n const match = version.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n\n if (!match) {\n return false;\n }\n\n const [, major, minor, patch] = match;\n\n if (Number(major) < 2) {\n return false;\n }\n\n if (Number(major) === 2 && Number(patch) < 12438) {\n return false;\n }\n\n return true;\n};\n","const oldestSupportedCSPVersion = 4.0;\n\nexport const _isSupportedCSPVersion = (version: string): boolean => {\n version = version.match(/\\d+?\\b(?:\\.\\d+)?/)?.[0];\n\n return Number(version) >= oldestSupportedCSPVersion;\n};\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\nimport { _getDateObj } from '../helpers/_getDateObj';\n\n/**\n * Создает подпись base64 строки по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param messageHash - хэш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11\n * @param detachedSignature = true - тип подписи открепленная (true) / присоединенная (false)\n * @returns подпись\n */\nexport const createSignature = _afterPluginsLoaded(\n async (thumbprint: string, messageHash: string, detachedSignature: boolean = true): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createSignature(): string {\n let cadesAttrs;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n const currentTime = _getDateObj(new Date());\n\n try {\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\n }\n\n let cadesAuthAttrs;\n\n try {\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageHash));\n void (\n __cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY)\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n\n try {\n signature =\n __cadesAsyncToken__ +\n cadesSignedData.SignCades(cadesSigner, cadesplugin.CADESCOM_CADES_BES, detachedSignature);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","import { CadesCertificate } from '../api/certificate';\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\n\n/**\n * Возвращает сертификат в формате Cades по отпечатку\n *\n * @param thumbprint - отпечаток сертификата\n * @returns сертификат в формате Cades\n */\nexport const _getCadesCert = _afterPluginsLoaded(\n (thumbprint: string): CadesCertificate => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function _getCadesCert() {\n let cadesStore;\n\n try {\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\n }\n\n if (!cadesStore) {\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesStore.Open(\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\n cadesplugin.CAPICOM_MY_STORE,\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\n )\n );\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\n }\n\n let cadesCertificateList;\n let certificatesCount;\n\n try {\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\n }\n\n if (!certificatesCount) {\n throw new Error('Нет доступных сертификатов');\n }\n\n let cadesCertificate: CadesCertificate;\n\n try {\n cadesCertificateList =\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\n\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\n\n if (!count) {\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\n }\n\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата');\n }\n\n cadesStore.Close();\n\n return cadesCertificate;\n }),\n );\n },\n);\n","/**\n * Возвращает объект даты, совместимый с Cades plugin'ом, зависящий от браузера.\n *\n * В IE необходимо использовать специфичный формат \"VT_DATE\"\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Microsoft_Extensions/Date.getVarDate\n */\nexport const _getDateObj = (dateObj): Date => (dateObj.getVarDate ? dateObj.getVarDate() : dateObj);\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\ntype Algorithm =\n | 'GOST_3411'\n | 'GOST_3411_2012_256'\n | 'GOST_3411_2012_512'\n | 'GOST_3411_HMAC'\n | 'GOST_3411_2012_256_HMAC'\n | 'GOST_3411_2012_512_HMAC';\n\n/**\n * Создает хэш сообщения по ГОСТ Р 34.11\n * https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B8%D0%B1%D0%BE%D0%B3_(%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F)\n *\n * @param unencryptedMessage - сообщение для хеширования\n * @param algorithm - один из алгоритмов хеширования:\n * GOST_3411\n * GOST_3411_2012_256\n * GOST_3411_2012_512 - по умолчанию\n * GOST_3411_HMAC\n * GOST_3411_2012_256_HMAC\n * GOST_3411_2012_512_HMAC\n *\n * @returns хэш\n */\nexport const createHash = _afterPluginsLoaded(\n async (unencryptedMessage: string | ArrayBuffer, algorithm: Algorithm = 'GOST_3411_2012_512'): Promise => {\n const { cadesplugin } = window;\n\n return eval(\n _generateCadesFn(function createHash(): string {\n const cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\n let messageBase64;\n let hash;\n\n try {\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin['CADESCOM_HASH_ALGORITHM_CP_' + algorithm])\n );\n void (__cadesAsyncToken__ + cadesHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\n void (__cadesAsyncToken__ + cadesHashedData.Hash(messageBase64));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации хэширования');\n }\n\n try {\n hash = __cadesAsyncToken__ + cadesHashedData.Value;\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при создании хэша');\n }\n\n return hash;\n }),\n );\n },\n);\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","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(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\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","exports.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"],"sourceRoot":""}