diff --git a/README.md b/README.md
index c10ad1f..cf80f1a 100644
--- a/README.md
+++ b/README.md
@@ -96,6 +96,9 @@ import { getUserCertificates, Certificate } from 'crypto-pro-js';
### Методы объекта cryptoPro
- [getUserCertificates](src/api/getUserCertificates.ts) - возвращает список [сертификатов](#api-certificate), доступных пользователю в системе
+- [getAllUserCertificates](src/api/getAllUserCertificates.ts) - возвращает список [сертификатов](#api-certificate), доступных пользователю в системе, в том числе просроченные и без закрытого ключа
+- [getContainerCertificates](src/api/getContainerCertificates.ts) - возвращает список [сертификатов](#api-certificate), из закрытых ключей и/или сертификаты не установленные всистеме*
+- [getAllContainerCertificates](src/api/getAllContainerCertificates.ts) - возвращает список [сертификатов](#api-certificate), из закрытых ключей и/или сертификаты не установленные всистеме*, в том числе просроченные и без закрытого ключа
- [getCertificate](src/api/getCertificate.ts) - возвращает [сертификат](#api-certificate) по отпечатку
- [createAttachedSignature](src/api/createAttachedSignature.ts) - создает совмещенную (присоединенную) подпись сообщения
- [createDetachedSignature](src/api/createDetachedSignature.ts) - создает отсоединенную (открепленную) подпись сообщения
@@ -106,6 +109,8 @@ import { getUserCertificates, Certificate } from 'crypto-pro-js';
- [getSystemInfo](src/api/getSystemInfo.ts) - возвращает информацию о CSP и плагине
- [isValidSystemSetup](src/api/isValidSystemSetup.ts) - возвращает флаг корректности настроек ЭП на машине
+> *Методы `getContainerCertificates` и `getAllContainerCertificates` позволяют получить сертификаты из закрытых ключей, записанных на обыкновенную флэшку
+
### Методы объекта сертификата
[Сертификат](src/api/certificate/certificate.ts) предоставляет следущее API:
diff --git a/dist/api/getAllContainerCertificates.d.ts b/dist/api/getAllContainerCertificates.d.ts
new file mode 100644
index 0000000..5d40a6e
--- /dev/null
+++ b/dist/api/getAllContainerCertificates.d.ts
@@ -0,0 +1,9 @@
+import { Certificate } from './certificate';
+/**
+ * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей
+ * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа
+ *
+ * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
+ * @returns список сертификатов
+ */
+export declare const getAllContainerCertificates: (resetCache?: boolean) => Promise;
diff --git a/dist/api/getContainerCertificates.d.ts b/dist/api/getContainerCertificates.d.ts
new file mode 100644
index 0000000..1d74a4f
--- /dev/null
+++ b/dist/api/getContainerCertificates.d.ts
@@ -0,0 +1,9 @@
+import { Certificate } from './certificate';
+/**
+ * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей
+ * Возвращает список сертификатов, доступных пользователю в системе
+ *
+ * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
+ * @returns список сертификатов
+ */
+export declare const getContainerCertificates: (resetCache?: boolean) => Promise;
diff --git a/dist/api/index.d.ts b/dist/api/index.d.ts
index eab659b..98ba640 100644
--- a/dist/api/index.d.ts
+++ b/dist/api/index.d.ts
@@ -1,6 +1,8 @@
export * from './getCertificate';
export * from './getUserCertificates';
export * from './getAllUserCertificates';
+export * from './getContainerCertificates';
+export * from './getAllContainerCertificates';
export * from './getSystemInfo';
export * from './isValidSystemSetup';
export * from './createXMLSignature';
diff --git a/dist/crypto-pro-js.js b/dist/crypto-pro-js.js
index a63a3a4..1a240dd 100644
--- a/dist/crypto-pro-js.js
+++ b/dist/crypto-pro-js.js
@@ -3457,6 +3457,86 @@ exports.createXMLSignature = _afterPluginsLoaded_1._afterPluginsLoaded(function
}); });
+/***/ }),
+
+/***/ "./api/getAllContainerCertificates.ts":
+/*!********************************************!*\
+ !*** ./api/getAllContainerCertificates.ts ***!
+ \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+var certificate_1 = __webpack_require__(/*! ./certificate */ "./api/certificate/index.ts");
+var _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+var _extractCommonName_1 = __webpack_require__(/*! ../helpers/_extractCommonName */ "./helpers/_extractCommonName.ts");
+var _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+var _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+var certificatesCache;
+/**
+ * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей
+ * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа
+ *
+ * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
+ * @returns список сертификатов
+ */
+exports.getAllContainerCertificates = _afterPluginsLoaded_1._afterPluginsLoaded(function (resetCache) {
+ if (resetCache === void 0) { resetCache = false; }
+ var cadesplugin = window.cadesplugin;
+ if (!resetCache && certificatesCache) {
+ return certificatesCache;
+ }
+ return eval(_generateCadesFn_1._generateCadesFn(function getAllContainerCertificates() {
+ var cadesStore;
+ try {
+ cadesStore = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.Store');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');
+ }
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ +
+ cadesStore.Open(cadesplugin.CADESCOM_CONTAINER_STORE, cadesplugin.CAPICOM_MY_STORE, cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');
+ }
+ var cadesCertificates;
+ var cadesCertificatesCount;
+ try {
+ cadesCertificates = _generateCadesFn_1.__cadesAsyncToken__ + cadesStore.Certificates;
+ cadesCertificatesCount = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Count;
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');
+ }
+ if (!cadesCertificatesCount) {
+ throw new Error('Нет доступных сертификатов');
+ }
+ var certificateList = [];
+ try {
+ while (cadesCertificatesCount) {
+ var cadesCertificate = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);
+ certificateList.push(new certificate_1.Certificate(cadesCertificate, _extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.SubjectName), _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.IssuerName, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.SubjectName, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.Thumbprint, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ValidFromDate, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ValidToDate));
+ cadesCertificatesCount--;
+ }
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');
+ }
+ cadesStore.Close();
+ certificatesCache = certificateList;
+ return certificatesCache;
+ }));
+});
+
+
/***/ }),
/***/ "./api/getAllUserCertificates.ts":
@@ -3613,6 +3693,98 @@ exports.getCertificate = _afterPluginsLoaded_1._afterPluginsLoaded(function (thu
}); });
+/***/ }),
+
+/***/ "./api/getContainerCertificates.ts":
+/*!*****************************************!*\
+ !*** ./api/getContainerCertificates.ts ***!
+ \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+var certificate_1 = __webpack_require__(/*! ./certificate */ "./api/certificate/index.ts");
+var constants_1 = __webpack_require__(/*! ../constants */ "./constants/index.ts");
+var _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+var _extractCommonName_1 = __webpack_require__(/*! ../helpers/_extractCommonName */ "./helpers/_extractCommonName.ts");
+var _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+var _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+var certificatesCache;
+/**
+ * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей
+ * Возвращает список сертификатов, доступных пользователю в системе
+ *
+ * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
+ * @returns список сертификатов
+ */
+exports.getContainerCertificates = _afterPluginsLoaded_1._afterPluginsLoaded(function (resetCache) {
+ if (resetCache === void 0) { resetCache = false; }
+ var cadesplugin = window.cadesplugin;
+ if (!resetCache && certificatesCache) {
+ return certificatesCache;
+ }
+ return eval(_generateCadesFn_1._generateCadesFn(function getContainerCertificates() {
+ var cadesStore;
+ try {
+ cadesStore = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.Store');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');
+ }
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ +
+ cadesStore.Open(cadesplugin.CADESCOM_CONTAINER_STORE, cadesplugin.CAPICOM_MY_STORE, cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');
+ }
+ var cadesCertificates;
+ var cadesCertificatesCount;
+ try {
+ cadesCertificates = _generateCadesFn_1.__cadesAsyncToken__ + cadesStore.Certificates;
+ if (cadesCertificates) {
+ cadesCertificates =
+ _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);
+ /**
+ * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ
+ * или не действительны на данный момент
+ */
+ cadesCertificates =
+ _generateCadesFn_1.__cadesAsyncToken__ +
+ cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY, constants_1.CAPICOM_PROPID_KEY_PROV_INFO);
+ cadesCertificatesCount = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Count;
+ }
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');
+ }
+ if (!cadesCertificatesCount) {
+ throw new Error('Нет доступных сертификатов');
+ }
+ var certificateList = [];
+ try {
+ while (cadesCertificatesCount) {
+ var cadesCertificate = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);
+ certificateList.push(new certificate_1.Certificate(cadesCertificate, _extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.SubjectName), _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.IssuerName, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.SubjectName, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.Thumbprint, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ValidFromDate, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ValidToDate));
+ cadesCertificatesCount--;
+ }
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');
+ }
+ cadesStore.Close();
+ certificatesCache = certificateList;
+ return certificatesCache;
+ }));
+});
+
+
/***/ }),
/***/ "./api/getCspVersion.ts":
@@ -3847,6 +4019,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
__export(__webpack_require__(/*! ./getCertificate */ "./api/getCertificate.ts"));
__export(__webpack_require__(/*! ./getUserCertificates */ "./api/getUserCertificates.ts"));
__export(__webpack_require__(/*! ./getAllUserCertificates */ "./api/getAllUserCertificates.ts"));
+__export(__webpack_require__(/*! ./getContainerCertificates */ "./api/getContainerCertificates.ts"));
+__export(__webpack_require__(/*! ./getAllContainerCertificates */ "./api/getAllContainerCertificates.ts"));
__export(__webpack_require__(/*! ./getSystemInfo */ "./api/getSystemInfo.ts"));
__export(__webpack_require__(/*! ./isValidSystemSetup */ "./api/isValidSystemSetup.ts"));
__export(__webpack_require__(/*! ./createXMLSignature */ "./api/createXMLSignature.ts"));
diff --git a/dist/crypto-pro-js.js.map b/dist/crypto-pro-js.js.map
index 837fe08..f831b5e 100644
--- a/dist/crypto-pro-js.js.map
+++ b/dist/crypto-pro-js.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack://cryptoPro/webpack/universalModuleDefinition","webpack://cryptoPro/webpack/bootstrap","webpack://cryptoPro/../node_modules/base64-js/index.js","webpack://cryptoPro/../node_modules/buffer/index.js","webpack://cryptoPro/../node_modules/buffer/node_modules/isarray/index.js","webpack://cryptoPro/../node_modules/ieee754/index.js","webpack://cryptoPro/../node_modules/webpack/buildin/global.js","webpack://cryptoPro/./api/addAttachedSignature.ts","webpack://cryptoPro/./api/addDetachedSignature.ts","webpack://cryptoPro/./api/certificate/certificate.ts","webpack://cryptoPro/./api/certificate/exportBase64.ts","webpack://cryptoPro/./api/certificate/getAlgorithm.ts","webpack://cryptoPro/./api/certificate/getCadesProp.ts","webpack://cryptoPro/./api/certificate/getDecodedExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getInfo.ts","webpack://cryptoPro/./api/certificate/hasExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/index.ts","webpack://cryptoPro/./api/certificate/isValid.ts","webpack://cryptoPro/./api/createAttachedSignature.ts","webpack://cryptoPro/./api/createDetachedSignature.ts","webpack://cryptoPro/./api/createHash.ts","webpack://cryptoPro/./api/createXMLSignature.ts","webpack://cryptoPro/./api/getAllUserCertificates.ts","webpack://cryptoPro/./api/getCertificate.ts","webpack://cryptoPro/./api/getCspVersion.ts","webpack://cryptoPro/./api/getPluginVersion.ts","webpack://cryptoPro/./api/getSystemInfo.ts","webpack://cryptoPro/./api/getUserCertificates.ts","webpack://cryptoPro/./api/index.ts","webpack://cryptoPro/./api/isValidSystemSetup.ts","webpack://cryptoPro/./constants/cades-constants.ts","webpack://cryptoPro/./constants/index.ts","webpack://cryptoPro/./constants/issuer-tags-translations.ts","webpack://cryptoPro/./constants/oids-dictionary.ts","webpack://cryptoPro/./constants/subject-tags-translations.ts","webpack://cryptoPro/./crypto-pro-js.ts","webpack://cryptoPro/./helpers/_afterPluginsLoaded.ts","webpack://cryptoPro/./helpers/_extractCommonName.ts","webpack://cryptoPro/./helpers/_extractMeaningfulErrorMessage.ts","webpack://cryptoPro/./helpers/_generateCadesFn.ts","webpack://cryptoPro/./helpers/_getCadesCert.ts","webpack://cryptoPro/./helpers/_getDateObj.ts","webpack://cryptoPro/./helpers/_isSupportedCSPVersion.ts","webpack://cryptoPro/./helpers/_isSupportedCadesVersion.ts","webpack://cryptoPro/./helpers/_parseCertInfo.ts","webpack://cryptoPro/./vendor/cadesplugin_api.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,qDAAW;AAChC,cAAc,mBAAO,CAAC,iDAAS;AAC/B,cAAc,mBAAO,CAAC,qEAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5vDA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;;;;;ACpFA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA,kFAA6E;AAC7E,0HAAqE;AACrE,2JAA2F;AAC3F,iHAAiH;AACjH,wGAAyD;AACzD,kGAAqD;AAErD;;;;;;GAMG;AACU,4BAAoB,GAAG,yCAAmB,CACrD,UAAO,UAAkB,EAAE,aAAmC;;;;;gBACpD,WAAW,GAAK,MAAM,YAAX,CAAY;gBACN,qBAAM,6BAAa,CAAC,UAAU,CAA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CA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB,WAAW,UAAU,YAAY,aAAa;AACrG,+EAA+E,aAAa,mBAAmB,uBAAuB,uBAAuB,cAAc,mBAAmB,YAAY;AAC1M,oEAAoE,iBAAiB,yBAAyB,WAAW;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC","file":"crypto-pro-js.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 = \"./crypto-pro-js.ts\");\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\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 toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","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","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 * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @returns подпись в формате PKCS#7\n */\nexport const addAttachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, signedMessage: string | ArrayBuffer): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addAttachedSignature(): 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 messageBase64;\n\n try {\n messageBase64 = Buffer.from(signedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\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(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\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 { 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 * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @returns подпись в формате PKCS#7\n */\nexport const addDetachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, signedMessage: string | ArrayBuffer, messageHash: string): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\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__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesSignedData.VerifyHash(cadesHashedData, signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE)\n );\n signature =\n __cadesAsyncToken__ +\n cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\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 { 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","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 { _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 { 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 { _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","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 * Проверяет действительность сертификата\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","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 * Создает присоединенную подпись сообщения по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param message - подписываемое сообщение\n * @returns подпись в формате PKCS#7\n */\nexport const createAttachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, unencryptedMessage: string | ArrayBuffer): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createAttachedSignature(): 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 messageBase64;\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 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(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\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 = __cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\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 { 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 * Создает отсоединенную подпись хеша по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @returns подпись в формате PKCS#7\n */\nexport const createDetachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, messageHash: string): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\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__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\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.SignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\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 { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит\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 *\n * @returns хеш\n */\nexport const createHash = _afterPluginsLoaded(\n async (unencryptedMessage: string | ArrayBuffer): 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_GOST_3411_2012_256)\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","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\n\n/**\n * Создает XML подпись для документа в формате XML\n *\n * @param thumbprint - отпечаток сертификата\n * @param unencryptedMessage - подписываемое сообщение в формате XML\n * @returns подпись\n */\nexport const createXMLSignature = _afterPluginsLoaded(\n async (thumbprint: string, unencryptedMessage: string): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createXMLSignature(): string {\n let cadesSigner;\n let cadesSignedXML;\n\n try {\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n cadesSignedXML = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.SignedXML');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n try {\n const signatureMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n const digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n void (__cadesAsyncToken__ + cadesSigner.propset_CheckCertificate(true));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_Content(unencryptedMessage));\n void (\n __cadesAsyncToken__ +\n cadesSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED)\n );\n void (__cadesAsyncToken__ + cadesSignedXML.propset_SignatureMethod(signatureMethod));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_DigestMethod(digestMethod));\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 = __cadesAsyncToken__ + cadesSignedXML.Sign(cadesSigner);\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, Certificate } from './certificate';\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 getAllUserCertificates = _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 getAllUserCertificates(): 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 cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\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","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","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP\n */\nexport const getCspVersion = _afterPluginsLoaded((): string => {\n let cspVersion = null;\n\n return eval(\n _generateCadesFn(function getCspVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n cspVersion = __cadesAsyncToken__ + cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении версии системы');\n }\n\n return cspVersion;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о плагине\n */\nexport const getPluginVersion = _afterPluginsLoaded((): string => {\n let cadesVersion = null;\n\n return eval(\n _generateCadesFn(function getPluginVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n\n if (!cadesVersion) {\n cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n cadesVersion = __cadesAsyncToken__ + cadesVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о плагине');\n }\n\n return cadesVersion;\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","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 './getCertificate';\nexport * from './getUserCertificates';\nexport * from './getAllUserCertificates';\nexport * from './getSystemInfo';\nexport * from './isValidSystemSetup';\nexport * from './createXMLSignature';\nexport * from './createDetachedSignature';\nexport * from './addDetachedSignature';\nexport * from './createAttachedSignature';\nexport * from './addAttachedSignature';\nexport * from './createHash';\nexport * from './certificate';\nexport * from './getCspVersion';\nexport * from './getPluginVersion';\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 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","export * from './cades-constants';\nexport * from './issuer-tags-translations';\nexport * from './oids-dictionary';\nexport * from './subject-tags-translations';\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","export * from './api';\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 _extractCommonName = (subjectName: string): string | undefined =>\n subjectName.match(/CN=\"?(.+?)\"?(?:,|$)/)?.[1]?.replace(/\"{2}/g, '\"');\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[0-9a-zA-Z]{1,8})\\)?)|(?:\\.?$))/);\n\n return searchResult ? searchResult[1] + (searchResult[2] ? ' (Код ошибки: ' + searchResult[2] + ')' : '') : 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","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","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","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","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",";(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 isSafari = 0;\n var isYandex = 0;\n var canPromise = !!window.Promise;\n var cadesplugin_loaded_event_recieved = false;\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|yabrowser|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|Edg|YaBrowser)\\/(\\d+)/);\n if (tem != null)\n 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)\n 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_MEMORY_STORE = 0;\n cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;\n cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;\n cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4;\n cadesplugin.CADESCOM_MEMORY_STORE = 0;\n cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;\n cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;\n cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4;\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.CADESCOM_XADES_DEFAULT = 0x00000010;\n cadesplugin.CADESCOM_XADES_BES = 0x00000020;\n cadesplugin.CADESCOM_XADES_T = 0x00000050;\n cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0;\n cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000;\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.XmlDsigGost3411Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256\";\n cadesplugin.XmlDsigGost3410Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256\";\n cadesplugin.XmlDsigGost3411Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512\";\n cadesplugin.XmlDsigGost3410Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512\";\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_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100;\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 cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000;\n cadesplugin.CADESCOM_UseContainerStore = 0x40000000;\n\n cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01;\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02;\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04;\n cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07;\n\n cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00;\n cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01;\n cadesplugin.ENABLE_CARRIER_CREATE = 0x02;\n cadesplugin.ENABLE_ANY_OPERATION = 0x03;\n\n cadesplugin.CADESCOM_PRODUCT_CSP = 0;\n cadesplugin.CADESCOM_PRODUCT_OCSP = 1;\n cadesplugin.CADESCOM_PRODUCT_TSP = 2;\n\n cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001;\n cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002;\n cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004;\n cadesplugin.MEDIA_TYPE_SCARD = 0x00000008;\n\n cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0;\n cadesplugin.AT_KEYEXCHANGE = 1;\n cadesplugin.AT_SIGNATURE = 2;\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 === 'Edg') {\n return true;\n }\n if (browserSpecs.name === 'YaBrowser') {\n isYandex = 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 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 function firefox_or_safari_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 (cadesplugin_loaded_event_recieved)\n return;\n if(isFireFox || isSafari)\n {\n // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js\n var url = event.data.substring(event.data.indexOf(\"url:\") + 4);\n if (!url.match(\"^moz-extension://[a-zA-Z0-9-]+/nmcades_plugin_api.js$\")\n && !url.match(\"^safari-extension://[a-zA-Z0-9-]+/[a-zA-Z0-9]+/nmcades_plugin_api.js$\"))\n {\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"Bad url \\\"\" + url + \"\\\" for load CryptoPro Extension for CAdES Browser plug-in\");\n plugin_loaded_error();\n return;\n }\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_safari_nmcades_onload;\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\n }else {\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\n }\n cadesplugin_loaded_event_recieved = true;\n }, false);\n }\n\n //Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari\n function load_extension()\n {\n if(isFireFox || isSafari){\n // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера.\n nmcades_api_onload();\n } else {\n // в асинхронном варианте для Yandex и Opera подключаем расширение из Opera store.\n if (isOpera || isYandex) {\n var 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 } else {\n // для Chrome, Chromium, Chromium Edge расширение из Chrome store\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 }\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(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.3.1\";\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"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack://cryptoPro/webpack/universalModuleDefinition","webpack://cryptoPro/webpack/bootstrap","webpack://cryptoPro/../node_modules/base64-js/index.js","webpack://cryptoPro/../node_modules/buffer/index.js","webpack://cryptoPro/../node_modules/buffer/node_modules/isarray/index.js","webpack://cryptoPro/../node_modules/ieee754/index.js","webpack://cryptoPro/../node_modules/webpack/buildin/global.js","webpack://cryptoPro/./api/addAttachedSignature.ts","webpack://cryptoPro/./api/addDetachedSignature.ts","webpack://cryptoPro/./api/certificate/certificate.ts","webpack://cryptoPro/./api/certificate/exportBase64.ts","webpack://cryptoPro/./api/certificate/getAlgorithm.ts","webpack://cryptoPro/./api/certificate/getCadesProp.ts","webpack://cryptoPro/./api/certificate/getDecodedExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getInfo.ts","webpack://cryptoPro/./api/certificate/hasExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/index.ts","webpack://cryptoPro/./api/certificate/isValid.ts","webpack://cryptoPro/./api/createAttachedSignature.ts","webpack://cryptoPro/./api/createDetachedSignature.ts","webpack://cryptoPro/./api/createHash.ts","webpack://cryptoPro/./api/createXMLSignature.ts","webpack://cryptoPro/./api/getAllContainerCertificates.ts","webpack://cryptoPro/./api/getAllUserCertificates.ts","webpack://cryptoPro/./api/getCertificate.ts","webpack://cryptoPro/./api/getContainerCertificates.ts","webpack://cryptoPro/./api/getCspVersion.ts","webpack://cryptoPro/./api/getPluginVersion.ts","webpack://cryptoPro/./api/getSystemInfo.ts","webpack://cryptoPro/./api/getUserCertificates.ts","webpack://cryptoPro/./api/index.ts","webpack://cryptoPro/./api/isValidSystemSetup.ts","webpack://cryptoPro/./constants/cades-constants.ts","webpack://cryptoPro/./constants/index.ts","webpack://cryptoPro/./constants/issuer-tags-translations.ts","webpack://cryptoPro/./constants/oids-dictionary.ts","webpack://cryptoPro/./constants/subject-tags-translations.ts","webpack://cryptoPro/./crypto-pro-js.ts","webpack://cryptoPro/./helpers/_afterPluginsLoaded.ts","webpack://cryptoPro/./helpers/_extractCommonName.ts","webpack://cryptoPro/./helpers/_extractMeaningfulErrorMessage.ts","webpack://cryptoPro/./helpers/_generateCadesFn.ts","webpack://cryptoPro/./helpers/_getCadesCert.ts","webpack://cryptoPro/./helpers/_getDateObj.ts","webpack://cryptoPro/./helpers/_isSupportedCSPVersion.ts","webpack://cryptoPro/./helpers/_isSupportedCadesVersion.ts","webpack://cryptoPro/./helpers/_parseCertInfo.ts","webpack://cryptoPro/./vendor/cadesplugin_api.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,qDAAW;AAChC,cAAc,mBAAO,CAAC,iDAAS;AAC/B,cAAc,mBAAO,CAAC,qEAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5vDA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;;;;;ACpFA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA,kFAA6E;AAC7E,0HAAqE;AACrE,2JAA2F;AAC3F,iHAAiH;AACjH,wGAAyD;AACzD,kGAAqD;AAErD;;;;;;GAMG;AACU,4BAAoB,GAAG,yCAAmB,CACrD,UAAO,UAAkB,EAAE,aAAmC;;;;;gBACpD,WAAW,GAAK,MAAM,YAAX,CAAY;gBACN,qBAAM,6BAAa,CAAC,UAAU,CAA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C;YAEhB,IAAI,cAAc,EAAE;gBAClB,KAAK,GAAG,cAAc,CAAC;gBACvB,YAAY,GAAG,IAAI,CAAC;aACrB;YAED,OAAO,EAAE,WAAW,eAAE,KAAK,SAAE,YAAY,gBAAE,CAAC;QAC9C,CAAC,CAAC,CAAC;KACJ;AACH,CAAC,CAAC;;;;;;;;;;;;AClDF,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB,WAAW,UAAU,YAAY,aAAa;AACrG,+EAA+E,aAAa,mBAAmB,uBAAuB,uBAAuB,cAAc,mBAAmB,YAAY;AAC1M,oEAAoE,iBAAiB,yBAAyB,WAAW;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC","file":"crypto-pro-js.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 = \"./crypto-pro-js.ts\");\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\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 toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","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","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\nimport { _getDateObj } from '../helpers/_getDateObj';\r\n\r\n/**\r\n * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param signedMessage - подписанное сообщение\r\n * @returns подпись в формате PKCS#7\r\n */\r\nexport const addAttachedSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, signedMessage: string | ArrayBuffer): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function addAttachedSignature(): string {\r\n let cadesAttrs;\r\n let cadesSignedData;\r\n let cadesSigner;\r\n\r\n try {\r\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\r\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n const currentTime = _getDateObj(new Date());\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\r\n }\r\n\r\n let messageBase64;\r\n\r\n try {\r\n messageBase64 = Buffer.from(signedMessage).toString('base64');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error('Ошибка при преобразовании сообщения в Base64');\r\n }\r\n\r\n let cadesAuthAttrs;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\r\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\r\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\r\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE));\r\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\nimport { _getDateObj } from '../helpers/_getDateObj';\r\n\r\n/**\r\n * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param signedMessage - подписанное сообщение\r\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\r\n * @returns подпись в формате PKCS#7\r\n */\r\nexport const addDetachedSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, signedMessage: string | ArrayBuffer, messageHash: string): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function addDetachedSignature(): string {\r\n let cadesAttrs;\r\n let cadesHashedData;\r\n let cadesSignedData;\r\n let cadesSigner;\r\n\r\n try {\r\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\r\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\r\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n const currentTime = _getDateObj(new Date());\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\r\n }\r\n\r\n let cadesAuthAttrs;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\r\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\r\n );\r\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesSignedData.VerifyHash(cadesHashedData, signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE)\r\n );\r\n signature =\r\n __cadesAsyncToken__ +\r\n cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { ISSUER_TAGS_TRANSLATIONS, SUBJECT_TAGS_TRANSLATIONS } from '../../constants';\r\nimport { TagTranslation } from '../../helpers/_parseCertInfo';\r\nimport { exportBase64 } from './exportBase64';\r\nimport { getAlgorithm } from './getAlgorithm';\r\nimport { getCadesProp } from './getCadesProp';\r\nimport { getDecodedExtendedKeyUsage, ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';\r\nimport { getExtendedKeyUsage } from './getExtendedKeyUsage';\r\nimport { getInfo } from './getInfo';\r\nimport { hasExtendedKeyUsage } from './hasExtendedKeyUsage';\r\nimport { isValid } from './isValid';\r\n\r\nexport type CadesCertificate = any;\r\n\r\nexport class Certificate {\r\n constructor(\r\n public _cadesCertificate: CadesCertificate,\r\n public name: string,\r\n public issuerName: string,\r\n public subjectName: string,\r\n public thumbprint: string,\r\n public validFrom: string,\r\n public validTo: string,\r\n ) {}\r\n\r\n public getOwnerInfo(): Promise {\r\n return getInfo.call(this, SUBJECT_TAGS_TRANSLATIONS, 'SubjectName');\r\n }\r\n\r\n public getIssuerInfo(): Promise {\r\n return getInfo.call(this, ISSUER_TAGS_TRANSLATIONS, 'IssuerName');\r\n }\r\n\r\n public getExtendedKeyUsage(): Promise {\r\n return getExtendedKeyUsage.call(this);\r\n }\r\n\r\n public getDecodedExtendedKeyUsage(): Promise {\r\n return getDecodedExtendedKeyUsage.call(this);\r\n }\r\n\r\n public getAlgorithm(): Promise {\r\n return getAlgorithm.call(this);\r\n }\r\n\r\n public getCadesProp(propName): Promise {\r\n return getCadesProp.call(this, propName);\r\n }\r\n\r\n public isValid(): Promise {\r\n return isValid.call(this);\r\n }\r\n\r\n public exportBase64(): Promise {\r\n return exportBase64.call(this);\r\n }\r\n\r\n public hasExtendedKeyUsage(oids): Promise {\r\n return hasExtendedKeyUsage.call(this, oids);\r\n }\r\n}\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Экспортирует сертификат в формате base64\r\n *\r\n * @returns сертификат в формате base64\r\n */\r\nexport const exportBase64 = _afterPluginsLoaded(function (): string {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function exportBase64(): string {\r\n let base64: string;\r\n\r\n try {\r\n base64 = __cadesAsyncToken__ + cadesCertificate.Export(0);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при экспорте сертификата');\r\n }\r\n\r\n return base64;\r\n }),\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\ninterface AlgorithmInfo {\r\n algorithm: string;\r\n oid: string;\r\n}\r\n\r\n/**\r\n * Возвращает информацию об алгоритме сертификата\r\n *\r\n * @returns информацию об алгоритме и его OID'е\r\n */\r\nexport const getAlgorithm = _afterPluginsLoaded(function (): AlgorithmInfo {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function getAlgorithm(): AlgorithmInfo {\r\n const algorithmInfo: AlgorithmInfo = {\r\n algorithm: null,\r\n oid: null,\r\n };\r\n let cadesPublicKey;\r\n\r\n try {\r\n cadesPublicKey = __cadesAsyncToken__ + cadesCertificate.PublicKey();\r\n cadesPublicKey = __cadesAsyncToken__ + cadesPublicKey.Algorithm;\r\n algorithmInfo.algorithm = __cadesAsyncToken__ + cadesPublicKey.FriendlyName;\r\n algorithmInfo.oid = __cadesAsyncToken__ + cadesPublicKey.Value;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении алгоритма');\r\n }\r\n\r\n return algorithmInfo;\r\n }),\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Возвращает указанное внутренее свойство у сертификата в формате Cades\r\n *\r\n * @param propName = наименование свойства\r\n * @returns значение запрошенного свойства\r\n */\r\nexport const getCadesProp = _afterPluginsLoaded(function (propName: string): any {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function getCadesProp() {\r\n let propertyValue;\r\n\r\n try {\r\n propertyValue = __cadesAsyncToken__ + cadesCertificate[propName];\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при обращении к свойству сертификата');\r\n }\r\n\r\n return propertyValue;\r\n }),\r\n );\r\n});\r\n","import { OIDS_DICTIONARY } from '../../constants';\r\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { Certificate } from './certificate';\r\n\r\nexport interface ExtendedKeysTranslations {\r\n [key: string]: string | null;\r\n}\r\n\r\n/**\r\n * Возвращает расшифрованные ОИД'ы сертификата\r\n *\r\n * @returns словарь расшифрованных ОИД'ов\r\n */\r\nexport const getDecodedExtendedKeyUsage = _afterPluginsLoaded(async function (): Promise {\r\n const certificateOids = await (this as Certificate).getExtendedKeyUsage();\r\n\r\n return certificateOids.reduce(\r\n (decodedOids, oidCode) => ({\r\n ...decodedOids,\r\n [oidCode]: OIDS_DICTIONARY[oidCode] || null,\r\n }),\r\n {},\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Возвращает ОИД'ы сертификата\r\n *\r\n * @returns список ОИД'ов\r\n */\r\nexport const getExtendedKeyUsage = _afterPluginsLoaded(function (): string[] {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function getExtendedKeyUsage(): string[] {\r\n const OIDS: string[] = [];\r\n let count: any;\r\n\r\n try {\r\n count = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\r\n count = __cadesAsyncToken__ + count.EKUs;\r\n count = __cadesAsyncToken__ + count.Count;\r\n\r\n if (count > 0) {\r\n while (count > 0) {\r\n let cadesExtendedKeyUsage;\r\n\r\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\r\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.EKUs;\r\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.Item(count);\r\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.OID;\r\n\r\n OIDS.push(cadesExtendedKeyUsage);\r\n\r\n count--;\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || \"Ошибка при получении ОИД'ов\");\r\n }\r\n\r\n return OIDS;\r\n }),\r\n );\r\n});\r\n","import { TagsTranslations } from '../../constants/tags-translations';\r\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { _parseCertInfo, TagTranslation } from '../../helpers/_parseCertInfo';\r\nimport { getCadesProp } from './getCadesProp';\r\n\r\n/**\r\n * Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам\r\n *\r\n * @param tags = словарь\r\n * @param entitiesPath = путь к разбираемой сущности\r\n * @returns расшифрованная информация по отдельным тэгам\r\n */\r\nexport const getInfo = _afterPluginsLoaded(async function (\r\n tags: TagsTranslations[],\r\n entitiesPath: string,\r\n): Promise {\r\n let entities: string;\r\n\r\n try {\r\n entities = await getCadesProp.call(this, entitiesPath);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при извлечении информации из сертификата');\r\n }\r\n\r\n return _parseCertInfo(tags, entities);\r\n});\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Проверяет наличие ОИД'а (ОИД'ов) у сертификата\r\n *\r\n * @param oids - ОИД'ы для проверки\r\n * @returns флаг наличия ОИД'ов у сертификата\r\n */\r\nexport const hasExtendedKeyUsage = _afterPluginsLoaded(async function (oids: string | string[]): Promise {\r\n const certOids = await (this as Certificate).getExtendedKeyUsage();\r\n\r\n let result: boolean;\r\n\r\n if (Array.isArray(oids)) {\r\n result = oids.every((oidToCheck) => certOids.some((certOid) => certOid === oidToCheck));\r\n } else {\r\n result = certOids.some((certOid) => certOid === oids);\r\n }\r\n\r\n return result;\r\n});\r\n","export * from './certificate';\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Проверяет действительность сертификата\r\n *\r\n * @returns флаг валидности\r\n */\r\nexport const isValid = _afterPluginsLoaded(function (): boolean {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function isValid() {\r\n let isValid;\r\n\r\n try {\r\n isValid = __cadesAsyncToken__ + cadesCertificate.IsValid();\r\n isValid = __cadesAsyncToken__ + isValid.Result;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при проверке сертификата');\r\n }\r\n\r\n return Boolean(isValid);\r\n }),\r\n );\r\n});\r\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\nimport { _getDateObj } from '../helpers/_getDateObj';\r\n\r\n/**\r\n * Создает присоединенную подпись сообщения по отпечатку сертификата\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param message - подписываемое сообщение\r\n * @returns подпись в формате PKCS#7\r\n */\r\nexport const createAttachedSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, unencryptedMessage: string | ArrayBuffer): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function createAttachedSignature(): string {\r\n let cadesAttrs;\r\n let cadesSignedData;\r\n let cadesSigner;\r\n\r\n try {\r\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\r\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n const currentTime = _getDateObj(new Date());\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\r\n }\r\n\r\n let messageBase64;\r\n\r\n try {\r\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error('Ошибка при преобразовании сообщения в Base64');\r\n }\r\n\r\n let cadesAuthAttrs;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\r\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\r\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\r\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n signature = __cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\nimport { _getDateObj } from '../helpers/_getDateObj';\r\n\r\n/**\r\n * Создает отсоединенную подпись хеша по отпечатку сертификата\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\r\n * @returns подпись в формате PKCS#7\r\n */\r\nexport const createDetachedSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, messageHash: string): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function createDetachedSignature(): string {\r\n let cadesAttrs;\r\n let cadesHashedData;\r\n let cadesSignedData;\r\n let cadesSigner;\r\n\r\n try {\r\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\r\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\r\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n const currentTime = _getDateObj(new Date());\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\r\n }\r\n\r\n let cadesAuthAttrs;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\r\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\r\n );\r\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n signature =\r\n __cadesAsyncToken__ +\r\n cadesSignedData.SignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\n/**\r\n * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит\r\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)\r\n *\r\n * @param unencryptedMessage - сообщение для хеширования\r\n *\r\n * @returns хеш\r\n */\r\nexport const createHash = _afterPluginsLoaded(\r\n async (unencryptedMessage: string | ArrayBuffer): Promise => {\r\n const { cadesplugin } = window;\r\n\r\n return eval(\r\n _generateCadesFn(function createHash(): string {\r\n const cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\r\n let messageBase64;\r\n let hash;\r\n\r\n try {\r\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error('Ошибка при преобразовании сообщения в Base64');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\r\n );\r\n void (__cadesAsyncToken__ + cadesHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\r\n void (__cadesAsyncToken__ + cadesHashedData.Hash(messageBase64));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации хэширования');\r\n }\r\n\r\n try {\r\n hash = __cadesAsyncToken__ + cadesHashedData.Value;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при создании хэша');\r\n }\r\n\r\n return hash;\r\n }),\r\n );\r\n },\r\n);\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\n\r\n/**\r\n * Создает XML подпись для документа в формате XML\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param unencryptedMessage - подписываемое сообщение в формате XML\r\n * @returns подпись\r\n */\r\nexport const createXMLSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, unencryptedMessage: string): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function createXMLSignature(): string {\r\n let cadesSigner;\r\n let cadesSignedXML;\r\n\r\n try {\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n cadesSignedXML = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.SignedXML');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n try {\r\n const signatureMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\r\n const digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\r\n\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_CheckCertificate(true));\r\n void (__cadesAsyncToken__ + cadesSignedXML.propset_Content(unencryptedMessage));\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED)\r\n );\r\n void (__cadesAsyncToken__ + cadesSignedXML.propset_SignatureMethod(signatureMethod));\r\n void (__cadesAsyncToken__ + cadesSignedXML.propset_DigestMethod(digestMethod));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n signature = __cadesAsyncToken__ + cadesSignedXML.Sign(cadesSigner);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { CadesCertificate, Certificate } from './certificate';\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 * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllContainerCertificates = _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 getAllContainerCertificates(): 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.CADESCOM_CONTAINER_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 cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\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","import { CadesCertificate, Certificate } from './certificate';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractCommonName } from '../helpers/_extractCommonName';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\nlet certificatesCache: Certificate[];\r\n\r\n/**\r\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\r\n *\r\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\r\n * @returns список сертификатов\r\n */\r\nexport const getAllUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\r\n const { cadesplugin } = window;\r\n\r\n if (!resetCache && certificatesCache) {\r\n return certificatesCache;\r\n }\r\n\r\n return eval(\r\n _generateCadesFn(function getAllUserCertificates(): Certificate[] {\r\n let cadesStore;\r\n\r\n try {\r\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesStore.Open(\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\r\n cadesplugin.CAPICOM_MY_STORE,\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\r\n )\r\n );\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\r\n }\r\n\r\n let cadesCertificates;\r\n let cadesCertificatesCount;\r\n\r\n try {\r\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\r\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\r\n }\r\n\r\n if (!cadesCertificatesCount) {\r\n throw new Error('Нет доступных сертификатов');\r\n }\r\n\r\n const certificateList: Certificate[] = [];\r\n\r\n try {\r\n while (cadesCertificatesCount) {\r\n const cadesCertificate: CadesCertificate =\r\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\r\n\r\n certificateList.push(\r\n new Certificate(\r\n cadesCertificate,\r\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\r\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\r\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\r\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\r\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\r\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\r\n ),\r\n );\r\n\r\n cadesCertificatesCount--;\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\r\n }\r\n\r\n cadesStore.Close();\r\n\r\n certificatesCache = certificateList;\r\n\r\n return certificatesCache;\r\n }),\r\n );\r\n});\r\n","import { Certificate } from './certificate';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { getUserCertificates } from './getUserCertificates';\r\n\r\n/**\r\n * Возвращает сертификат по отпечатку\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @returns сертификат\r\n */\r\nexport const getCertificate = _afterPluginsLoaded(\r\n async (thumbprint: string): Promise => {\r\n if (!thumbprint) {\r\n throw new Error('Отпечаток не указан');\r\n }\r\n\r\n const availableCertificates: Certificate[] = await getUserCertificates();\r\n const foundCertificate: Certificate = availableCertificates.find((cert) => cert.thumbprint === thumbprint);\r\n\r\n if (!foundCertificate) {\r\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\r\n }\r\n\r\n return foundCertificate;\r\n },\r\n);\r\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 * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getContainerCertificates = _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 getContainerCertificates(): 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.CADESCOM_CONTAINER_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","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\n/**\r\n * Предоставляет информацию о системе\r\n *\r\n * @returns информацию о CSP\r\n */\r\nexport const getCspVersion = _afterPluginsLoaded((): string => {\r\n let cspVersion = null;\r\n\r\n return eval(\r\n _generateCadesFn(function getCspVersion(): string {\r\n let cadesAbout;\r\n\r\n try {\r\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\r\n\r\n cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\r\n\r\n cspVersion = __cadesAsyncToken__ + cspVersion.toString();\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении версии системы');\r\n }\r\n\r\n return cspVersion;\r\n }),\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\n\r\n/**\r\n * Предоставляет информацию о системе\r\n *\r\n * @returns информацию о плагине\r\n */\r\nexport const getPluginVersion = _afterPluginsLoaded((): string => {\r\n let cadesVersion = null;\r\n\r\n return eval(\r\n _generateCadesFn(function getPluginVersion(): string {\r\n let cadesAbout;\r\n\r\n try {\r\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\r\n\r\n cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\r\n\r\n if (!cadesVersion) {\r\n cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\r\n }\r\n\r\n cadesVersion = __cadesAsyncToken__ + cadesVersion.toString();\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о плагине');\r\n }\r\n\r\n return cadesVersion;\r\n }),\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\nexport interface SystemInfo {\r\n cadesVersion: string;\r\n cspVersion: string;\r\n}\r\n\r\n/**\r\n * Предоставляет информацию о системе\r\n *\r\n * @returns информацию о CSP и плагине\r\n */\r\nexport const getSystemInfo = _afterPluginsLoaded(\r\n (): SystemInfo => {\r\n const sysInfo = {\r\n cadesVersion: null,\r\n cspVersion: null,\r\n };\r\n\r\n return eval(\r\n _generateCadesFn(function getSystemInfo(): SystemInfo {\r\n let cadesAbout;\r\n\r\n try {\r\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\r\n\r\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\r\n sysInfo.cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\r\n\r\n if (!sysInfo.cadesVersion) {\r\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\r\n }\r\n\r\n sysInfo.cadesVersion = __cadesAsyncToken__ + sysInfo.cadesVersion.toString();\r\n sysInfo.cspVersion = __cadesAsyncToken__ + sysInfo.cspVersion.toString();\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о системе');\r\n }\r\n\r\n return sysInfo;\r\n }),\r\n );\r\n },\r\n);\r\n","import { CadesCertificate, Certificate } from './certificate';\r\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractCommonName } from '../helpers/_extractCommonName';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\nlet certificatesCache: Certificate[];\r\n\r\n/**\r\n * Возвращает список сертификатов, доступных пользователю в системе\r\n *\r\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\r\n * @returns список сертификатов\r\n */\r\nexport const getUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\r\n const { cadesplugin } = window;\r\n\r\n if (!resetCache && certificatesCache) {\r\n return certificatesCache;\r\n }\r\n\r\n return eval(\r\n _generateCadesFn(function getUserCertificates(): Certificate[] {\r\n let cadesStore;\r\n\r\n try {\r\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesStore.Open(\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\r\n cadesplugin.CAPICOM_MY_STORE,\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\r\n )\r\n );\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\r\n }\r\n\r\n let cadesCertificates;\r\n let cadesCertificatesCount;\r\n\r\n try {\r\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\r\n\r\n if (cadesCertificates) {\r\n cadesCertificates =\r\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\r\n\r\n /**\r\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\r\n * или не действительны на данный момент\r\n */\r\n cadesCertificates =\r\n __cadesAsyncToken__ +\r\n cadesCertificates.Find(\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\r\n CAPICOM_PROPID_KEY_PROV_INFO,\r\n );\r\n\r\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\r\n }\r\n\r\n if (!cadesCertificatesCount) {\r\n throw new Error('Нет доступных сертификатов');\r\n }\r\n\r\n const certificateList: Certificate[] = [];\r\n\r\n try {\r\n while (cadesCertificatesCount) {\r\n const cadesCertificate: CadesCertificate =\r\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\r\n\r\n certificateList.push(\r\n new Certificate(\r\n cadesCertificate,\r\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\r\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\r\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\r\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\r\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\r\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\r\n ),\r\n );\r\n\r\n cadesCertificatesCount--;\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\r\n }\r\n\r\n cadesStore.Close();\r\n\r\n certificatesCache = certificateList;\r\n\r\n return certificatesCache;\r\n }),\r\n );\r\n});\r\n","export * from './getCertificate';\nexport * from './getUserCertificates';\nexport * from './getAllUserCertificates';\nexport * from './getContainerCertificates';\nexport * from './getAllContainerCertificates';\nexport * from './getSystemInfo';\nexport * from './isValidSystemSetup';\nexport * from './createXMLSignature';\nexport * from './createDetachedSignature';\nexport * from './addDetachedSignature';\nexport * from './createAttachedSignature';\nexport * from './addAttachedSignature';\nexport * from './createHash';\nexport * from './certificate';\nexport * from './getCspVersion';\nexport * from './getPluginVersion';\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { _isSupportedCadesVersion } from '../helpers/_isSupportedCadesVersion';\r\nimport { _isSupportedCSPVersion } from '../helpers/_isSupportedCSPVersion';\r\nimport { getSystemInfo, SystemInfo } from './getSystemInfo';\r\n\r\n/**\r\n * Проверяет корректность настроек ЭП на машине\r\n *\r\n * @returns флаг корректности настроек\r\n */\r\nexport const isValidSystemSetup = _afterPluginsLoaded(\r\n async (): Promise => {\r\n let systemInfo: SystemInfo;\r\n\r\n try {\r\n systemInfo = await getSystemInfo();\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Настройки ЭП на данной машине не верны');\r\n }\r\n\r\n if (!_isSupportedCadesVersion(systemInfo.cadesVersion)) {\r\n throw new Error('Не поддерживаемая версия плагина');\r\n }\r\n\r\n if (!_isSupportedCSPVersion(systemInfo.cspVersion)) {\r\n throw new Error('Не поддерживаемая версия CSP');\r\n }\r\n\r\n return true;\r\n },\r\n);\r\n","export const CADESCOM_ATTRIBUTE_OTHER = -1;\r\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\nexport const CADESCOM_AllowNoOutstandingRequest = 1;\r\nexport const CADESCOM_AllowNone = 0;\r\nexport const CADESCOM_AllowUntrustedCertificate = 2;\r\nexport const CADESCOM_AllowUntrustedRoot = 4;\r\nexport const CADESCOM_BASE64_TO_BINARY = 0x01;\r\nexport const CADESCOM_CADES_BES = 1;\r\nexport const CADESCOM_CADES_DEFAULT = 0;\r\nexport const CADESCOM_CADES_T = 5;\r\nexport const CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\r\nexport const CADESCOM_CONTAINER_STORE = 100;\r\nexport const CADESCOM_CURRENT_USER_STORE = 2;\r\nexport const CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\r\nexport const CADESCOM_DISPLAY_DATA_CONTENT = 1;\r\nexport const CADESCOM_DISPLAY_DATA_NONE = 0;\r\nexport const CADESCOM_ENCODE_ANY = -1;\r\nexport const CADESCOM_ENCODE_BASE64 = 0;\r\nexport const CADESCOM_ENCODE_BINARY = 1;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\r\nexport const CADESCOM_HASH_ALGORITHM_MD2 = 1;\r\nexport const CADESCOM_HASH_ALGORITHM_MD4 = 2;\r\nexport const CADESCOM_HASH_ALGORITHM_MD5 = 3;\r\nexport const CADESCOM_HASH_ALGORITHM_SHA1 = 0;\r\nexport const CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\r\nexport const CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\r\nexport const CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\r\nexport const CADESCOM_LOCAL_MACHINE_STORE = 1;\r\nexport const CADESCOM_PKCS7_TYPE = 65535;\r\nexport const CADESCOM_STRING_TO_UCS2LE = 0x00;\r\nexport const CADESCOM_SkipInstallToStore = 268435456;\r\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\r\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\r\nexport const CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\r\nexport const CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;\r\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\nexport const CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\r\nexport const CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\r\nexport const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\r\nexport const CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\r\nexport const CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\r\nexport const CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\r\nexport const CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\r\nexport const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\r\nexport const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\nexport const CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\r\nexport const CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\r\nexport const CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\r\nexport const CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\r\nexport const CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\r\nexport const CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\r\nexport const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\r\nexport const CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\r\nexport const CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\r\nexport const CAPICOM_CURRENT_USER_STORE = 2;\r\nexport const CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\r\nexport const CAPICOM_EKU_CLIENT_AUTH = 2;\r\nexport const CAPICOM_EKU_OTHER = 0;\r\nexport const CAPICOM_EKU_SMARTCARD_LOGON = 5;\r\nexport const CAPICOM_LOCAL_MACHINE_STORE = 1;\r\nexport const CAPICOM_MEMORY_STORE = 0;\r\nexport const CAPICOM_MY_STORE = 'My';\r\nexport const CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\r\nexport const CAPICOM_OID_OTHER = 0;\r\nexport const CAPICOM_PROPID_ACCESS_STATE = 14;\r\nexport const CAPICOM_PROPID_ARCHIVED = 19;\r\nexport const CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;\r\nexport const CAPICOM_PROPID_AUTO_ENROLL = 21;\r\nexport const CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;\r\nexport const CAPICOM_PROPID_CTL_USAGE = 9;\r\nexport const CAPICOM_PROPID_DATE_STAMP = 27;\r\nexport const CAPICOM_PROPID_DESCRIPTION = 13;\r\nexport const CAPICOM_PROPID_EFS = 17;\r\nexport const CAPICOM_PROPID_ENHKEY_USAGE = 9;\r\nexport const CAPICOM_PROPID_ENROLLMENT = 26;\r\nexport const CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;\r\nexport const CAPICOM_PROPID_FIRST_RESERVED = 66;\r\nexport const CAPICOM_PROPID_FIRST_USER = 0x00008000;\r\nexport const CAPICOM_PROPID_FORTEZZA_DATA = 18;\r\nexport const CAPICOM_PROPID_FRIENDLY_NAME = 11;\r\nexport const CAPICOM_PROPID_HASH_PROP = 3;\r\nexport const CAPICOM_PROPID_IE30_RESERVED = 7;\r\nexport const CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;\r\nexport const CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;\r\nexport const CAPICOM_PROPID_KEY_CONTEXT = 5;\r\nexport const CAPICOM_PROPID_KEY_IDENTIFIER = 20;\r\nexport const CAPICOM_PROPID_KEY_PROV_HANDLE = 1;\r\nexport const CAPICOM_PROPID_KEY_PROV_INFO = 2;\r\nexport const CAPICOM_PROPID_KEY_SPEC = 6;\r\nexport const CAPICOM_PROPID_LAST_RESERVED = 0x00007fff;\r\nexport const CAPICOM_PROPID_LAST_USER = 0x0000ffff;\r\nexport const CAPICOM_PROPID_MD5_HASH = 4;\r\nexport const CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;\r\nexport const CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;\r\nexport const CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;\r\nexport const CAPICOM_PROPID_PVK_FILE = 12;\r\nexport const CAPICOM_PROPID_RENEWAL = 64;\r\nexport const CAPICOM_PROPID_SHA1_HASH = 3;\r\nexport const CAPICOM_PROPID_SIGNATURE_HASH = 15;\r\nexport const CAPICOM_PROPID_SMART_CARD_DATA = 16;\r\nexport const CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;\r\nexport const CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;\r\nexport const CAPICOM_PROPID_UNKNOWN = 0;\r\nexport const CAPICOM_SMART_CARD_USER_STORE = 4;\r\nexport const CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;\r\nexport const CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\r\nexport const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\r\nexport const CAPICOM_STORE_OPEN_READ_ONLY = 0;\r\nexport const CAPICOM_STORE_OPEN_READ_WRITE = 1;\r\nexport const CHECK_NONE = 0;\r\nexport const CHECK_OFFLINE_REVOCATION_STATUS = 16;\r\nexport const CHECK_ONLINE_REVOCATION_STATUS = 8;\r\nexport const CHECK_SIGNATURE_VALIDITY = 4;\r\nexport const CHECK_TIME_VALIDITY = 2;\r\nexport const CHECK_TRUSTED_ROOT = 1;\r\nexport const LOG_LEVEL_DEBUG = 4;\r\nexport const LOG_LEVEL_ERROR = 1;\r\nexport const LOG_LEVEL_INFO = 2;\r\nexport const TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;\r\nexport const TRUST_CTL_IS_NOT_TIME_VALID = 131072;\r\nexport const TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;\r\nexport const TRUST_IS_CYCLIC = 128;\r\nexport const TRUST_IS_NOT_SIGNATURE_VALID = 8;\r\nexport const TRUST_IS_NOT_TIME_NESTED = 2;\r\nexport const TRUST_IS_NOT_TIME_VALID = 1;\r\nexport const TRUST_IS_NOT_VALID_FOR_USAGE = 16;\r\nexport const TRUST_IS_PARTIAL_CHAIN = 65536;\r\nexport const TRUST_IS_REVOKED = 4;\r\nexport const TRUST_IS_UNTRUSTED_ROOT = 32;\r\nexport const TRUST_REVOCATION_STATUS_UNKNOWN = 64;\r\nexport const XmlDsigGost3410Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\r\nexport const XmlDsigGost3410UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411';\r\nexport const XmlDsigGost3411Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\r\nexport const XmlDsigGost3411UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr3411';\r\n","export * from './cades-constants';\r\nexport * from './issuer-tags-translations';\r\nexport * from './oids-dictionary';\r\nexport * from './subject-tags-translations';\r\n","import { TagsTranslations } from './tags-translations';\r\n\r\nexport const ISSUER_TAGS_TRANSLATIONS: TagsTranslations[] = [\r\n { possibleNames: ['UnstructuredName'], translation: 'Неструктурированное имя' },\r\n { possibleNames: ['CN'], translation: 'Удостоверяющий центр' },\r\n { possibleNames: ['C'], translation: 'Страна' },\r\n { possibleNames: ['S'], translation: 'Регион' },\r\n { possibleNames: ['STREET'], translation: 'Адрес' },\r\n { possibleNames: ['O'], translation: 'Компания' },\r\n { possibleNames: ['OU'], translation: 'Тип' },\r\n { possibleNames: ['T'], translation: 'Должность' },\r\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\r\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\r\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\r\n { possibleNames: ['ИНН', 'INN', 'ИНН организации'], translation: 'ИНН' },\r\n { possibleNames: ['E'], translation: 'Email' },\r\n { possibleNames: ['L'], translation: 'Город' },\r\n];\r\n","export const OIDS_DICTIONARY = {\r\n '1.2.643.2.2.34.6': 'Пользователь Центра Регистрации',\r\n '1.2.643.2.39.1.1': 'Использование в программных продуктах системы \"1С:Предприятие 8\"',\r\n '1.2.643.3.131.1.1': 'ИНН',\r\n '1.2.643.3.141.1.1': 'РНС ФСС',\r\n '1.2.643.3.141.1.2': 'КП ФСС',\r\n '1.2.643.3.2.100.65.13.11': 'Использование в системе АИС \"Госзакупки\" Сахалинской области.',\r\n '1.2.643.3.8.100.1': 'Сертификат типа \"ekey-ГОСТ\"',\r\n '1.2.643.3.8.100.1.1': 'Общее использование в системах ИОК без права заверения финансовых документов',\r\n '1.2.643.3.8.100.1.10':\r\n 'Для участия в электронных торгах и подписания государственного контракта в информационных системах Тендерного комитета города Москвы уполномоченными лицами участников размещения государственного заказа города Москвы',\r\n '1.2.643.3.8.100.1.11':\r\n 'Подписание электронных документов в автоматизированной информационной системе размещения государственного и муниципального заказа Саратовской области',\r\n '1.2.643.3.8.100.1.12': 'Использование в системе государственного заказа Иркутской области',\r\n '1.2.643.3.8.100.1.13':\r\n 'Использование в электронной торговой площадке агентства государственного заказа Красноярского края',\r\n '1.2.643.3.8.100.1.14': 'Использование в электронной торговой площадке \"Тендер\"',\r\n '1.2.643.3.8.100.1.2': 'Передача отчетности по ТКС',\r\n '1.2.643.3.8.100.1.3': 'Оформление взаимных обязательств, соглашений, договоров, актов и т.п.',\r\n '1.2.643.3.8.100.1.4': 'Внутрикорпоративный документооборот',\r\n '1.2.643.3.8.100.1.5': 'Использование в системах электронной торговли',\r\n '1.2.643.3.8.100.1.6': 'Использование в торгово-закупочной системе \"ЭЛЕКТРА\"',\r\n '1.2.643.3.8.100.1.7': 'Использование в системе Портал государственных закупок Ставропольского края.',\r\n '1.2.643.3.8.100.1.8': 'Использование в Единой системе электронной торговли B2B-Center и B2G.',\r\n '1.2.643.3.8.100.1.9':\r\n 'Для участия в электронных торгах и подписания государственного контракта в электронной площадке ОАО «ЕЭТП» уполномоченными лицами участников размещения государственного или муниципального заказа',\r\n '1.2.643.5.1.24.2.1.3':\r\n 'Формирование документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\r\n '1.2.643.5.1.24.2.1.3.1':\r\n 'Формирование кадастровым инженером документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\r\n '1.2.643.5.1.24.2.2.2': 'Формирование документов как результата оказания услуги со стороны органов регистрации прав',\r\n '1.2.643.5.1.24.2.2.3':\r\n 'Формирование документов для получения государственных услуг в сфере государственной регистрации прав на недвижимое имущество и сделок с ним со стороны заявителя',\r\n '1.2.643.6.2.1.7.1':\r\n 'Использование единоличным исполнительным органом юридического лица или уполномоченными представителями юридического лица в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских и иных прав и обязанностей в сфере негосударственного пенсионного обеспечения, негосударственного пенсионного страхования, в сфере деятельности паевых инвестиционных фондов, акционерных инвестиционных фондов, профессиональных участников рынка ценных бумаг, а также связанной с обслуживанием указанной деятельности услуг кредитных и иных организаций',\r\n '1.2.643.6.2.1.7.2':\r\n 'Использование физическим лицом в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских прав и обязанностей в отношении инвестиционных паев паевых инвестиционных фондов, в том числе отношения, связанные с учетом и/или фиксацией прав на инвестиционные паи паевых инвестиционных фондов',\r\n '1.2.643.6.3':\r\n 'Использование в электронных торговых системах и в программном обеспечении, связанным с обменом электронных сообщений',\r\n '1.2.643.6.3.1.1': 'Использование на электронных площадок отобранных для проведения аукционах в электронной форме',\r\n '1.2.643.6.3.1.2.1': 'Тип участника - Юридическое лицо',\r\n '1.2.643.6.3.1.2.2': 'Тип участника - Физическое лицо',\r\n '1.2.643.6.3.1.2.3': 'Тип участника - Индивидуальный предприниматель',\r\n '1.2.643.6.3.1.3.1': 'Участник размещения заказа',\r\n '1.2.643.6.3.1.4.1': 'Администратор организации',\r\n '1.2.643.6.3.1.4.2': 'Уполномоченный специалист',\r\n '1.2.643.6.3.1.4.3': 'Специалист с правом подписи контракта',\r\n '1.2.840.113549.1.9.2': 'Неструктурированное имя',\r\n '1.3.6.1.4.1.24138.1.1.8.1': 'Обеспечение юридической значимости в Системе \"Электронная Торговая Площадка\"',\r\n '1.3.6.1.4.1.29919.21': 'Использование в системе Портал государственных закупок Ростовской области \"Рефери\".',\r\n '1.3.6.1.5.5.7.3.2': 'Проверка подлинности клиента',\r\n '1.3.6.1.5.5.7.3.4': 'Защищенная электронная почта',\r\n '1.3.643.3.8.100.15': 'Использование в ЭТП \"uTender\"',\r\n};\r\n","import { TagsTranslations } from './tags-translations';\r\n\r\nexport const SUBJECT_TAGS_TRANSLATIONS: TagsTranslations[] = [\r\n { possibleNames: ['UnstructuredName'], translation: 'Неструктурированное имя' },\r\n { possibleNames: ['CN'], translation: 'Владелец' },\r\n { possibleNames: ['SN'], translation: 'Фамилия' },\r\n { possibleNames: ['G'], translation: 'Имя Отчество' },\r\n { possibleNames: ['C'], translation: 'Страна' },\r\n { possibleNames: ['S'], translation: 'Регион' },\r\n { possibleNames: ['STREET'], translation: 'Адрес' },\r\n { possibleNames: ['O'], translation: 'Компания' },\r\n { possibleNames: ['OU'], translation: 'Отдел/подразделение' },\r\n { possibleNames: ['T'], translation: 'Должность' },\r\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\r\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\r\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\r\n { possibleNames: ['ИНН', 'INN', 'ИНН организации'], translation: 'ИНН' },\r\n { possibleNames: ['E'], translation: 'Email' },\r\n { possibleNames: ['L'], translation: 'Город' },\r\n];\r\n","export * from './api';\r\n","import { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\r\n\r\ntype Unpromisify = T extends Promise ? R : T;\r\n\r\nlet isSetLogLevel = false;\r\nlet isPluginLoaded = false;\r\n\r\nexport const _afterPluginsLoaded = any>(\r\n fn: T,\r\n): ((...args: Parameters) => Promise>>) => {\r\n const canPromise = Boolean(window.Promise);\r\n\r\n return async function (...args: Parameters): Promise>> {\r\n if (!isPluginLoaded) {\r\n try {\r\n require('../vendor/cadesplugin_api');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(\r\n _extractMeaningfulErrorMessage(error) || 'Ошибка при подключении модуля для работы с Cades plugin',\r\n );\r\n }\r\n\r\n isPluginLoaded = true;\r\n }\r\n\r\n const { cadesplugin } = window;\r\n\r\n if (!canPromise) {\r\n throw new Error('Необходим полифилл для Promise');\r\n }\r\n\r\n if (!cadesplugin) {\r\n throw new Error('Не подключен модуль для работы с Cades plugin');\r\n }\r\n\r\n if (!isSetLogLevel) {\r\n cadesplugin.set_log_level(cadesplugin.LOG_LEVEL_ERROR);\r\n\r\n isSetLogLevel = true;\r\n }\r\n\r\n try {\r\n await cadesplugin;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(\r\n _extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации модуля для работы с Cades plugin',\r\n );\r\n }\r\n\r\n return await fn.apply(this, args);\r\n };\r\n};\r\n","export const _extractCommonName = (subjectName: string): string | undefined =>\r\n subjectName.match(/CN=\"?(.+?)\"?(?:,|$)/)?.[1]?.replace(/\"{2}/g, '\"');\r\n","export const _extractMeaningfulErrorMessage = (error: Error): string | null => {\r\n let errorContainer = window.cadesplugin?.getLastError && window.cadesplugin.getLastError(error);\r\n\r\n if (!errorContainer?.message) {\r\n if (!error.message) {\r\n return null;\r\n }\r\n\r\n errorContainer = error;\r\n }\r\n\r\n const containsRussianLetters = /[а-яА-Я]/.test(errorContainer.message);\r\n\r\n if (!containsRussianLetters) {\r\n return null;\r\n }\r\n\r\n const searchResult = errorContainer.message.match(/^(.*?)(?:(?:\\.?\\s?\\(?(0x[0-9a-zA-Z]{1,8})\\)?)|(?:\\.?$))/);\r\n\r\n return searchResult ? searchResult[1] + (searchResult[2] ? ' (Код ошибки: ' + searchResult[2] + ')' : '') : null;\r\n};\r\n","// синтетические переменные, которые подменяются в рантайме\r\nexport const __cadesAsyncToken__ = {};\r\nexport const __createCadesPluginObject__ = (...args): any => ({});\r\n\r\nfunction getGeneratorConstructor(): GeneratorFunction {\r\n return new Function('', 'return Object.getPrototypeOf(function*(){}).constructor')();\r\n}\r\n\r\nexport const _generateCadesFn = (callback: Function): string => {\r\n const { cadesplugin } = window;\r\n const cadesGeneratorsAPI = Boolean(cadesplugin.CreateObjectAsync);\r\n const callbackName = callback.name || 'dynamicFn';\r\n const callbackLiteral = String(callback);\r\n const callbackArguments = callbackLiteral.match(/^function[\\s\\w]*?\\((.*?)\\)/)?.[1] || '';\r\n const callbackBody = callbackLiteral.replace(/^.*?{([\\s\\S]*?)}$/, '$1');\r\n let crossEnvCallbackLiteral = String(\r\n new (cadesGeneratorsAPI ? getGeneratorConstructor() : Function)(callbackArguments, callbackBody),\r\n );\r\n\r\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\r\n /\\w+?\\.__createCadesPluginObject__(\\([\\s\\S]*?\\))/gm,\r\n `cadesplugin.CreateObject${cadesGeneratorsAPI ? 'Async' : ''}$1`,\r\n );\r\n\r\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\r\n /\\w+?\\.__cadesAsyncToken__\\s*?\\+\\s*?\\b/gm,\r\n cadesGeneratorsAPI ? 'yield ' : '',\r\n );\r\n\r\n if (!cadesGeneratorsAPI) {\r\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/propset_(.*?)\\((.*?)\\)/gm, '$1 = $2');\r\n }\r\n\r\n return [\r\n cadesGeneratorsAPI ? `cadesplugin.async_spawn(${crossEnvCallbackLiteral});` : `(${crossEnvCallbackLiteral})();`,\r\n `//# sourceURL=crypto-pro_${callbackName}.js`,\r\n ].join('');\r\n};\r\n","import { CadesCertificate } from '../api/certificate';\r\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\r\n\r\n/**\r\n * Возвращает сертификат в формате Cades по отпечатку\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @returns сертификат в формате Cades\r\n */\r\nexport const _getCadesCert = _afterPluginsLoaded(\r\n (thumbprint: string): CadesCertificate => {\r\n const { cadesplugin } = window;\r\n\r\n return eval(\r\n _generateCadesFn(function _getCadesCert() {\r\n let cadesStore;\r\n\r\n try {\r\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\r\n }\r\n\r\n if (!cadesStore) {\r\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesStore.Open(\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\r\n cadesplugin.CAPICOM_MY_STORE,\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\r\n )\r\n );\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\r\n }\r\n\r\n let cadesCertificateList;\r\n let certificatesCount;\r\n\r\n try {\r\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\r\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\r\n }\r\n\r\n if (!certificatesCount) {\r\n throw new Error('Нет доступных сертификатов');\r\n }\r\n\r\n let cadesCertificate: CadesCertificate;\r\n\r\n try {\r\n cadesCertificateList =\r\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\r\n\r\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\r\n\r\n if (!count) {\r\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\r\n }\r\n\r\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата');\r\n }\r\n\r\n cadesStore.Close();\r\n\r\n return cadesCertificate;\r\n }),\r\n );\r\n },\r\n);\r\n","/**\r\n * Возвращает объект даты, совместимый с Cades plugin'ом, зависящий от браузера.\r\n *\r\n * В IE необходимо использовать специфичный формат \"VT_DATE\"\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Microsoft_Extensions/Date.getVarDate\r\n */\r\nexport const _getDateObj = (dateObj): Date => (dateObj.getVarDate ? dateObj.getVarDate() : dateObj);\r\n","const oldestSupportedCSPVersion = 4.0;\r\n\r\nexport const _isSupportedCSPVersion = (version: string): boolean => {\r\n version = version.match(/\\d+?\\b(?:\\.\\d+)?/)?.[0];\r\n\r\n return Number(version) >= oldestSupportedCSPVersion;\r\n};\r\n","export const _isSupportedCadesVersion = (version: string): boolean => {\r\n const match = version.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\r\n\r\n if (!match) {\r\n return false;\r\n }\r\n\r\n const [, major, minor, patch] = match;\r\n\r\n if (Number(major) < 2) {\r\n return false;\r\n }\r\n\r\n if (Number(major) === 2 && Number(patch) < 12438) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n","import { OIDS_DICTIONARY } from '../constants';\r\nimport { TagsTranslations } from '../constants/tags-translations';\r\n\r\nexport interface TagTranslation {\r\n description: string;\r\n title: string;\r\n isTranslated: boolean;\r\n}\r\n\r\n/**\r\n * Парсит информацию из строки с информацией о сертификате\r\n *\r\n * @param tagsTranslations - словарь с расшифровками тэгов\r\n * @param rawInfo - данные для парсинга\r\n * @returns расшифрованная информация по отдельным тэгам\r\n */\r\nexport const _parseCertInfo = (tagsTranslations: TagsTranslations[], rawInfo: string): TagTranslation[] => {\r\n const extractedEntities: string[] = rawInfo.match(/([а-яА-Яa-zA-Z0-9\\s.]+)=(?:(\"[^\"]+?\")|(.+?))(?:,|$)/g);\r\n\r\n if (extractedEntities) {\r\n return extractedEntities.map((group) => {\r\n const segmentsMatch = group.trim().match(/^([а-яА-Яa-zA-Z0-9\\s.]+)=(.+?),?$/);\r\n let title = segmentsMatch?.[1];\r\n // Вырезаем лишние кавычки\r\n const description = segmentsMatch?.[2]?.replace(/^\"(.*)\"/, '$1')?.replace(/\"{2}/g, '\"');\r\n const oidIdentifierMatch = title?.match(/^OID\\.(.*)/);\r\n const oidIdentifier = oidIdentifierMatch?.[1];\r\n let isTranslated = false;\r\n\r\n // Если нашли в тайтле ОИД, пытаемся его расшифровать\r\n if (oidIdentifier) {\r\n const oidTranslation = OIDS_DICTIONARY[oidIdentifier];\r\n\r\n if (oidTranslation) {\r\n title = oidTranslation;\r\n isTranslated = true;\r\n }\r\n }\r\n\r\n const tagTranslation = tagsTranslations.find((tag) => tag.possibleNames.find((name) => name === title))\r\n ?.translation;\r\n\r\n if (tagTranslation) {\r\n title = tagTranslation;\r\n isTranslated = true;\r\n }\r\n\r\n return { description, title, isTranslated };\r\n });\r\n }\r\n};\r\n",";(function () {\r\n //already loaded\r\n if(window.cadesplugin)\r\n return;\r\n\r\n var pluginObject;\r\n var plugin_resolved = 0;\r\n var plugin_reject;\r\n var plugin_resolve;\r\n var isOpera = 0;\r\n var isFireFox = 0;\r\n var isSafari = 0;\r\n var isYandex = 0;\r\n var canPromise = !!window.Promise;\r\n var cadesplugin_loaded_event_recieved = false;\r\n var cadesplugin;\r\n\r\n if(canPromise)\r\n {\r\n cadesplugin = new Promise(function(resolve, reject)\r\n {\r\n plugin_resolve = resolve;\r\n plugin_reject = reject;\r\n });\r\n } else\r\n {\r\n cadesplugin = {};\r\n }\r\n\r\n function check_browser() {\r\n var ua= navigator.userAgent, tem, M= ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n if(/trident/i.test(M[1])){\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name:'IE', version:(tem[1] || '')};\r\n }\r\n if(M[1] === 'Chrome'){\r\n tem = ua.match(/\\b(OPR|Edg|YaBrowser)\\/(\\d+)/);\r\n if (tem != null)\r\n return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\r\n }\r\n M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null)\r\n M.splice(1, 1, tem[1]);\r\n return {name:M[0],version:M[1]};\r\n }\r\n var browserSpecs = check_browser();\r\n\r\n function cpcsp_console_log(level, msg){\r\n //IE9 не может писать в консоль если не открыта вкладка developer tools\r\n if(typeof(console) === 'undefined')\r\n return;\r\n if (level <= cadesplugin.current_log_level ){\r\n if (level === cadesplugin.LOG_LEVEL_DEBUG)\r\n console.log(\"DEBUG: %s\", msg);\r\n if (level === cadesplugin.LOG_LEVEL_INFO)\r\n console.info(\"INFO: %s\", msg);\r\n if (level === cadesplugin.LOG_LEVEL_ERROR)\r\n console.error(\"ERROR: %s\", msg);\r\n return;\r\n }\r\n }\r\n\r\n function set_log_level(level){\r\n if (!((level === cadesplugin.LOG_LEVEL_DEBUG) ||\r\n (level === cadesplugin.LOG_LEVEL_INFO) ||\r\n (level === cadesplugin.LOG_LEVEL_ERROR))){\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"cadesplugin_api.js: Incorrect log_level: \" + level);\r\n return;\r\n }\r\n cadesplugin.current_log_level = level;\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = DEBUG\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = INFO\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = ERROR\");\r\n if(isNativeMessageSupported())\r\n {\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\r\n window.postMessage(\"set_log_level=debug\", \"*\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\r\n window.postMessage(\"set_log_level=info\", \"*\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\r\n window.postMessage(\"set_log_level=error\", \"*\");\r\n }\r\n }\r\n\r\n function set_constantValues()\r\n {\r\n cadesplugin.CAPICOM_MEMORY_STORE = 0;\r\n cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_MEMORY_STORE = 0;\r\n cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_CONTAINER_STORE = 100;\r\n\r\n cadesplugin.CAPICOM_MY_STORE = \"My\";\r\n\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\r\n\r\n cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010;\r\n cadesplugin.CADESCOM_XADES_BES = 0x00000020;\r\n cadesplugin.CADESCOM_XADES_T = 0x00000050;\r\n cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0;\r\n cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000;\r\n\r\n cadesplugin.XmlDsigGost3410UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr3411\";\r\n cadesplugin.XmlDsigGost3410Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411\";\r\n\r\n cadesplugin.XmlDsigGost3411Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3410Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3411Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512\";\r\n cadesplugin.XmlDsigGost3410Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512\";\r\n\r\n cadesplugin.CADESCOM_CADES_DEFAULT = 0;\r\n cadesplugin.CADESCOM_CADES_BES = 1;\r\n cadesplugin.CADESCOM_CADES_T = 0x5;\r\n cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\r\n cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff;\r\n\r\n cadesplugin.CADESCOM_ENCODE_BASE64 = 0;\r\n cadesplugin.CADESCOM_ENCODE_BINARY = 1;\r\n cadesplugin.CADESCOM_ENCODE_ANY = -1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\r\n\r\n cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\r\n cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\r\n\r\n cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\r\n\r\n cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9;\r\n\r\n cadesplugin.CAPICOM_OID_OTHER = 0;\r\n cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\r\n\r\n cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2;\r\n cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5;\r\n cadesplugin.CAPICOM_EKU_OTHER = 0;\r\n\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100;\r\n cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1;\r\n\r\n cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0;\r\n cadesplugin.CADESCOM_BASE64_TO_BINARY = 1;\r\n\r\n cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\r\n\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\r\n\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\r\n\r\n cadesplugin.LOG_LEVEL_DEBUG = 4;\r\n cadesplugin.LOG_LEVEL_INFO = 2;\r\n cadesplugin.LOG_LEVEL_ERROR = 1;\r\n\r\n cadesplugin.CADESCOM_AllowNone = 0;\r\n cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1;\r\n cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2;\r\n cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4;\r\n cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000;\r\n cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000;\r\n cadesplugin.CADESCOM_UseContainerStore = 0x40000000;\r\n\r\n cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04;\r\n cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07;\r\n\r\n cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00;\r\n cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01;\r\n cadesplugin.ENABLE_CARRIER_CREATE = 0x02;\r\n cadesplugin.ENABLE_ANY_OPERATION = 0x03;\r\n\r\n cadesplugin.CADESCOM_PRODUCT_CSP = 0;\r\n cadesplugin.CADESCOM_PRODUCT_OCSP = 1;\r\n cadesplugin.CADESCOM_PRODUCT_TSP = 2;\r\n\r\n cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001;\r\n cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002;\r\n cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004;\r\n cadesplugin.MEDIA_TYPE_SCARD = 0x00000008;\r\n\r\n cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0;\r\n cadesplugin.AT_KEYEXCHANGE = 1;\r\n cadesplugin.AT_SIGNATURE = 2;\r\n }\r\n\r\n function async_spawn(generatorFunc) {\r\n function continuer(verb, arg) {\r\n var result;\r\n try {\r\n result = generator[verb](arg);\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n if (result.done) {\r\n return result.value;\r\n } else {\r\n return Promise.resolve(result.value).then(onFulfilled, onRejected);\r\n }\r\n }\r\n var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));\r\n var onFulfilled = continuer.bind(continuer, \"next\");\r\n var onRejected = continuer.bind(continuer, \"throw\");\r\n return onFulfilled();\r\n }\r\n\r\n function isIE() {\r\n // var retVal = ((\"Microsoft Internet Explorer\" == navigator.appName) || // IE < 11\r\n // navigator.userAgent.match(/Trident\\/./i)); // IE 11\r\n return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE');\r\n }\r\n\r\n function isIOS() {\r\n return (navigator.userAgent.match(/ipod/i) ||\r\n navigator.userAgent.match(/ipad/i) ||\r\n navigator.userAgent.match(/iphone/i));\r\n }\r\n\r\n function isNativeMessageSupported()\r\n {\r\n // В IE работаем через NPAPI\r\n if(isIE())\r\n return false;\r\n // В Edge работаем через NativeMessage\r\n if (browserSpecs.name === 'Edg') {\r\n return true;\r\n }\r\n if (browserSpecs.name === 'YaBrowser') {\r\n isYandex = true;\r\n return true;\r\n }\r\n // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии\r\n if(browserSpecs.name === 'Opera') {\r\n isOpera = true;\r\n if(browserSpecs.version >= 33){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n if(browserSpecs.name === 'Firefox') {\r\n isFireFox = true;\r\n if(browserSpecs.version >= 52){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n if(browserSpecs.name === 'Chrome') {\r\n if(browserSpecs.version >= 42){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n //В Сафари начиная с 12 версии нет NPAPI\r\n if(browserSpecs.name === 'Safari') {\r\n isSafari = true;\r\n if(browserSpecs.version >= 12) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // Функция активации объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObject(name) {\r\n if (isIOS()) {\r\n // На iOS для создания объектов используется функция\r\n // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js\r\n return call_ru_cryptopro_npcades_10_native_bridge(\"CreateObject\", [name]);\r\n }\r\n if (isIE()) {\r\n // В Internet Explorer создаются COM-объекты\r\n if (name.match(/X509Enrollment/i)) {\r\n try {\r\n // Объекты CertEnroll пробуем создавать через нашу фабрику,\r\n // если не получилось то через CX509EnrollmentWebClassFactory\r\n var objCertEnrollClassFactory = document.getElementById(\"webClassFactory\");\r\n return objCertEnrollClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n try {\r\n var objWebClassFactory = document.getElementById(\"certEnrollClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (err) {\r\n throw (\"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS\");\r\n }\r\n }\r\n }\r\n // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory\r\n try {\r\n var objWebClassFactory = document.getElementById(\"webClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n // Для версий плагина ниже 2.0.12538\r\n return new ActiveXObject(name);\r\n }\r\n }\r\n // создаются объекты NPAPI\r\n return pluginObject.CreateObject(name);\r\n }\r\n\r\n function decimalToHexString(number) {\r\n if (number < 0) {\r\n number = 0xFFFFFFFF + number + 1;\r\n }\r\n\r\n return number.toString(16).toUpperCase();\r\n }\r\n\r\n function GetMessageFromException(e) {\r\n var err = e.message;\r\n if (!err) {\r\n err = e;\r\n } else if (e.number) {\r\n err += \" (0x\" + decimalToHexString(e.number) + \")\";\r\n }\r\n return err;\r\n }\r\n\r\n function getLastError(exception) {\r\n if(isNativeMessageSupported() || isIE() || isIOS() ) {\r\n return GetMessageFromException(exception);\r\n }\r\n\r\n try {\r\n return pluginObject.getLastError();\r\n } catch(e) {\r\n return GetMessageFromException(exception);\r\n }\r\n }\r\n\r\n // Функция для удаления созданных объектов\r\n function ReleasePluginObjects() {\r\n return cpcsp_chrome_nmcades.ReleasePluginObjects();\r\n }\r\n\r\n // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObjectAsync(name) {\r\n return pluginObject.CreateObjectAsync(name);\r\n }\r\n\r\n //Функции для IOS\r\n var ru_cryptopro_npcades_10_native_bridge = {\r\n callbacksCount : 1,\r\n callbacks : {},\r\n\r\n // Automatically called by native layer when a result is available\r\n resultForCallback : function resultForCallback(callbackId, resultArray) {\r\n var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId];\r\n if (!callback) return;\r\n callback.apply(null,resultArray);\r\n },\r\n\r\n // Use this in javascript to request native objective-c code\r\n // functionName : string (I think the name is explicit :p)\r\n // args : array of arguments\r\n // callback : function with n-arguments that is going to be called when the native code returned\r\n call : function call(functionName, args, callback) {\r\n var hasCallback = callback && typeof callback === \"function\";\r\n var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0;\r\n\r\n if (hasCallback)\r\n ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback;\r\n\r\n var iframe = document.createElement(\"IFRAME\");\r\n var arrObjs = new Array(\"_CPNP_handle\");\r\n try{\r\n iframe.setAttribute(\"src\", \"cpnp-js-call:\" + functionName + \":\" + callbackId+ \":\" + encodeURIComponent(JSON.stringify(args, arrObjs)));\r\n } catch(e){\r\n alert(e);\r\n }\r\n document.documentElement.appendChild(iframe);\r\n iframe.parentNode.removeChild(iframe);\r\n iframe = null;\r\n }\r\n };\r\n\r\n function call_ru_cryptopro_npcades_10_native_bridge(functionName, array){\r\n var tmpobj;\r\n var ex;\r\n ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function(e, response){\r\n ex = e;\r\n var str='tmpobj='+response;\r\n eval(str);\r\n if (typeof (tmpobj) === \"string\"){\r\n tmpobj = tmpobj.replace(/\\\\\\n/gm, \"\\n\");\r\n tmpobj = tmpobj.replace(/\\\\\\r/gm, \"\\r\");\r\n }\r\n });\r\n if(ex)\r\n throw ex;\r\n return tmpobj;\r\n }\r\n\r\n function show_firefox_missing_extension_dialog()\r\n {\r\n if (!window.cadesplugin_skip_extension_install)\r\n {\r\n var ovr = document.createElement('div');\r\n ovr.id = \"cadesplugin_ovr\";\r\n ovr.style = \"visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)\";\r\n ovr.innerHTML = \"
\" +\r\n \"\" +\r\n \"
Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.\" +\r\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 function firefox_or_safari_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 (cadesplugin_loaded_event_recieved)\n return;\n if(isFireFox || isSafari)\n {\n // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js\n var url = event.data.substring(event.data.indexOf(\"url:\") + 4);\n if (!url.match(\"^moz-extension://[a-zA-Z0-9-]+/nmcades_plugin_api.js$\")\n && !url.match(\"^safari-extension://[a-zA-Z0-9-]+/[a-zA-Z0-9]+/nmcades_plugin_api.js$\"))\n {\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"Bad url \\\"\" + url + \"\\\" for load CryptoPro Extension for CAdES Browser plug-in\");\n plugin_loaded_error();\n return;\n }\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_safari_nmcades_onload;\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\n }else {\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\n }\n cadesplugin_loaded_event_recieved = true;\n }, false);\n }\n\n //Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari\n function load_extension()\n {\n if(isFireFox || isSafari){\n // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера.\n nmcades_api_onload();\n } else {\n // в асинхронном варианте для Yandex и Opera подключаем расширение из Opera store.\n if (isOpera || isYandex) {\n var 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 } else {\n // для Chrome, Chromium, Chromium Edge расширение из Chrome store\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 }\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(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.3.1\";\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","import { CadesCertificate, Certificate } from './certificate';\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 getAllUserCertificates = _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 getAllUserCertificates(): 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 cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\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","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 { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _getCadesCert } from '../helpers/_getCadesCert';\n\n/**\n * Создает XML подпись для документа в формате XML\n *\n * @param thumbprint - отпечаток сертификата\n * @param unencryptedMessage - подписываемое сообщение в формате XML\n * @returns подпись\n */\nexport const createXMLSignature = _afterPluginsLoaded(\n async (thumbprint: string, unencryptedMessage: string): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createXMLSignature(): string {\n let cadesSigner;\n let cadesSignedXML;\n\n try {\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\n cadesSignedXML = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.SignedXML');\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\n }\n\n try {\n const signatureMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n const digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\n void (__cadesAsyncToken__ + cadesSigner.propset_CheckCertificate(true));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_Content(unencryptedMessage));\n void (\n __cadesAsyncToken__ +\n cadesSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED)\n );\n void (__cadesAsyncToken__ + cadesSignedXML.propset_SignatureMethod(signatureMethod));\n void (__cadesAsyncToken__ + cadesSignedXML.propset_DigestMethod(digestMethod));\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 = __cadesAsyncToken__ + cadesSignedXML.Sign(cadesSigner);\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 { 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 * Создает отсоединенную подпись хеша по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @returns подпись в формате PKCS#7\n */\nexport const createDetachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, messageHash: string): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\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__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\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.SignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\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 { 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 * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\n * @returns подпись в формате PKCS#7\n */\nexport const addDetachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, signedMessage: string | ArrayBuffer, messageHash: string): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addDetachedSignature(): string {\n let cadesAttrs;\n let cadesHashedData;\n let cadesSignedData;\n let cadesSigner;\n\n try {\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\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__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\n }\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\n );\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\n }\n\n let signature: string;\n\n try {\n void (\n __cadesAsyncToken__ +\n cadesSignedData.VerifyHash(cadesHashedData, signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE)\n );\n signature =\n __cadesAsyncToken__ +\n cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\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 { 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 * Создает присоединенную подпись сообщения по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param message - подписываемое сообщение\n * @returns подпись в формате PKCS#7\n */\nexport const createAttachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, unencryptedMessage: string | ArrayBuffer): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function createAttachedSignature(): 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 messageBase64;\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 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(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\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 = __cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\n }\n\n return signature;\n }),\n );\n },\n);\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","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 * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата\n *\n * @param thumbprint - отпечаток сертификата\n * @param signedMessage - подписанное сообщение\n * @returns подпись в формате PKCS#7\n */\nexport const addAttachedSignature = _afterPluginsLoaded(\n async (thumbprint: string, signedMessage: string | ArrayBuffer): Promise => {\n const { cadesplugin } = window;\n const cadesCertificate = await _getCadesCert(thumbprint);\n\n return eval(\n _generateCadesFn(function addAttachedSignature(): 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 messageBase64;\n\n try {\n messageBase64 = Buffer.from(signedMessage).toString('base64');\n } catch (error) {\n console.error(error);\n\n throw new Error('Ошибка при преобразовании сообщения в Base64');\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(messageBase64));\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\n }\n\n let signature: string;\n\n try {\n void (__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE));\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\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 { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит\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 *\n * @returns хеш\n */\nexport const createHash = _afterPluginsLoaded(\n async (unencryptedMessage: string | ArrayBuffer): 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_GOST_3411_2012_256)\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","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о CSP\n */\nexport const getCspVersion = _afterPluginsLoaded((): string => {\n let cspVersion = null;\n\n return eval(\n _generateCadesFn(function getCspVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\n\n cspVersion = __cadesAsyncToken__ + cspVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении версии системы');\n }\n\n return cspVersion;\n }),\n );\n});\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\n\n/**\n * Предоставляет информацию о системе\n *\n * @returns информацию о плагине\n */\nexport const getPluginVersion = _afterPluginsLoaded((): string => {\n let cadesVersion = null;\n\n return eval(\n _generateCadesFn(function getPluginVersion(): string {\n let cadesAbout;\n\n try {\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\n\n cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\n\n if (!cadesVersion) {\n cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\n }\n\n cadesVersion = __cadesAsyncToken__ + cadesVersion.toString();\n } catch (error) {\n console.error(error);\n\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о плагине');\n }\n\n return cadesVersion;\n }),\n );\n});\n"],"sourceRoot":""}
\ No newline at end of file
+{"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/certificate/index.ts","webpack://cryptoPro/./helpers/_getCadesCert.ts","webpack://cryptoPro/./helpers/_extractCommonName.ts","webpack://cryptoPro/./helpers/_getDateObj.ts","webpack://cryptoPro/../node_modules/buffer/index.js","webpack://cryptoPro/./api/getUserCertificates.ts","webpack://cryptoPro/./api/certificate/getCadesProp.ts","webpack://cryptoPro/./api/getSystemInfo.ts","webpack://cryptoPro/./crypto-pro-js.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/./api/getAllUserCertificates.ts","webpack://cryptoPro/./api/getContainerCertificates.ts","webpack://cryptoPro/./api/getAllContainerCertificates.ts","webpack://cryptoPro/./api/isValidSystemSetup.ts","webpack://cryptoPro/./helpers/_isSupportedCadesVersion.ts","webpack://cryptoPro/./helpers/_isSupportedCSPVersion.ts","webpack://cryptoPro/./api/createXMLSignature.ts","webpack://cryptoPro/./api/createDetachedSignature.ts","webpack://cryptoPro/./api/addDetachedSignature.ts","webpack://cryptoPro/./api/createAttachedSignature.ts","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/buffer/node_modules/isarray/index.js","webpack://cryptoPro/./api/addAttachedSignature.ts","webpack://cryptoPro/./api/createHash.ts","webpack://cryptoPro/./api/getCspVersion.ts","webpack://cryptoPro/./api/getPluginVersion.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","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","_getCadesCert","thumbprint","eval","cadesStore","cadesCertificateList","certificatesCount","cadesCertificate","Open","CAPICOM_CURRENT_USER_STORE","CAPICOM_MY_STORE","CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED","Certificates","Count","Find","CAPICOM_CERTIFICATE_FIND_SHA1_HASH","Item","Close","_extractCommonName","subjectName","_getDateObj","dateObj","getVarDate","base64","ieee754","isArray","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","length","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","allocUnsafe","from","TypeError","ArrayBuffer","array","byteOffset","byteLength","undefined","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","slice","fromString","obj","isBuffer","len","checked","copy","buffer","val","type","data","fromObject","assertSize","size","toString","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","indexOf","lastIndexOf","arr","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","push","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","e","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","equals","inspect","max","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","Array","_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","set","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","stringtrim","base64clean","src","dst","certificatesCache","getUserCertificates","resetCache","cadesCertificates","cadesCertificatesCount","CAPICOM_CERTIFICATE_FIND_TIME_VALID","CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY","CAPICOM_PROPID_KEY_PROV_INFO","certificateList","Certificate","SubjectName","IssuerName","Thumbprint","ValidFromDate","ValidToDate","getCadesProp","propName","_cadesCertificate","propertyValue","getSystemInfo","sysInfo","cadesVersion","cspVersion","cadesAbout","PluginVersion","CSPVersion","Version","getCertificate","availableCertificates","foundCertificate","find","cert","pluginObject","plugin_resolved","plugin_reject","plugin_resolve","isOpera","isFireFox","isSafari","isYandex","cadesplugin_loaded_event_recieved","resolve","reject","browserSpecs","check_browser","ru_cryptopro_npcades_10_native_bridge","callbacksCount","callbacks","resultForCallback","callbackId","resultArray","functionName","hasCallback","iframe","document","createElement","arrObjs","setAttribute","encodeURIComponent","JSON","stringify","alert","documentElement","appendChild","parentNode","removeChild","JSModuleVersion","async_spawn","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_MEMORY_STORE","CAPICOM_LOCAL_MACHINE_STORE","CAPICOM_SMART_CARD_USER_STORE","CADESCOM_MEMORY_STORE","CADESCOM_LOCAL_MACHINE_STORE","CADESCOM_CURRENT_USER_STORE","CADESCOM_SMART_CARD_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","CADESCOM_XADES_DEFAULT","CADESCOM_XADES_BES","CADESCOM_XADES_T","CADESCOM_XADES_X_LONG_TYPE_1","CADESCOM_XMLDSIG_TYPE","XmlDsigGost3410UrlObsolete","XmlDsigGost3411UrlObsolete","XmlDsigGost3410Url","XmlDsigGost3411Url","XmlDsigGost3411Url2012256","XmlDsigGost3410Url2012256","XmlDsigGost3411Url2012512","XmlDsigGost3410Url2012512","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_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_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO","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","CADESCOM_InstallCertChainToContainer","CADESCOM_UseContainerStore","ENABLE_CARRIER_TYPE_CSP","ENABLE_CARRIER_TYPE_FKC_NO_SM","ENABLE_CARRIER_TYPE_FKC_SM","ENABLE_ANY_CARRIER_TYPE","DISABLE_EVERY_CARRIER_OPERATION","ENABLE_CARRIER_OPEN_ENUM","ENABLE_CARRIER_CREATE","ENABLE_ANY_OPERATION","CADESCOM_PRODUCT_CSP","CADESCOM_PRODUCT_OCSP","CADESCOM_PRODUCT_TSP","MEDIA_TYPE_REGISTRY","MEDIA_TYPE_HDIMAGE","MEDIA_TYPE_CLOUD","MEDIA_TYPE_SCARD","XCN_CRYPT_STRING_BASE64HEADER","AT_KEYEXCHANGE","AT_SIGNATURE","generatorFunc","continuer","verb","result","generator","err","done","then","onFulfilled","onRejected","isIE","isIOS","call_ru_cryptopro_npcades_10_native_bridge","getElementById","ActiveXObject","decimalToHexString","number","toUpperCase","GetMessageFromException","exception","cpcsp_chrome_nmcades","tmpobj","ex","response","show_firefox_missing_extension_dialog","cadesplugin_skip_extension_install","ovr","id","style","innerHTML","getElementsByTagName","addEventListener","plugin_loaded_error","visibility","firefox_or_safari_nmcades_onload","check_chrome_plugin","plugin_loaded","nmcades_api_onload","event","url","substring","fileref","onerror","onload","load_extension","load_npapi_plugin","elem","elem1","elem2","createPromise","check_npapi_plugin","display","mimetype","mimeTypes","enabledPlugin","div","readyState","EnableInternalCSP","issuerName","validFrom","validTo","getOwnerInfo","getInfo","SUBJECT_TAGS_TRANSLATIONS","getIssuerInfo","ISSUER_TAGS_TRANSLATIONS","getExtendedKeyUsage","getDecodedExtendedKeyUsage","getAlgorithm","isValid","exportBase64","hasExtendedKeyUsage","oids","CAPICOM_ACTIVE_DIRECTORY_USER_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_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","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","title","description","oidIdentifierMatch","oidIdentifier","isTranslated","oidTranslation","tagTranslation","tag","certOids","every","oidToCheck","some","certOid","IsValid","Result","getAllUserCertificates","getContainerCertificates","getAllContainerCertificates","isValidSystemSetup","systemInfo","_isSupportedCadesVersion","_isSupportedCSPVersion","major","patch","createXMLSignature","unencryptedMessage","cadesSigner","cadesSignedXML","signature","propset_Certificate","propset_CheckCertificate","propset_Content","propset_SignatureType","propset_SignatureMethod","propset_DigestMethod","Sign","createDetachedSignature","messageHash","cadesAttrs","cadesHashedData","cadesSignedData","cadesAuthAttrs","currentTime","Date","propset_Name","propset_Value","AuthenticatedAttributes2","Add","propset_Options","propset_Algorithm","SetHashValue","SignHash","addDetachedSignature","signedMessage","VerifyHash","CoSignHash","createAttachedSignature","messageBase64","propset_ContentEncoding","SignCades","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","addAttachedSignature","VerifyCades","CoSignCades","createHash","hash","propset_DataEncoding","Hash","getCspVersion","getPluginVersion"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,YAAa,GAAIH,GACE,iBAAZC,QACdA,QAAmB,UAAID,IAEvBD,EAAgB,UAAIC,IARtB,CASGK,QAAQ,WACX,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUP,QAGnC,IAAIC,EAASI,EAAiBE,GAAY,CACzCC,EAAGD,EACHE,GAAG,EACHT,QAAS,IAUV,OANAU,EAAQH,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOQ,GAAI,EAGJR,EAAOD,QA0Df,OArDAM,EAAoBM,EAAIF,EAGxBJ,EAAoBO,EAAIR,EAGxBC,EAAoBQ,EAAI,SAASd,EAASe,EAAMC,GAC3CV,EAAoBW,EAAEjB,EAASe,IAClCG,OAAOC,eAAenB,EAASe,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEV,EAAoBgB,EAAI,SAAStB,GACX,oBAAXuB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAenB,EAASuB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAenB,EAAS,aAAc,CAAEyB,OAAO,KAQvDnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBQ,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvB,EAAoB2B,EAAI,SAAShC,GAChC,IAAIe,EAASf,GAAUA,EAAO2B,WAC7B,WAAwB,OAAO3B,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAK,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG7B,EAAoBgC,EAAI,GAIjBhC,EAAoBA,EAAoBiC,EAAI,I,+8CClFrD,WAIIC,GAAgB,EAChBC,GAAiB,EAER,EAAAC,oBAAsB,SACjCC,GAEA,IAAMC,EAAaC,QAAQzC,OAAO0C,SAElC,OAAO,W,IAAgB,sD,kGACrB,IAAKL,EAAgB,CACnB,IACE,EAAQ,IACR,MAAOM,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MACR,EAAAC,+BAA+BH,IAAU,2DAI7CN,GAAiB,EAKnB,GAFQU,EAAgB/C,OAAM,aAEzBwC,EACH,MAAM,IAAIK,MAAM,kCAGlB,IAAKE,EACH,MAAM,IAAIF,MAAM,iDAGbT,IACHW,EAAYC,cAAcD,EAAYE,iBAEtCb,GAAgB,G,iBAIhB,O,sBAAA,GAAMW,G,cAAN,S,aAIA,M,WAFAH,QAAQD,MAAM,GAER,IAAIE,MACR,EAAAC,+BAA+B,IAAU,6D,OAItC,SAAMP,EAAGW,MAAMC,KAAMC,I,OAA5B,MAAO,CAAP,EAAO,oB,8ECrDE,EAAAN,+BAAiC,SAACH,G,MACzCU,GAAmC,QAAlB,EAAArD,OAAO+C,mBAAW,eAAEO,eAAgBtD,OAAO+C,YAAYO,aAAaX,GAEzF,KAAKU,aAAc,EAAdA,EAAgBE,SAAS,CAC5B,IAAKZ,EAAMY,QACT,OAAO,KAGTF,EAAiBV,EAKnB,IAF+B,WAAWa,KAAKH,EAAeE,SAG5D,OAAO,KAGT,IAAME,EAAeJ,EAAeE,QAAQG,MAAM,2DAElD,OAAOD,EAAeA,EAAa,IAAMA,EAAa,GAAK,iBAAmBA,EAAa,GAAK,IAAM,IAAM,O,8EClBjG,EAAAE,oBAAsB,GACtB,EAAAC,4BAA8B,W,IAAC,sDAAiB,UAMhD,EAAAC,iBAAmB,SAACC,G,MACvBf,EAAA,OAAAA,YACFgB,EAAqBtB,QAAQM,EAAYiB,mBACzCC,EAAeH,EAASnD,MAAQ,YAChCuD,EAAkBC,OAAOL,GACzBM,GAAuE,QAAnD,EAAAF,EAAgBR,MAAM,qCAA6B,eAAG,KAAM,GAChFW,EAAeH,EAAgBI,QAAQ,oBAAqB,MAC9DC,EAA0BJ,OAC5B,IAAKJ,EAXA,IAAIS,SAAS,GAAI,0DAAjB,GAWiDA,UAAUJ,EAAmBC,IAiBrF,OATAE,GALAA,EAA0BA,EAAwBD,QAChD,oDACA,4BAA2BP,EAAqB,QAAU,IAAE,OAGZO,QAChD,0CACAP,EAAqB,SAAW,IAG7BA,IACHQ,EAA0BA,EAAwBD,QAAQ,2BAA4B,YAGjF,CACLP,EAAqB,2BAA2BQ,EAAuB,KAAO,IAAIA,EAAuB,OACzG,4BAA4BN,EAAY,OACxCQ,KAAK,M,4ICpCT,SACA,SACA,SACA,U,0ICHA,S,iHCCA,iDACA,wDACA,0CAQa,QAAAC,cAAgB,sBAAApC,qBAC3B,SAACqC,YACS,IAAA5B,YAAA,OAAAA,YAER,OAAO6B,KACL,mBAAAf,kBAAiB,WACf,IAAIgB,EA6BAC,EACAC,EAeAC,EA3CJ,IACEH,EAAa,mBAAAlB,oBAAsB,mBAAAC,4BAA4B,kBAC/D,MAAOjB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,0CAG3D,IAAKkC,EACH,MAAM,IAAIhC,MAAM,uDAGlB,IAEI,mBAAAc,oBACAkB,EAAWI,KACTlC,YAAYmC,2BACZnC,YAAYoC,iBACZpC,YAAYqC,oCAGhB,MAAOzC,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,iCAM3D,IACEmC,EAAuB,mBAAAnB,oBAAsBkB,EAAWQ,aACxDN,EAAoB,mBAAApB,oBAAsBmB,EAAqBQ,MAC/D,MAAO3C,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,wCAG3D,IAAKoC,EACH,MAAM,IAAIlC,MAAM,8BAKlB,IAME,GALAiC,EACE,mBAAAnB,oBAAsBmB,EAAqBS,KAAKxC,YAAYyC,mCAAoCb,cAEpF,mBAAAhB,oBAAsBmB,EAAqBQ,OAGvD,MAAM,IAAIzC,MAAM,6BAA6B8B,WAAU,eAGzDK,EAAmB,mBAAArB,oBAAsBmB,EAAqBW,KAAK,GACnE,MAAO9C,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,oCAK3D,OAFAkC,EAAWa,QAEJV,U,8ECnFF,EAAAW,mBAAqB,SAACC,GAAmB,eACR,QADQ,EACZ,QADY,EACpDA,EAAYlC,MAAM,8BAAsB,eAAG,UAAC,eAAGY,QAAQ,QAAS,O,8ECKrD,EAAAuB,YAAc,SAACC,GAAkB,OAACA,EAAQC,WAAaD,EAAQC,aAAeD,I,8BCN3F;;;;;;;AAUA,IAAIE,EAAS,EAAQ,IACjBC,EAAU,EAAQ,IAClBC,EAAU,EAAQ,IAmDtB,SAASC,IACP,OAAOC,EAAOC,oBACV,WACA,WAGN,SAASC,EAAcC,EAAMC,GAC3B,GAAIL,IAAeK,EACjB,MAAM,IAAIC,WAAW,8BAcvB,OAZIL,EAAOC,qBAETE,EAAO,IAAIG,WAAWF,IACjBG,UAAYP,EAAOpE,WAGX,OAATuE,IACFA,EAAO,IAAIH,EAAOI,IAEpBD,EAAKC,OAASA,GAGTD,EAaT,SAASH,EAAQQ,EAAKC,EAAkBL,GACtC,KAAKJ,EAAOC,qBAAyBlD,gBAAgBiD,GACnD,OAAO,IAAIA,EAAOQ,EAAKC,EAAkBL,GAI3C,GAAmB,iBAARI,EAAkB,CAC3B,GAAgC,iBAArBC,EACT,MAAM,IAAIhE,MACR,qEAGJ,OAAOiE,EAAY3D,KAAMyD,GAE3B,OAAOG,EAAK5D,KAAMyD,EAAKC,EAAkBL,GAW3C,SAASO,EAAMR,EAAMlF,EAAOwF,EAAkBL,GAC5C,GAAqB,iBAAVnF,EACT,MAAM,IAAI2F,UAAU,yCAGtB,MAA2B,oBAAhBC,aAA+B5F,aAAiB4F,YA6H7D,SAA0BV,EAAMW,EAAOC,EAAYX,GAGjD,GAFAU,EAAME,WAEFD,EAAa,GAAKD,EAAME,WAAaD,EACvC,MAAM,IAAIV,WAAW,6BAGvB,GAAIS,EAAME,WAAaD,GAAcX,GAAU,GAC7C,MAAM,IAAIC,WAAW,6BAIrBS,OADiBG,IAAfF,QAAuCE,IAAXb,EACtB,IAAIE,WAAWQ,QACHG,IAAXb,EACD,IAAIE,WAAWQ,EAAOC,GAEtB,IAAIT,WAAWQ,EAAOC,EAAYX,GAGxCJ,EAAOC,qBAETE,EAAOW,GACFP,UAAYP,EAAOpE,UAGxBuE,EAAOe,EAAcf,EAAMW,GAE7B,OAAOX,EAvJEgB,CAAgBhB,EAAMlF,EAAOwF,EAAkBL,GAGnC,iBAAVnF,EAwFb,SAAqBkF,EAAMiB,EAAQC,GACT,iBAAbA,GAAsC,KAAbA,IAClCA,EAAW,QAGb,IAAKrB,EAAOsB,WAAWD,GACrB,MAAM,IAAIT,UAAU,8CAGtB,IAAIR,EAAwC,EAA/BY,EAAWI,EAAQC,GAG5BE,GAFJpB,EAAOD,EAAaC,EAAMC,IAERoB,MAAMJ,EAAQC,GAE5BE,IAAWnB,IAIbD,EAAOA,EAAKsB,MAAM,EAAGF,IAGvB,OAAOpB,EA5GEuB,CAAWvB,EAAMlF,EAAOwF,GAsJnC,SAAqBN,EAAMwB,GACzB,GAAI3B,EAAO4B,SAASD,GAAM,CACxB,IAAIE,EAA4B,EAAtBC,EAAQH,EAAIvB,QAGtB,OAAoB,KAFpBD,EAAOD,EAAaC,EAAM0B,IAEjBzB,QAITuB,EAAII,KAAK5B,EAAM,EAAG,EAAG0B,GAHZ1B,EAOX,GAAIwB,EAAK,CACP,GAA4B,oBAAhBd,aACRc,EAAIK,kBAAkBnB,aAAgB,WAAYc,EACpD,MAA0B,iBAAfA,EAAIvB,SA+8CL6B,EA/8CkCN,EAAIvB,SAg9CrC6B,EA/8CF/B,EAAaC,EAAM,GAErBe,EAAcf,EAAMwB,GAG7B,GAAiB,WAAbA,EAAIO,MAAqBpC,EAAQ6B,EAAIQ,MACvC,OAAOjB,EAAcf,EAAMwB,EAAIQ,MAw8CrC,IAAgBF,EAp8Cd,MAAM,IAAIrB,UAAU,sFA9KbwB,CAAWjC,EAAMlF,GA4B1B,SAASoH,EAAYC,GACnB,GAAoB,iBAATA,EACT,MAAM,IAAI1B,UAAU,oCACf,GAAI0B,EAAO,EAChB,MAAM,IAAIjC,WAAW,wCA4BzB,SAASK,EAAaP,EAAMmC,GAG1B,GAFAD,EAAWC,GACXnC,EAAOD,EAAaC,EAAMmC,EAAO,EAAI,EAAoB,EAAhBR,EAAQQ,KAC5CtC,EAAOC,oBACV,IAAK,IAAIjG,EAAI,EAAGA,EAAIsI,IAAQtI,EAC1BmG,EAAKnG,GAAK,EAGd,OAAOmG,EAwCT,SAASe,EAAef,EAAMW,GAC5B,IAAIV,EAASU,EAAMV,OAAS,EAAI,EAA4B,EAAxB0B,EAAQhB,EAAMV,QAClDD,EAAOD,EAAaC,EAAMC,GAC1B,IAAK,IAAIpG,EAAI,EAAGA,EAAIoG,EAAQpG,GAAK,EAC/BmG,EAAKnG,GAAgB,IAAX8G,EAAM9G,GAElB,OAAOmG,EA+DT,SAAS2B,EAAS1B,GAGhB,GAAIA,GAAUL,IACZ,MAAM,IAAIM,WAAW,0DACaN,IAAawC,SAAS,IAAM,UAEhE,OAAgB,EAATnC,EAsFT,SAASY,EAAYI,EAAQC,GAC3B,GAAIrB,EAAO4B,SAASR,GAClB,OAAOA,EAAOhB,OAEhB,GAA2B,oBAAhBS,aAA6D,mBAAvBA,YAAY2B,SACxD3B,YAAY2B,OAAOpB,IAAWA,aAAkBP,aACnD,OAAOO,EAAOJ,WAEM,iBAAXI,IACTA,EAAS,GAAKA,GAGhB,IAAIS,EAAMT,EAAOhB,OACjB,GAAY,IAARyB,EAAW,OAAO,EAItB,IADA,IAAIY,GAAc,IAEhB,OAAQpB,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOQ,EACT,IAAK,OACL,IAAK,QACL,UAAKZ,EACH,OAAOyB,EAAYtB,GAAQhB,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAANyB,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOc,EAAcvB,GAAQhB,OAC/B,QACE,GAAIqC,EAAa,OAAOC,EAAYtB,GAAQhB,OAC5CiB,GAAY,GAAKA,GAAUuB,cAC3BH,GAAc,GAMtB,SAASI,EAAcxB,EAAUyB,EAAOC,GACtC,IAAIN,GAAc,EAclB,SALcxB,IAAV6B,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQ/F,KAAKqD,OACf,MAAO,GAOT,SAJYa,IAAR8B,GAAqBA,EAAMhG,KAAKqD,UAClC2C,EAAMhG,KAAKqD,QAGT2C,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTD,KAAW,GAGT,MAAO,GAKT,IAFKzB,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAO2B,EAASjG,KAAM+F,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOE,EAAUlG,KAAM+F,EAAOC,GAEhC,IAAK,QACH,OAAOG,EAAWnG,KAAM+F,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAOI,EAAYpG,KAAM+F,EAAOC,GAElC,IAAK,SACH,OAAOK,EAAYrG,KAAM+F,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOM,EAAatG,KAAM+F,EAAOC,GAEnC,QACE,GAAIN,EAAa,MAAM,IAAI7B,UAAU,qBAAuBS,GAC5DA,GAAYA,EAAW,IAAIuB,cAC3BH,GAAc,GAStB,SAASa,EAAMC,EAAG9H,EAAGrB,GACnB,IAAIJ,EAAIuJ,EAAE9H,GACV8H,EAAE9H,GAAK8H,EAAEnJ,GACTmJ,EAAEnJ,GAAKJ,EAmIT,SAASwJ,EAAsBxB,EAAQC,EAAKlB,EAAYM,EAAUoC,GAEhE,GAAsB,IAAlBzB,EAAO5B,OAAc,OAAQ,EAmBjC,GAhB0B,iBAAfW,GACTM,EAAWN,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAEhBA,GAAcA,EACV2C,MAAM3C,KAERA,EAAa0C,EAAM,EAAKzB,EAAO5B,OAAS,GAItCW,EAAa,IAAGA,EAAaiB,EAAO5B,OAASW,GAC7CA,GAAciB,EAAO5B,OAAQ,CAC/B,GAAIqD,EAAK,OAAQ,EACZ1C,EAAaiB,EAAO5B,OAAS,OAC7B,GAAIW,EAAa,EAAG,CACzB,IAAI0C,EACC,OAAQ,EADJ1C,EAAa,EAUxB,GALmB,iBAARkB,IACTA,EAAMjC,EAAOW,KAAKsB,EAAKZ,IAIrBrB,EAAO4B,SAASK,GAElB,OAAmB,IAAfA,EAAI7B,QACE,EAEHuD,EAAa3B,EAAQC,EAAKlB,EAAYM,EAAUoC,GAClD,GAAmB,iBAARxB,EAEhB,OADAA,GAAY,IACRjC,EAAOC,qBACiC,mBAAjCK,WAAW1E,UAAUgI,QAC1BH,EACKnD,WAAW1E,UAAUgI,QAAQzJ,KAAK6H,EAAQC,EAAKlB,GAE/CT,WAAW1E,UAAUiI,YAAY1J,KAAK6H,EAAQC,EAAKlB,GAGvD4C,EAAa3B,EAAQ,CAAEC,GAAOlB,EAAYM,EAAUoC,GAG7D,MAAM,IAAI7C,UAAU,wCAGtB,SAAS+C,EAAcG,EAAK7B,EAAKlB,EAAYM,EAAUoC,GACrD,IA0BIzJ,EA1BA+J,EAAY,EACZC,EAAYF,EAAI1D,OAChB6D,EAAYhC,EAAI7B,OAEpB,QAAiBa,IAAbI,IAEe,UADjBA,EAAWtD,OAAOsD,GAAUuB,gBACY,UAAbvB,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAIyC,EAAI1D,OAAS,GAAK6B,EAAI7B,OAAS,EACjC,OAAQ,EAEV2D,EAAY,EACZC,GAAa,EACbC,GAAa,EACblD,GAAc,EAIlB,SAASmD,EAAMC,EAAKnK,GAClB,OAAkB,IAAd+J,EACKI,EAAInK,GAEJmK,EAAIC,aAAapK,EAAI+J,GAKhC,GAAIN,EAAK,CACP,IAAIY,GAAc,EAClB,IAAKrK,EAAI+G,EAAY/G,EAAIgK,EAAWhK,IAClC,GAAIkK,EAAKJ,EAAK9J,KAAOkK,EAAKjC,GAAqB,IAAhBoC,EAAoB,EAAIrK,EAAIqK,IAEzD,IADoB,IAAhBA,IAAmBA,EAAarK,GAChCA,EAAIqK,EAAa,IAAMJ,EAAW,OAAOI,EAAaN,OAEtC,IAAhBM,IAAmBrK,GAAKA,EAAIqK,GAChCA,GAAc,OAKlB,IADItD,EAAakD,EAAYD,IAAWjD,EAAaiD,EAAYC,GAC5DjK,EAAI+G,EAAY/G,GAAK,EAAGA,IAAK,CAEhC,IADA,IAAIsK,GAAQ,EACHC,EAAI,EAAGA,EAAIN,EAAWM,IAC7B,GAAIL,EAAKJ,EAAK9J,EAAIuK,KAAOL,EAAKjC,EAAKsC,GAAI,CACrCD,GAAQ,EACR,MAGJ,GAAIA,EAAO,OAAOtK,EAItB,OAAQ,EAeV,SAASwK,EAAUL,EAAK/C,EAAQqD,EAAQrE,GACtCqE,EAASC,OAAOD,IAAW,EAC3B,IAAIE,EAAYR,EAAI/D,OAASqE,EACxBrE,GAGHA,EAASsE,OAAOtE,IACHuE,IACXvE,EAASuE,GAJXvE,EAASuE,EASX,IAAIC,EAASxD,EAAOhB,OACpB,GAAIwE,EAAS,GAAM,EAAG,MAAM,IAAIhE,UAAU,sBAEtCR,EAASwE,EAAS,IACpBxE,EAASwE,EAAS,GAEpB,IAAK,IAAI5K,EAAI,EAAGA,EAAIoG,IAAUpG,EAAG,CAC/B,IAAI6K,EAASC,SAAS1D,EAAO2D,OAAW,EAAJ/K,EAAO,GAAI,IAC/C,GAAI0J,MAAMmB,GAAS,OAAO7K,EAC1BmK,EAAIM,EAASzK,GAAK6K,EAEpB,OAAO7K,EAGT,SAASgL,EAAWb,EAAK/C,EAAQqD,EAAQrE,GACvC,OAAO6E,EAAWvC,EAAYtB,EAAQ+C,EAAI/D,OAASqE,GAASN,EAAKM,EAAQrE,GAG3E,SAAS8E,EAAYf,EAAK/C,EAAQqD,EAAQrE,GACxC,OAAO6E,EAq6BT,SAAuBE,GAErB,IADA,IAAIC,EAAY,GACPpL,EAAI,EAAGA,EAAImL,EAAI/E,SAAUpG,EAEhCoL,EAAUC,KAAyB,IAApBF,EAAIG,WAAWtL,IAEhC,OAAOoL,EA36BWG,CAAanE,GAAS+C,EAAKM,EAAQrE,GAGvD,SAASoF,EAAarB,EAAK/C,EAAQqD,EAAQrE,GACzC,OAAO8E,EAAWf,EAAK/C,EAAQqD,EAAQrE,GAGzC,SAASqF,EAAatB,EAAK/C,EAAQqD,EAAQrE,GACzC,OAAO6E,EAAWtC,EAAcvB,GAAS+C,EAAKM,EAAQrE,GAGxD,SAASsF,EAAWvB,EAAK/C,EAAQqD,EAAQrE,GACvC,OAAO6E,EAk6BT,SAAyBE,EAAKQ,GAG5B,IAFA,IAAItL,EAAGuL,EAAIC,EACPT,EAAY,GACPpL,EAAI,EAAGA,EAAImL,EAAI/E,WACjBuF,GAAS,GAAK,KADa3L,EAGhCK,EAAI8K,EAAIG,WAAWtL,GACnB4L,EAAKvL,GAAK,EACVwL,EAAKxL,EAAI,IACT+K,EAAUC,KAAKQ,GACfT,EAAUC,KAAKO,GAGjB,OAAOR,EA/6BWU,CAAe1E,EAAQ+C,EAAI/D,OAASqE,GAASN,EAAKM,EAAQrE,GAkF9E,SAASgD,EAAae,EAAKrB,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQoB,EAAI/D,OACtBR,EAAOmG,cAAc5B,GAErBvE,EAAOmG,cAAc5B,EAAI1C,MAAMqB,EAAOC,IAIjD,SAASE,EAAWkB,EAAKrB,EAAOC,GAC9BA,EAAMiD,KAAKC,IAAI9B,EAAI/D,OAAQ2C,GAI3B,IAHA,IAAImD,EAAM,GAENlM,EAAI8I,EACD9I,EAAI+I,GAAK,CACd,IAQMoD,EAAYC,EAAWC,EAAYC,EARrCC,EAAYpC,EAAInK,GAChBwM,EAAY,KACZC,EAAoBF,EAAY,IAAQ,EACvCA,EAAY,IAAQ,EACpBA,EAAY,IAAQ,EACrB,EAEJ,GAAIvM,EAAIyM,GAAoB1D,EAG1B,OAAQ0D,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EAEyB,MAAV,KADlBJ,EAAahC,EAAInK,EAAI,OAEnBsM,GAA6B,GAAZC,IAAqB,EAAoB,GAAbJ,GACzB,MAClBK,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAahC,EAAInK,EAAI,GACrBoM,EAAYjC,EAAInK,EAAI,GACQ,MAAV,IAAbmM,IAAsD,MAAV,IAAZC,KACnCE,GAA6B,GAAZC,IAAoB,IAAoB,GAAbJ,IAAsB,EAAmB,GAAZC,GACrD,OAAUE,EAAgB,OAAUA,EAAgB,SACtEE,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAahC,EAAInK,EAAI,GACrBoM,EAAYjC,EAAInK,EAAI,GACpBqM,EAAalC,EAAInK,EAAI,GACO,MAAV,IAAbmM,IAAsD,MAAV,IAAZC,IAAsD,MAAV,IAAbC,KAClEC,GAA6B,GAAZC,IAAoB,IAAqB,GAAbJ,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,GAClF,OAAUC,EAAgB,UAC5CE,EAAYF,GAMJ,OAAdE,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbN,EAAIb,KAAKmB,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBN,EAAIb,KAAKmB,GACTxM,GAAKyM,EAGP,OAQF,SAAgCC,GAC9B,IAAI7E,EAAM6E,EAAWtG,OACrB,GAAIyB,GAJqB,KAKvB,OAAO9D,OAAO4I,aAAa7J,MAAMiB,OAAQ2I,GAI3C,IAAIR,EAAM,GACNlM,EAAI,EACR,KAAOA,EAAI6H,GACTqE,GAAOnI,OAAO4I,aAAa7J,MACzBiB,OACA2I,EAAWjF,MAAMzH,EAAGA,GAdC,OAiBzB,OAAOkM,EAvBAU,CAAsBV,GA98B/B1M,EAAQwG,OAASA,EACjBxG,EAAQqN,WAoTR,SAAqBzG,IACdA,GAAUA,IACbA,EAAS,GAEX,OAAOJ,EAAO8G,OAAO1G,IAvTvB5G,EAAQuN,kBAAoB,GA0B5B/G,EAAOC,yBAAqDgB,IAA/B+F,EAAO/G,oBAChC+G,EAAO/G,oBAQX,WACE,IACE,IAAI6D,EAAM,IAAIxD,WAAW,GAEzB,OADAwD,EAAIvD,UAAY,CAACA,UAAWD,WAAW1E,UAAWqL,IAAK,WAAc,OAAO,KACvD,KAAdnD,EAAImD,OACiB,mBAAjBnD,EAAIoD,UACuB,IAAlCpD,EAAIoD,SAAS,EAAG,GAAGlG,WACvB,MAAOmG,GACP,OAAO,GAfPC,GAKJ5N,EAAQuG,WAAaA,IAkErBC,EAAOqH,SAAW,KAGlBrH,EAAOsH,SAAW,SAAUxD,GAE1B,OADAA,EAAIvD,UAAYP,EAAOpE,UAChBkI,GA2BT9D,EAAOW,KAAO,SAAU1F,EAAOwF,EAAkBL,GAC/C,OAAOO,EAAK,KAAM1F,EAAOwF,EAAkBL,IAGzCJ,EAAOC,sBACTD,EAAOpE,UAAU2E,UAAYD,WAAW1E,UACxCoE,EAAOO,UAAYD,WACG,oBAAXvF,QAA0BA,OAAOwM,SACxCvH,EAAOjF,OAAOwM,WAAavH,GAE7BtF,OAAOC,eAAeqF,EAAQjF,OAAOwM,QAAS,CAC5CtM,MAAO,KACPuM,cAAc,KAiCpBxH,EAAO8G,MAAQ,SAAUxE,EAAMmF,EAAMpG,GACnC,OArBF,SAAgBlB,EAAMmC,EAAMmF,EAAMpG,GAEhC,OADAgB,EAAWC,GACPA,GAAQ,EACHpC,EAAaC,EAAMmC,QAEfrB,IAATwG,EAIyB,iBAAbpG,EACVnB,EAAaC,EAAMmC,GAAMmF,KAAKA,EAAMpG,GACpCnB,EAAaC,EAAMmC,GAAMmF,KAAKA,GAE7BvH,EAAaC,EAAMmC,GAQnBwE,CAAM,KAAMxE,EAAMmF,EAAMpG,IAiBjCrB,EAAOU,YAAc,SAAU4B,GAC7B,OAAO5B,EAAY,KAAM4B,IAK3BtC,EAAO0H,gBAAkB,SAAUpF,GACjC,OAAO5B,EAAY,KAAM4B,IAiH3BtC,EAAO4B,SAAW,SAAmB2B,GACnC,QAAe,MAALA,IAAaA,EAAEoE,YAG3B3H,EAAO4H,QAAU,SAAkBC,EAAGtE,GACpC,IAAKvD,EAAO4B,SAASiG,KAAO7H,EAAO4B,SAAS2B,GAC1C,MAAM,IAAI3C,UAAU,6BAGtB,GAAIiH,IAAMtE,EAAG,OAAO,EAKpB,IAHA,IAAIuE,EAAID,EAAEzH,OACN2H,EAAIxE,EAAEnD,OAEDpG,EAAI,EAAG6H,EAAMmE,KAAKC,IAAI6B,EAAGC,GAAI/N,EAAI6H,IAAO7H,EAC/C,GAAI6N,EAAE7N,KAAOuJ,EAAEvJ,GAAI,CACjB8N,EAAID,EAAE7N,GACN+N,EAAIxE,EAAEvJ,GACN,MAIJ,OAAI8N,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,GAGT9H,EAAOsB,WAAa,SAAqBD,GACvC,OAAQtD,OAAOsD,GAAUuB,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,IAIb5C,EAAOgI,OAAS,SAAiBC,EAAM7H,GACrC,IAAKN,EAAQmI,GACX,MAAM,IAAIrH,UAAU,+CAGtB,GAAoB,IAAhBqH,EAAK7H,OACP,OAAOJ,EAAO8G,MAAM,GAGtB,IAAI9M,EACJ,QAAeiH,IAAXb,EAEF,IADAA,EAAS,EACJpG,EAAI,EAAGA,EAAIiO,EAAK7H,SAAUpG,EAC7BoG,GAAU6H,EAAKjO,GAAGoG,OAItB,IAAI4B,EAAShC,EAAOU,YAAYN,GAC5B8H,EAAM,EACV,IAAKlO,EAAI,EAAGA,EAAIiO,EAAK7H,SAAUpG,EAAG,CAChC,IAAImK,EAAM8D,EAAKjO,GACf,IAAKgG,EAAO4B,SAASuC,GACnB,MAAM,IAAIvD,UAAU,+CAEtBuD,EAAIpC,KAAKC,EAAQkG,GACjBA,GAAO/D,EAAI/D,OAEb,OAAO4B,GA8CThC,EAAOgB,WAAaA,EA0EpBhB,EAAOpE,UAAU+L,WAAY,EAQ7B3H,EAAOpE,UAAUuM,OAAS,WACxB,IAAItG,EAAM9E,KAAKqD,OACf,GAAIyB,EAAM,GAAM,EACd,MAAM,IAAIxB,WAAW,6CAEvB,IAAK,IAAIrG,EAAI,EAAGA,EAAI6H,EAAK7H,GAAK,EAC5BsJ,EAAKvG,KAAM/C,EAAGA,EAAI,GAEpB,OAAO+C,MAGTiD,EAAOpE,UAAUwM,OAAS,WACxB,IAAIvG,EAAM9E,KAAKqD,OACf,GAAIyB,EAAM,GAAM,EACd,MAAM,IAAIxB,WAAW,6CAEvB,IAAK,IAAIrG,EAAI,EAAGA,EAAI6H,EAAK7H,GAAK,EAC5BsJ,EAAKvG,KAAM/C,EAAGA,EAAI,GAClBsJ,EAAKvG,KAAM/C,EAAI,EAAGA,EAAI,GAExB,OAAO+C,MAGTiD,EAAOpE,UAAUyM,OAAS,WACxB,IAAIxG,EAAM9E,KAAKqD,OACf,GAAIyB,EAAM,GAAM,EACd,MAAM,IAAIxB,WAAW,6CAEvB,IAAK,IAAIrG,EAAI,EAAGA,EAAI6H,EAAK7H,GAAK,EAC5BsJ,EAAKvG,KAAM/C,EAAGA,EAAI,GAClBsJ,EAAKvG,KAAM/C,EAAI,EAAGA,EAAI,GACtBsJ,EAAKvG,KAAM/C,EAAI,EAAGA,EAAI,GACtBsJ,EAAKvG,KAAM/C,EAAI,EAAGA,EAAI,GAExB,OAAO+C,MAGTiD,EAAOpE,UAAU2G,SAAW,WAC1B,IAAInC,EAAuB,EAAdrD,KAAKqD,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArBkI,UAAUlI,OAAqB6C,EAAUlG,KAAM,EAAGqD,GAC/CyC,EAAa/F,MAAMC,KAAMuL,YAGlCtI,EAAOpE,UAAU2M,OAAS,SAAiBhF,GACzC,IAAKvD,EAAO4B,SAAS2B,GAAI,MAAM,IAAI3C,UAAU,6BAC7C,OAAI7D,OAASwG,GACsB,IAA5BvD,EAAO4H,QAAQ7K,KAAMwG,IAG9BvD,EAAOpE,UAAU4M,QAAU,WACzB,IAAIrD,EAAM,GACNsD,EAAMjP,EAAQuN,kBAKlB,OAJIhK,KAAKqD,OAAS,IAChB+E,EAAMpI,KAAKwF,SAAS,MAAO,EAAGkG,GAAKnL,MAAM,SAASe,KAAK,KACnDtB,KAAKqD,OAASqI,IAAKtD,GAAO,UAEzB,WAAaA,EAAM,KAG5BnF,EAAOpE,UAAUgM,QAAU,SAAkBc,EAAQ5F,EAAOC,EAAK4F,EAAWC,GAC1E,IAAK5I,EAAO4B,SAAS8G,GACnB,MAAM,IAAI9H,UAAU,6BAgBtB,QAbcK,IAAV6B,IACFA,EAAQ,QAEE7B,IAAR8B,IACFA,EAAM2F,EAASA,EAAOtI,OAAS,QAEfa,IAAd0H,IACFA,EAAY,QAEE1H,IAAZ2H,IACFA,EAAU7L,KAAKqD,QAGb0C,EAAQ,GAAKC,EAAM2F,EAAOtI,QAAUuI,EAAY,GAAKC,EAAU7L,KAAKqD,OACtE,MAAM,IAAIC,WAAW,sBAGvB,GAAIsI,GAAaC,GAAW9F,GAASC,EACnC,OAAO,EAET,GAAI4F,GAAaC,EACf,OAAQ,EAEV,GAAI9F,GAASC,EACX,OAAO,EAQT,GAAIhG,OAAS2L,EAAQ,OAAO,EAS5B,IAPA,IAAIZ,GAJJc,KAAa,IADbD,KAAe,GAMXZ,GAPJhF,KAAS,IADTD,KAAW,GASPjB,EAAMmE,KAAKC,IAAI6B,EAAGC,GAElBc,EAAW9L,KAAK0E,MAAMkH,EAAWC,GACjCE,EAAaJ,EAAOjH,MAAMqB,EAAOC,GAE5B/I,EAAI,EAAGA,EAAI6H,IAAO7H,EACzB,GAAI6O,EAAS7O,KAAO8O,EAAW9O,GAAI,CACjC8N,EAAIe,EAAS7O,GACb+N,EAAIe,EAAW9O,GACf,MAIJ,OAAI8N,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,GA6HT9H,EAAOpE,UAAUmN,SAAW,SAAmB9G,EAAKlB,EAAYM,GAC9D,OAAoD,IAA7CtE,KAAK6G,QAAQ3B,EAAKlB,EAAYM,IAGvCrB,EAAOpE,UAAUgI,QAAU,SAAkB3B,EAAKlB,EAAYM,GAC5D,OAAOmC,EAAqBzG,KAAMkF,EAAKlB,EAAYM,GAAU,IAG/DrB,EAAOpE,UAAUiI,YAAc,SAAsB5B,EAAKlB,EAAYM,GACpE,OAAOmC,EAAqBzG,KAAMkF,EAAKlB,EAAYM,GAAU,IAkD/DrB,EAAOpE,UAAU4F,MAAQ,SAAgBJ,EAAQqD,EAAQrE,EAAQiB,GAE/D,QAAeJ,IAAXwD,EACFpD,EAAW,OACXjB,EAASrD,KAAKqD,OACdqE,EAAS,OAEJ,QAAexD,IAAXb,GAA0C,iBAAXqE,EACxCpD,EAAWoD,EACXrE,EAASrD,KAAKqD,OACdqE,EAAS,MAEJ,KAAIuE,SAASvE,GAWlB,MAAM,IAAIhI,MACR,2EAXFgI,GAAkB,EACduE,SAAS5I,IACXA,GAAkB,OACDa,IAAbI,IAAwBA,EAAW,UAEvCA,EAAWjB,EACXA,OAASa,GASb,IAAI0D,EAAY5H,KAAKqD,OAASqE,EAG9B,SAFexD,IAAXb,GAAwBA,EAASuE,KAAWvE,EAASuE,GAEpDvD,EAAOhB,OAAS,IAAMA,EAAS,GAAKqE,EAAS,IAAOA,EAAS1H,KAAKqD,OACrE,MAAM,IAAIC,WAAW,0CAGlBgB,IAAUA,EAAW,QAG1B,IADA,IAAIoB,GAAc,IAEhB,OAAQpB,GACN,IAAK,MACH,OAAOmD,EAASzH,KAAMqE,EAAQqD,EAAQrE,GAExC,IAAK,OACL,IAAK,QACH,OAAO4E,EAAUjI,KAAMqE,EAAQqD,EAAQrE,GAEzC,IAAK,QACH,OAAO8E,EAAWnI,KAAMqE,EAAQqD,EAAQrE,GAE1C,IAAK,SACL,IAAK,SACH,OAAOoF,EAAYzI,KAAMqE,EAAQqD,EAAQrE,GAE3C,IAAK,SAEH,OAAOqF,EAAY1I,KAAMqE,EAAQqD,EAAQrE,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOsF,EAAU3I,KAAMqE,EAAQqD,EAAQrE,GAEzC,QACE,GAAIqC,EAAa,MAAM,IAAI7B,UAAU,qBAAuBS,GAC5DA,GAAY,GAAKA,GAAUuB,cAC3BH,GAAc,IAKtBzC,EAAOpE,UAAUqN,OAAS,WACxB,MAAO,CACL/G,KAAM,SACNC,KAAM+G,MAAMtN,UAAU6F,MAAMtH,KAAK4C,KAAKoM,MAAQpM,KAAM,KA4GxD,SAASmG,EAAYiB,EAAKrB,EAAOC,GAC/B,IAAIqG,EAAM,GACVrG,EAAMiD,KAAKC,IAAI9B,EAAI/D,OAAQ2C,GAE3B,IAAK,IAAI/I,EAAI8I,EAAO9I,EAAI+I,IAAO/I,EAC7BoP,GAAOrL,OAAO4I,aAAsB,IAATxC,EAAInK,IAEjC,OAAOoP,EAGT,SAASjG,EAAagB,EAAKrB,EAAOC,GAChC,IAAIqG,EAAM,GACVrG,EAAMiD,KAAKC,IAAI9B,EAAI/D,OAAQ2C,GAE3B,IAAK,IAAI/I,EAAI8I,EAAO9I,EAAI+I,IAAO/I,EAC7BoP,GAAOrL,OAAO4I,aAAaxC,EAAInK,IAEjC,OAAOoP,EAGT,SAASpG,EAAUmB,EAAKrB,EAAOC,GAC7B,IAAIlB,EAAMsC,EAAI/D,SAET0C,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMlB,KAAKkB,EAAMlB,GAGxC,IADA,IAAIwH,EAAM,GACDrP,EAAI8I,EAAO9I,EAAI+I,IAAO/I,EAC7BqP,GAAOC,EAAMnF,EAAInK,IAEnB,OAAOqP,EAGT,SAAShG,EAAcc,EAAKrB,EAAOC,GAGjC,IAFA,IAAIwG,EAAQpF,EAAI1C,MAAMqB,EAAOC,GACzBmD,EAAM,GACDlM,EAAI,EAAGA,EAAIuP,EAAMnJ,OAAQpG,GAAK,EACrCkM,GAAOnI,OAAO4I,aAAa4C,EAAMvP,GAAoB,IAAfuP,EAAMvP,EAAI,IAElD,OAAOkM,EA0CT,SAASsD,EAAa/E,EAAQgF,EAAKrJ,GACjC,GAAKqE,EAAS,GAAO,GAAKA,EAAS,EAAG,MAAM,IAAIpE,WAAW,sBAC3D,GAAIoE,EAASgF,EAAMrJ,EAAQ,MAAM,IAAIC,WAAW,yCA+JlD,SAASqJ,EAAUvF,EAAKlJ,EAAOwJ,EAAQgF,EAAKhB,EAAKxC,GAC/C,IAAKjG,EAAO4B,SAASuC,GAAM,MAAM,IAAIvD,UAAU,+CAC/C,GAAI3F,EAAQwN,GAAOxN,EAAQgL,EAAK,MAAM,IAAI5F,WAAW,qCACrD,GAAIoE,EAASgF,EAAMtF,EAAI/D,OAAQ,MAAM,IAAIC,WAAW,sBAkDtD,SAASsJ,EAAmBxF,EAAKlJ,EAAOwJ,EAAQmF,GAC1C3O,EAAQ,IAAGA,EAAQ,MAASA,EAAQ,GACxC,IAAK,IAAIjB,EAAI,EAAGuK,EAAIyB,KAAKC,IAAI9B,EAAI/D,OAASqE,EAAQ,GAAIzK,EAAIuK,IAAKvK,EAC7DmK,EAAIM,EAASzK,IAAMiB,EAAS,KAAS,GAAK2O,EAAe5P,EAAI,EAAIA,MAClC,GAA5B4P,EAAe5P,EAAI,EAAIA,GA8B9B,SAAS6P,EAAmB1F,EAAKlJ,EAAOwJ,EAAQmF,GAC1C3O,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C,IAAK,IAAIjB,EAAI,EAAGuK,EAAIyB,KAAKC,IAAI9B,EAAI/D,OAASqE,EAAQ,GAAIzK,EAAIuK,IAAKvK,EAC7DmK,EAAIM,EAASzK,GAAMiB,IAAuC,GAA5B2O,EAAe5P,EAAI,EAAIA,GAAU,IAmJnE,SAAS8P,EAAc3F,EAAKlJ,EAAOwJ,EAAQgF,EAAKhB,EAAKxC,GACnD,GAAIxB,EAASgF,EAAMtF,EAAI/D,OAAQ,MAAM,IAAIC,WAAW,sBACpD,GAAIoE,EAAS,EAAG,MAAM,IAAIpE,WAAW,sBAGvC,SAAS0J,EAAY5F,EAAKlJ,EAAOwJ,EAAQmF,EAAcI,GAKrD,OAJKA,GACHF,EAAa3F,EAAKlJ,EAAOwJ,EAAQ,GAEnC5E,EAAQ2B,MAAM2C,EAAKlJ,EAAOwJ,EAAQmF,EAAc,GAAI,GAC7CnF,EAAS,EAWlB,SAASwF,EAAa9F,EAAKlJ,EAAOwJ,EAAQmF,EAAcI,GAKtD,OAJKA,GACHF,EAAa3F,EAAKlJ,EAAOwJ,EAAQ,GAEnC5E,EAAQ2B,MAAM2C,EAAKlJ,EAAOwJ,EAAQmF,EAAc,GAAI,GAC7CnF,EAAS,EA/clBzE,EAAOpE,UAAU6F,MAAQ,SAAgBqB,EAAOC,GAC9C,IAoBImH,EApBArI,EAAM9E,KAAKqD,OAqBf,IApBA0C,IAAUA,GAGE,GACVA,GAASjB,GACG,IAAGiB,EAAQ,GACdA,EAAQjB,IACjBiB,EAAQjB,IANVkB,OAAc9B,IAAR8B,EAAoBlB,IAAQkB,GASxB,GACRA,GAAOlB,GACG,IAAGkB,EAAM,GACVA,EAAMlB,IACfkB,EAAMlB,GAGJkB,EAAMD,IAAOC,EAAMD,GAGnB9C,EAAOC,qBACTiK,EAASnN,KAAKmK,SAASpE,EAAOC,IACvBxC,UAAYP,EAAOpE,cACrB,CACL,IAAIuO,EAAWpH,EAAMD,EACrBoH,EAAS,IAAIlK,EAAOmK,OAAUlJ,GAC9B,IAAK,IAAIjH,EAAI,EAAGA,EAAImQ,IAAYnQ,EAC9BkQ,EAAOlQ,GAAK+C,KAAK/C,EAAI8I,GAIzB,OAAOoH,GAWTlK,EAAOpE,UAAUwO,WAAa,SAAqB3F,EAAQzD,EAAYgJ,GACrEvF,GAAkB,EAClBzD,GAA0B,EACrBgJ,GAAUR,EAAY/E,EAAQzD,EAAYjE,KAAKqD,QAKpD,IAHA,IAAI6B,EAAMlF,KAAK0H,GACX4F,EAAM,EACNrQ,EAAI,IACCA,EAAIgH,IAAeqJ,GAAO,MACjCpI,GAAOlF,KAAK0H,EAASzK,GAAKqQ,EAG5B,OAAOpI,GAGTjC,EAAOpE,UAAU0O,WAAa,SAAqB7F,EAAQzD,EAAYgJ,GACrEvF,GAAkB,EAClBzD,GAA0B,EACrBgJ,GACHR,EAAY/E,EAAQzD,EAAYjE,KAAKqD,QAKvC,IAFA,IAAI6B,EAAMlF,KAAK0H,IAAWzD,GACtBqJ,EAAM,EACHrJ,EAAa,IAAMqJ,GAAO,MAC/BpI,GAAOlF,KAAK0H,IAAWzD,GAAcqJ,EAGvC,OAAOpI,GAGTjC,EAAOpE,UAAU2O,UAAY,SAAoB9F,EAAQuF,GAEvD,OADKA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QACpCrD,KAAK0H,IAGdzE,EAAOpE,UAAU4O,aAAe,SAAuB/F,EAAQuF,GAE7D,OADKA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QACpCrD,KAAK0H,GAAW1H,KAAK0H,EAAS,IAAM,GAG7CzE,EAAOpE,UAAUwI,aAAe,SAAuBK,EAAQuF,GAE7D,OADKA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QACnCrD,KAAK0H,IAAW,EAAK1H,KAAK0H,EAAS,IAG7CzE,EAAOpE,UAAU6O,aAAe,SAAuBhG,EAAQuF,GAG7D,OAFKA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,SAElCrD,KAAK0H,GACT1H,KAAK0H,EAAS,IAAM,EACpB1H,KAAK0H,EAAS,IAAM,IACD,SAAnB1H,KAAK0H,EAAS,IAGrBzE,EAAOpE,UAAU8O,aAAe,SAAuBjG,EAAQuF,GAG7D,OAFKA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QAEpB,SAAfrD,KAAK0H,IACT1H,KAAK0H,EAAS,IAAM,GACrB1H,KAAK0H,EAAS,IAAM,EACrB1H,KAAK0H,EAAS,KAGlBzE,EAAOpE,UAAU+O,UAAY,SAAoBlG,EAAQzD,EAAYgJ,GACnEvF,GAAkB,EAClBzD,GAA0B,EACrBgJ,GAAUR,EAAY/E,EAAQzD,EAAYjE,KAAKqD,QAKpD,IAHA,IAAI6B,EAAMlF,KAAK0H,GACX4F,EAAM,EACNrQ,EAAI,IACCA,EAAIgH,IAAeqJ,GAAO,MACjCpI,GAAOlF,KAAK0H,EAASzK,GAAKqQ,EAM5B,OAFIpI,IAFJoI,GAAO,OAESpI,GAAO+D,KAAK4E,IAAI,EAAG,EAAI5J,IAEhCiB,GAGTjC,EAAOpE,UAAUiP,UAAY,SAAoBpG,EAAQzD,EAAYgJ,GACnEvF,GAAkB,EAClBzD,GAA0B,EACrBgJ,GAAUR,EAAY/E,EAAQzD,EAAYjE,KAAKqD,QAKpD,IAHA,IAAIpG,EAAIgH,EACJqJ,EAAM,EACNpI,EAAMlF,KAAK0H,IAAWzK,GACnBA,EAAI,IAAMqQ,GAAO,MACtBpI,GAAOlF,KAAK0H,IAAWzK,GAAKqQ,EAM9B,OAFIpI,IAFJoI,GAAO,OAESpI,GAAO+D,KAAK4E,IAAI,EAAG,EAAI5J,IAEhCiB,GAGTjC,EAAOpE,UAAUkP,SAAW,SAAmBrG,EAAQuF,GAErD,OADKA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QACtB,IAAfrD,KAAK0H,IAC0B,GAA5B,IAAO1H,KAAK0H,GAAU,GADK1H,KAAK0H,IAI3CzE,EAAOpE,UAAUmP,YAAc,SAAsBtG,EAAQuF,GACtDA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QAC3C,IAAI6B,EAAMlF,KAAK0H,GAAW1H,KAAK0H,EAAS,IAAM,EAC9C,OAAc,MAANxC,EAAsB,WAANA,EAAmBA,GAG7CjC,EAAOpE,UAAUoP,YAAc,SAAsBvG,EAAQuF,GACtDA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QAC3C,IAAI6B,EAAMlF,KAAK0H,EAAS,GAAM1H,KAAK0H,IAAW,EAC9C,OAAc,MAANxC,EAAsB,WAANA,EAAmBA,GAG7CjC,EAAOpE,UAAUqP,YAAc,SAAsBxG,EAAQuF,GAG3D,OAFKA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QAEnCrD,KAAK0H,GACV1H,KAAK0H,EAAS,IAAM,EACpB1H,KAAK0H,EAAS,IAAM,GACpB1H,KAAK0H,EAAS,IAAM,IAGzBzE,EAAOpE,UAAUsP,YAAc,SAAsBzG,EAAQuF,GAG3D,OAFKA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QAEnCrD,KAAK0H,IAAW,GACrB1H,KAAK0H,EAAS,IAAM,GACpB1H,KAAK0H,EAAS,IAAM,EACpB1H,KAAK0H,EAAS,IAGnBzE,EAAOpE,UAAUuP,YAAc,SAAsB1G,EAAQuF,GAE3D,OADKA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QACpCP,EAAQqE,KAAKnH,KAAM0H,GAAQ,EAAM,GAAI,IAG9CzE,EAAOpE,UAAUwP,YAAc,SAAsB3G,EAAQuF,GAE3D,OADKA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QACpCP,EAAQqE,KAAKnH,KAAM0H,GAAQ,EAAO,GAAI,IAG/CzE,EAAOpE,UAAUyP,aAAe,SAAuB5G,EAAQuF,GAE7D,OADKA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QACpCP,EAAQqE,KAAKnH,KAAM0H,GAAQ,EAAM,GAAI,IAG9CzE,EAAOpE,UAAU0P,aAAe,SAAuB7G,EAAQuF,GAE7D,OADKA,GAAUR,EAAY/E,EAAQ,EAAG1H,KAAKqD,QACpCP,EAAQqE,KAAKnH,KAAM0H,GAAQ,EAAO,GAAI,IAS/CzE,EAAOpE,UAAU2P,YAAc,SAAsBtQ,EAAOwJ,EAAQzD,EAAYgJ,IAC9E/O,GAASA,EACTwJ,GAAkB,EAClBzD,GAA0B,EACrBgJ,IAEHN,EAAS3M,KAAM9B,EAAOwJ,EAAQzD,EADfgF,KAAK4E,IAAI,EAAG,EAAI5J,GAAc,EACO,GAGtD,IAAIqJ,EAAM,EACNrQ,EAAI,EAER,IADA+C,KAAK0H,GAAkB,IAARxJ,IACNjB,EAAIgH,IAAeqJ,GAAO,MACjCtN,KAAK0H,EAASzK,GAAMiB,EAAQoP,EAAO,IAGrC,OAAO5F,EAASzD,GAGlBhB,EAAOpE,UAAU4P,YAAc,SAAsBvQ,EAAOwJ,EAAQzD,EAAYgJ,IAC9E/O,GAASA,EACTwJ,GAAkB,EAClBzD,GAA0B,EACrBgJ,IAEHN,EAAS3M,KAAM9B,EAAOwJ,EAAQzD,EADfgF,KAAK4E,IAAI,EAAG,EAAI5J,GAAc,EACO,GAGtD,IAAIhH,EAAIgH,EAAa,EACjBqJ,EAAM,EAEV,IADAtN,KAAK0H,EAASzK,GAAa,IAARiB,IACVjB,GAAK,IAAMqQ,GAAO,MACzBtN,KAAK0H,EAASzK,GAAMiB,EAAQoP,EAAO,IAGrC,OAAO5F,EAASzD,GAGlBhB,EAAOpE,UAAU6P,WAAa,SAAqBxQ,EAAOwJ,EAAQuF,GAMhE,OALA/O,GAASA,EACTwJ,GAAkB,EACbuF,GAAUN,EAAS3M,KAAM9B,EAAOwJ,EAAQ,EAAG,IAAM,GACjDzE,EAAOC,sBAAqBhF,EAAQ+K,KAAK0F,MAAMzQ,IACpD8B,KAAK0H,GAAmB,IAARxJ,EACTwJ,EAAS,GAWlBzE,EAAOpE,UAAU+P,cAAgB,SAAwB1Q,EAAOwJ,EAAQuF,GAUtE,OATA/O,GAASA,EACTwJ,GAAkB,EACbuF,GAAUN,EAAS3M,KAAM9B,EAAOwJ,EAAQ,EAAG,MAAQ,GACpDzE,EAAOC,qBACTlD,KAAK0H,GAAmB,IAARxJ,EAChB8B,KAAK0H,EAAS,GAAMxJ,IAAU,GAE9B0O,EAAkB5M,KAAM9B,EAAOwJ,GAAQ,GAElCA,EAAS,GAGlBzE,EAAOpE,UAAUgQ,cAAgB,SAAwB3Q,EAAOwJ,EAAQuF,GAUtE,OATA/O,GAASA,EACTwJ,GAAkB,EACbuF,GAAUN,EAAS3M,KAAM9B,EAAOwJ,EAAQ,EAAG,MAAQ,GACpDzE,EAAOC,qBACTlD,KAAK0H,GAAWxJ,IAAU,EAC1B8B,KAAK0H,EAAS,GAAc,IAARxJ,GAEpB0O,EAAkB5M,KAAM9B,EAAOwJ,GAAQ,GAElCA,EAAS,GAUlBzE,EAAOpE,UAAUiQ,cAAgB,SAAwB5Q,EAAOwJ,EAAQuF,GAYtE,OAXA/O,GAASA,EACTwJ,GAAkB,EACbuF,GAAUN,EAAS3M,KAAM9B,EAAOwJ,EAAQ,EAAG,WAAY,GACxDzE,EAAOC,qBACTlD,KAAK0H,EAAS,GAAMxJ,IAAU,GAC9B8B,KAAK0H,EAAS,GAAMxJ,IAAU,GAC9B8B,KAAK0H,EAAS,GAAMxJ,IAAU,EAC9B8B,KAAK0H,GAAmB,IAARxJ,GAEhB4O,EAAkB9M,KAAM9B,EAAOwJ,GAAQ,GAElCA,EAAS,GAGlBzE,EAAOpE,UAAUkQ,cAAgB,SAAwB7Q,EAAOwJ,EAAQuF,GAYtE,OAXA/O,GAASA,EACTwJ,GAAkB,EACbuF,GAAUN,EAAS3M,KAAM9B,EAAOwJ,EAAQ,EAAG,WAAY,GACxDzE,EAAOC,qBACTlD,KAAK0H,GAAWxJ,IAAU,GAC1B8B,KAAK0H,EAAS,GAAMxJ,IAAU,GAC9B8B,KAAK0H,EAAS,GAAMxJ,IAAU,EAC9B8B,KAAK0H,EAAS,GAAc,IAARxJ,GAEpB4O,EAAkB9M,KAAM9B,EAAOwJ,GAAQ,GAElCA,EAAS,GAGlBzE,EAAOpE,UAAUmQ,WAAa,SAAqB9Q,EAAOwJ,EAAQzD,EAAYgJ,GAG5E,GAFA/O,GAASA,EACTwJ,GAAkB,GACbuF,EAAU,CACb,IAAIgC,EAAQhG,KAAK4E,IAAI,EAAG,EAAI5J,EAAa,GAEzC0I,EAAS3M,KAAM9B,EAAOwJ,EAAQzD,EAAYgL,EAAQ,GAAIA,GAGxD,IAAIhS,EAAI,EACJqQ,EAAM,EACN4B,EAAM,EAEV,IADAlP,KAAK0H,GAAkB,IAARxJ,IACNjB,EAAIgH,IAAeqJ,GAAO,MAC7BpP,EAAQ,GAAa,IAARgR,GAAsC,IAAzBlP,KAAK0H,EAASzK,EAAI,KAC9CiS,EAAM,GAERlP,KAAK0H,EAASzK,IAAOiB,EAAQoP,GAAQ,GAAK4B,EAAM,IAGlD,OAAOxH,EAASzD,GAGlBhB,EAAOpE,UAAUsQ,WAAa,SAAqBjR,EAAOwJ,EAAQzD,EAAYgJ,GAG5E,GAFA/O,GAASA,EACTwJ,GAAkB,GACbuF,EAAU,CACb,IAAIgC,EAAQhG,KAAK4E,IAAI,EAAG,EAAI5J,EAAa,GAEzC0I,EAAS3M,KAAM9B,EAAOwJ,EAAQzD,EAAYgL,EAAQ,GAAIA,GAGxD,IAAIhS,EAAIgH,EAAa,EACjBqJ,EAAM,EACN4B,EAAM,EAEV,IADAlP,KAAK0H,EAASzK,GAAa,IAARiB,IACVjB,GAAK,IAAMqQ,GAAO,MACrBpP,EAAQ,GAAa,IAARgR,GAAsC,IAAzBlP,KAAK0H,EAASzK,EAAI,KAC9CiS,EAAM,GAERlP,KAAK0H,EAASzK,IAAOiB,EAAQoP,GAAQ,GAAK4B,EAAM,IAGlD,OAAOxH,EAASzD,GAGlBhB,EAAOpE,UAAUuQ,UAAY,SAAoBlR,EAAOwJ,EAAQuF,GAO9D,OANA/O,GAASA,EACTwJ,GAAkB,EACbuF,GAAUN,EAAS3M,KAAM9B,EAAOwJ,EAAQ,EAAG,KAAO,KAClDzE,EAAOC,sBAAqBhF,EAAQ+K,KAAK0F,MAAMzQ,IAChDA,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtC8B,KAAK0H,GAAmB,IAARxJ,EACTwJ,EAAS,GAGlBzE,EAAOpE,UAAUwQ,aAAe,SAAuBnR,EAAOwJ,EAAQuF,GAUpE,OATA/O,GAASA,EACTwJ,GAAkB,EACbuF,GAAUN,EAAS3M,KAAM9B,EAAOwJ,EAAQ,EAAG,OAAS,OACrDzE,EAAOC,qBACTlD,KAAK0H,GAAmB,IAARxJ,EAChB8B,KAAK0H,EAAS,GAAMxJ,IAAU,GAE9B0O,EAAkB5M,KAAM9B,EAAOwJ,GAAQ,GAElCA,EAAS,GAGlBzE,EAAOpE,UAAUyQ,aAAe,SAAuBpR,EAAOwJ,EAAQuF,GAUpE,OATA/O,GAASA,EACTwJ,GAAkB,EACbuF,GAAUN,EAAS3M,KAAM9B,EAAOwJ,EAAQ,EAAG,OAAS,OACrDzE,EAAOC,qBACTlD,KAAK0H,GAAWxJ,IAAU,EAC1B8B,KAAK0H,EAAS,GAAc,IAARxJ,GAEpB0O,EAAkB5M,KAAM9B,EAAOwJ,GAAQ,GAElCA,EAAS,GAGlBzE,EAAOpE,UAAU0Q,aAAe,SAAuBrR,EAAOwJ,EAAQuF,GAYpE,OAXA/O,GAASA,EACTwJ,GAAkB,EACbuF,GAAUN,EAAS3M,KAAM9B,EAAOwJ,EAAQ,EAAG,YAAa,YACzDzE,EAAOC,qBACTlD,KAAK0H,GAAmB,IAARxJ,EAChB8B,KAAK0H,EAAS,GAAMxJ,IAAU,EAC9B8B,KAAK0H,EAAS,GAAMxJ,IAAU,GAC9B8B,KAAK0H,EAAS,GAAMxJ,IAAU,IAE9B4O,EAAkB9M,KAAM9B,EAAOwJ,GAAQ,GAElCA,EAAS,GAGlBzE,EAAOpE,UAAU2Q,aAAe,SAAuBtR,EAAOwJ,EAAQuF,GAapE,OAZA/O,GAASA,EACTwJ,GAAkB,EACbuF,GAAUN,EAAS3M,KAAM9B,EAAOwJ,EAAQ,EAAG,YAAa,YACzDxJ,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GACxC+E,EAAOC,qBACTlD,KAAK0H,GAAWxJ,IAAU,GAC1B8B,KAAK0H,EAAS,GAAMxJ,IAAU,GAC9B8B,KAAK0H,EAAS,GAAMxJ,IAAU,EAC9B8B,KAAK0H,EAAS,GAAc,IAARxJ,GAEpB4O,EAAkB9M,KAAM9B,EAAOwJ,GAAQ,GAElCA,EAAS,GAgBlBzE,EAAOpE,UAAU4Q,aAAe,SAAuBvR,EAAOwJ,EAAQuF,GACpE,OAAOD,EAAWhN,KAAM9B,EAAOwJ,GAAQ,EAAMuF,IAG/ChK,EAAOpE,UAAU6Q,aAAe,SAAuBxR,EAAOwJ,EAAQuF,GACpE,OAAOD,EAAWhN,KAAM9B,EAAOwJ,GAAQ,EAAOuF,IAWhDhK,EAAOpE,UAAU8Q,cAAgB,SAAwBzR,EAAOwJ,EAAQuF,GACtE,OAAOC,EAAYlN,KAAM9B,EAAOwJ,GAAQ,EAAMuF,IAGhDhK,EAAOpE,UAAU+Q,cAAgB,SAAwB1R,EAAOwJ,EAAQuF,GACtE,OAAOC,EAAYlN,KAAM9B,EAAOwJ,GAAQ,EAAOuF,IAIjDhK,EAAOpE,UAAUmG,KAAO,SAAe2G,EAAQkE,EAAa9J,EAAOC,GAQjE,GAPKD,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAMhG,KAAKqD,QAC9BwM,GAAelE,EAAOtI,SAAQwM,EAAclE,EAAOtI,QAClDwM,IAAaA,EAAc,GAC5B7J,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlB4F,EAAOtI,QAAgC,IAAhBrD,KAAKqD,OAAc,OAAO,EAGrD,GAAIwM,EAAc,EAChB,MAAM,IAAIvM,WAAW,6BAEvB,GAAIyC,EAAQ,GAAKA,GAAS/F,KAAKqD,OAAQ,MAAM,IAAIC,WAAW,6BAC5D,GAAI0C,EAAM,EAAG,MAAM,IAAI1C,WAAW,2BAG9B0C,EAAMhG,KAAKqD,SAAQ2C,EAAMhG,KAAKqD,QAC9BsI,EAAOtI,OAASwM,EAAc7J,EAAMD,IACtCC,EAAM2F,EAAOtI,OAASwM,EAAc9J,GAGtC,IACI9I,EADA6H,EAAMkB,EAAMD,EAGhB,GAAI/F,OAAS2L,GAAU5F,EAAQ8J,GAAeA,EAAc7J,EAE1D,IAAK/I,EAAI6H,EAAM,EAAG7H,GAAK,IAAKA,EAC1B0O,EAAO1O,EAAI4S,GAAe7P,KAAK/C,EAAI8I,QAEhC,GAAIjB,EAAM,MAAS7B,EAAOC,oBAE/B,IAAKjG,EAAI,EAAGA,EAAI6H,IAAO7H,EACrB0O,EAAO1O,EAAI4S,GAAe7P,KAAK/C,EAAI8I,QAGrCxC,WAAW1E,UAAUiR,IAAI1S,KACvBuO,EACA3L,KAAKmK,SAASpE,EAAOA,EAAQjB,GAC7B+K,GAIJ,OAAO/K,GAOT7B,EAAOpE,UAAU6L,KAAO,SAAexF,EAAKa,EAAOC,EAAK1B,GAEtD,GAAmB,iBAARY,EAAkB,CAS3B,GARqB,iBAAVa,GACTzB,EAAWyB,EACXA,EAAQ,EACRC,EAAMhG,KAAKqD,QACa,iBAAR2C,IAChB1B,EAAW0B,EACXA,EAAMhG,KAAKqD,QAEM,IAAf6B,EAAI7B,OAAc,CACpB,IAAI0M,EAAO7K,EAAIqD,WAAW,GACtBwH,EAAO,MACT7K,EAAM6K,GAGV,QAAiB7L,IAAbI,GAA8C,iBAAbA,EACnC,MAAM,IAAIT,UAAU,6BAEtB,GAAwB,iBAAbS,IAA0BrB,EAAOsB,WAAWD,GACrD,MAAM,IAAIT,UAAU,qBAAuBS,OAErB,iBAARY,IAChBA,GAAY,KAId,GAAIa,EAAQ,GAAK/F,KAAKqD,OAAS0C,GAAS/F,KAAKqD,OAAS2C,EACpD,MAAM,IAAI1C,WAAW,sBAGvB,GAAI0C,GAAOD,EACT,OAAO/F,KAQT,IAAI/C,EACJ,GANA8I,KAAkB,EAClBC,OAAc9B,IAAR8B,EAAoBhG,KAAKqD,OAAS2C,IAAQ,EAE3Cd,IAAKA,EAAM,GAGG,iBAARA,EACT,IAAKjI,EAAI8I,EAAO9I,EAAI+I,IAAO/I,EACzB+C,KAAK/C,GAAKiI,MAEP,CACL,IAAIsH,EAAQvJ,EAAO4B,SAASK,GACxBA,EACAS,EAAY,IAAI1C,EAAOiC,EAAKZ,GAAUkB,YACtCV,EAAM0H,EAAMnJ,OAChB,IAAKpG,EAAI,EAAGA,EAAI+I,EAAMD,IAAS9I,EAC7B+C,KAAK/C,EAAI8I,GAASyG,EAAMvP,EAAI6H,GAIhC,OAAO9E,MAMT,IAAIgQ,EAAoB,qBAmBxB,SAASzD,EAAO7N,GACd,OAAIA,EAAI,GAAW,IAAMA,EAAE8G,SAAS,IAC7B9G,EAAE8G,SAAS,IAGpB,SAASG,EAAatB,EAAQuE,GAE5B,IAAIa,EADJb,EAAQA,GAASqH,IAMjB,IAJA,IAAI5M,EAASgB,EAAOhB,OAChB6M,EAAgB,KAChB1D,EAAQ,GAEHvP,EAAI,EAAGA,EAAIoG,IAAUpG,EAAG,CAI/B,IAHAwM,EAAYpF,EAAOkE,WAAWtL,IAGd,OAAUwM,EAAY,MAAQ,CAE5C,IAAKyG,EAAe,CAElB,GAAIzG,EAAY,MAAQ,EAEjBb,GAAS,IAAM,GAAG4D,EAAMlE,KAAK,IAAM,IAAM,KAC9C,SACK,GAAIrL,EAAI,IAAMoG,EAAQ,EAEtBuF,GAAS,IAAM,GAAG4D,EAAMlE,KAAK,IAAM,IAAM,KAC9C,SAIF4H,EAAgBzG,EAEhB,SAIF,GAAIA,EAAY,MAAQ,EACjBb,GAAS,IAAM,GAAG4D,EAAMlE,KAAK,IAAM,IAAM,KAC9C4H,EAAgBzG,EAChB,SAIFA,EAAkE,OAArDyG,EAAgB,OAAU,GAAKzG,EAAY,YAC/CyG,IAEJtH,GAAS,IAAM,GAAG4D,EAAMlE,KAAK,IAAM,IAAM,KAMhD,GAHA4H,EAAgB,KAGZzG,EAAY,IAAM,CACpB,IAAKb,GAAS,GAAK,EAAG,MACtB4D,EAAMlE,KAAKmB,QACN,GAAIA,EAAY,KAAO,CAC5B,IAAKb,GAAS,GAAK,EAAG,MACtB4D,EAAMlE,KACJmB,GAAa,EAAM,IACP,GAAZA,EAAmB,UAEhB,GAAIA,EAAY,MAAS,CAC9B,IAAKb,GAAS,GAAK,EAAG,MACtB4D,EAAMlE,KACJmB,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,SAEhB,MAAIA,EAAY,SASrB,MAAM,IAAI/J,MAAM,sBARhB,IAAKkJ,GAAS,GAAK,EAAG,MACtB4D,EAAMlE,KACJmB,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,MAOzB,OAAO+C,EA4BT,SAAS5G,EAAewC,GACtB,OAAOvF,EAAOsN,YAhIhB,SAAsB/H,GAIpB,IAFAA,EAUF,SAAqBA,GACnB,OAAIA,EAAIgI,KAAahI,EAAIgI,OAClBhI,EAAIjH,QAAQ,aAAc,IAZ3BkP,CAAWjI,GAAKjH,QAAQ6O,EAAmB,KAEzC3M,OAAS,EAAG,MAAO,GAE3B,KAAO+E,EAAI/E,OAAS,GAAM,GACxB+E,GAAY,IAEd,OAAOA,EAuHmBkI,CAAYlI,IAGxC,SAASF,EAAYqI,EAAKC,EAAK9I,EAAQrE,GACrC,IAAK,IAAIpG,EAAI,EAAGA,EAAIoG,KACbpG,EAAIyK,GAAU8I,EAAInN,QAAYpG,GAAKsT,EAAIlN,UADhBpG,EAE5BuT,EAAIvT,EAAIyK,GAAU6I,EAAItT,GAExB,OAAOA,K,mICvvDT,yCACA,mCACA,6CACA,4CACA,wDACA,0CAEIwT,kBAQS,QAAAC,oBAAsB,sBAAAvR,qBAAoB,SAACwR,iBAAA,IAAAA,yBAAA,GAC9C,IAAA/Q,YAAA,OAAAA,YAER,OAAK+Q,YAAcF,kBACVA,kBAGFhP,KACL,mBAAAf,kBAAiB,WACf,IAAIgB,EAyBAkP,EACAC,EAxBJ,IACEnP,EAAa,mBAAAlB,oBAAsB,mBAAAC,4BAA4B,kBAC/D,MAAOjB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,0CAG3D,IAEI,mBAAAgB,oBACAkB,EAAWI,KACTlC,YAAYmC,2BACZnC,YAAYoC,iBACZpC,YAAYqC,oCAGhB,MAAOzC,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,iCAM3D,KACEoR,EAAoB,mBAAApQ,oBAAsBkB,EAAWQ,gBAGnD0O,EACE,mBAAApQ,oBAAsBoQ,EAAkBxO,KAAKxC,YAAYkR,qCAM3DF,EACE,mBAAApQ,oBACAoQ,EAAkBxO,KAChBxC,YAAYmR,2CACZ,YAAAC,8BAGJH,EAAyB,mBAAArQ,oBAAsBoQ,EAAkBzO,OAEnE,MAAO3C,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,wCAG3D,IAAKqR,EACH,MAAM,IAAInR,MAAM,8BAGlB,IAAMuR,EAAiC,GAEvC,IACE,KAAOJ,GAAwB,CAC7B,IAAMhP,EACJ,mBAAArB,oBAAsBoQ,EAAkBtO,KAAKuO,GAE/CI,EAAgB3I,KACd,IAAI,cAAA4I,YACFrP,EACA,qBAAAW,mBAAmB,mBAAAhC,oBAAsBqB,EAAiBsP,aAC1D,mBAAA3Q,oBAAsBqB,EAAiBuP,WACvC,mBAAA5Q,oBAAsBqB,EAAiBsP,YACvC,mBAAA3Q,oBAAsBqB,EAAiBwP,WACvC,mBAAA7Q,oBAAsBqB,EAAiByP,cACvC,mBAAA9Q,oBAAsBqB,EAAiB0P,cAI3CV,KAEF,MAAOrR,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,iCAO3D,OAJAkC,EAAWa,QAEXkO,kBAAoBQ,U,iHC/G1B,iDACA,wDACA,0CASa,QAAAO,aAAe,sBAAArS,qBAAoB,SAAUsS,UACxD,IAAM5P,iBAAoB7B,KAAqB0R,kBAE/C,OAAOjQ,KACL,mBAAAf,kBAAiB,WACf,IAAIiR,EAEJ,IACEA,EAAgB,mBAAAnR,oBAAsBqB,iBAAiB4P,UACvD,MAAOjS,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,+CAG3D,OAAOmS,U,iHC1Bb,iDACA,wDACA,0CAYa,QAAAC,cAAgB,sBAAAzS,qBAC3B,WACE,IAAM0S,QAAU,CACdC,aAAc,KACdC,WAAY,MAGd,OAAOtQ,KACL,mBAAAf,kBAAiB,WACf,IAAIsR,EAEJ,IACEA,EAAa,mBAAAxR,oBAAsB,mBAAAC,4BAA4B,kBAE/DoR,QAAQC,aAAe,mBAAAtR,oBAAsBwR,EAAWC,cACxDJ,QAAQE,WAAa,mBAAAvR,oBAAsBwR,EAAWE,aAEjDL,QAAQC,eACXD,QAAQC,aAAe,mBAAAtR,oBAAsBwR,EAAWG,SAG1DN,QAAQC,aAAe,mBAAAtR,oBAAsBqR,QAAQC,aAAatM,WAClEqM,QAAQE,WAAa,mBAAAvR,oBAAsBqR,QAAQE,WAAWvM,WAC9D,MAAOhG,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,6CAG3D,OAAOqS,gB,0IC3Cf,S,4ICAA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,U,68CCdA,WACA,OAQa,EAAAO,eAAiB,EAAAjT,qBAC5B,SAAOqC,GAAkB,0C,0DACvB,IAAKA,EACH,MAAM,IAAI9B,MAAM,uBAG2B,SAAM,EAAAgR,uB,OAGnD,GAHM2B,EAAuC,WACvCC,EAAgCD,EAAsBE,MAAK,SAACC,GAAS,OAAAA,EAAKhR,aAAeA,MAG7F,MAAM,IAAI9B,MAAM,6BAA6B8B,EAAU,eAGzD,MAAO,CAAP,EAAO8Q,c,0BCvBT,WAEA,IAAGzV,OAAO+C,YAAV,CAGA,IAAI6S,aACAC,gBAAkB,EAClBC,cACAC,eACAC,QAAU,EACVC,UAAY,EACZC,SAAW,EACXC,SAAW,EACX3T,aAAexC,OAAO0C,QACtB0T,mCAAoC,EACpCrT,YAIFA,YAFCP,WAEa,IAAIE,SAAQ,SAAS2T,EAASC,GAE1CP,eAAiBM,EACjBP,cAAgBQ,KAIJ,GAmBhB,IAAIC,aAAeC,gBAuWfC,sCAAwC,CAC1CC,eAAiB,EACjBC,UAAY,GAGZC,kBAAoB,SAA2BC,EAAYC,GACzD,IAAIhT,EAAW2S,sCAAsCE,UAAUE,GAC1D/S,GACLA,EAASZ,MAAM,KAAK4T,IAOtBvW,KAAO,SAAcwW,EAAc3T,EAAMU,GACvC,IAAIkT,EAAclT,GAAgC,mBAAbA,EACjC+S,EAAaG,EAAcP,sCAAsCC,iBAAmB,EAEpFM,IACFP,sCAAsCE,UAAUE,GAAc/S,GAEhE,IAAImT,EAASC,SAASC,cAAc,UAChCC,EAAU,IAAI9H,MAAM,gBACxB,IACE2H,EAAOI,aAAa,MAAO,gBAAkBN,EAAe,IAAMF,EAAY,IAAMS,mBAAmBC,KAAKC,UAAUpU,EAAMgU,KAC5H,MAAM7J,GACNkK,MAAMlK,GAER2J,SAASQ,gBAAgBC,YAAYV,GACrCA,EAAOW,WAAWC,YAAYZ,GAC9BA,EAAS,OAmQblU,YAAY+U,gBAAkB,QAC9B/U,YAAYgV,YAAcA,YAC1BhV,YAAYkQ,IAAM+E,iBAClBjV,YAAYC,cAAgBA,cAC5BD,YAAYO,aAAeA,aAC3BP,YAAYkV,oBAAsBA,oBAE/BC,6BAEDnV,YAAYiB,kBAAoBA,kBAChCjB,YAAYoV,qBAAuBA,sBAGjCD,6BAEFnV,YAAYqV,aAAeA,cAG1BpY,OAAOqY,yBAERC,WAAWC,mBAAoBvY,OAAOqY,0BAItCC,WAAWC,mBAAoB,KAGjCC,qBAEAzV,YAAY0V,kBAAoB1V,YAAYE,gBAC5CjD,OAAO+C,YAAcA,YACrB2V,uBAxrBA,SAASlC,gBACP,IAA6BmC,EAAzBC,EAAIC,UAAUC,UAAgBC,EAAGH,EAAGlV,MAAM,2EAA6E,GAC3H,MAAG,WAAWF,KAAKuV,EAAE,IAEZ,CAAEpY,KAAK,KAAMqY,SADpBL,EAAO,kBAAkBM,KAAKL,IAAO,IACJ,IAAM,IAE7B,WAATG,EAAE,IAEQ,OADXJ,EAAMC,EAAGlV,MAAM,iCAEN,CAAE/C,KAAMgY,EAAI,GAAGrU,QAAQ,MAAO,SAAU0U,QAASL,EAAI,KAEhEI,EAAGA,EAAE,GAAI,CAACA,EAAE,GAAIA,EAAE,IAAK,CAACF,UAAUK,QAASL,UAAUM,WAAY,MACtB,OAAtCR,EAAMC,EAAGlV,MAAM,qBAClBqV,EAAEK,OAAO,EAAG,EAAGT,EAAI,IACd,CAAChY,KAAKoY,EAAE,GAAGC,QAAQD,EAAE,KAI9B,SAASM,kBAAkBC,EAAOC,GAEhC,GAAuB,oBAAd,QAET,OAAID,GAASvW,YAAY0V,mBACnBa,IAAUvW,YAAYyW,iBACxB5W,QAAQ6W,IAAI,YAAaF,GACvBD,IAAUvW,YAAY2W,gBACxB9W,QAAQ+W,KAAK,WAAYJ,QACvBD,IAAUvW,YAAYE,iBACxBL,QAAQD,MAAM,YAAa4W,UAN/B,EAWF,SAASvW,cAAcsW,GACdA,IAAUvW,YAAYyW,iBAC1BF,IAAUvW,YAAY2W,gBACtBJ,IAAUvW,YAAYE,iBAIzBF,YAAY0V,kBAAoBa,EAC5BvW,YAAY0V,oBAAsB1V,YAAYyW,iBAChDH,kBAAkBtW,YAAY2W,eAAgB,yCAC5C3W,YAAY0V,oBAAsB1V,YAAY2W,gBAChDL,kBAAkBtW,YAAY2W,eAAgB,wCAC5C3W,YAAY0V,oBAAsB1V,YAAYE,iBAChDoW,kBAAkBtW,YAAY2W,eAAgB,yCAC7CxB,6BAEGnV,YAAY0V,oBAAsB1V,YAAYyW,iBAChDxZ,OAAO4Z,YAAY,sBAAuB,KACxC7W,YAAY0V,oBAAsB1V,YAAY2W,gBAChD1Z,OAAO4Z,YAAY,qBAAsB,KACvC7W,YAAY0V,oBAAsB1V,YAAYE,iBAChDjD,OAAO4Z,YAAY,sBAAuB,OAjB5CP,kBAAkBtW,YAAYE,gBAAiB,4CAA8CqW,GAqBjG,SAASd,qBAEPzV,YAAY8W,qBAAuB,EACnC9W,YAAY+W,4BAA8B,EAC1C/W,YAAYmC,2BAA6B,EACzCnC,YAAYgX,8BAAgC,EAC5ChX,YAAYiX,sBAAwB,EACpCjX,YAAYkX,6BAA+B,EAC3ClX,YAAYmX,4BAA8B,EAC1CnX,YAAYoX,+BAAiC,EAC7CpX,YAAYqX,yBAA2B,IAEvCrX,YAAYoC,iBAAmB,KAE/BpC,YAAYqC,mCAAqC,EAEjDrC,YAAYsX,sCAAwC,EAEpDtX,YAAYuX,sCAAwC,EACpDvX,YAAYwX,uCAAyC,EACrDxX,YAAYyX,qCAAuC,EAEnDzX,YAAY0X,uBAAyB,GACrC1X,YAAY2X,mBAAqB,GACjC3X,YAAY4X,iBAAmB,GAC/B5X,YAAY6X,6BAA+B,KAC3C7X,YAAY8X,sBAAwB,EAEpC9X,YAAY+X,2BAA6B,iEACzC/X,YAAYgY,2BAA6B,mDACzChY,YAAYiY,mBAAqB,qEACjCjY,YAAYkY,mBAAqB,uDAEjClY,YAAYmY,0BAA4B,+DACxCnY,YAAYoY,0BAA4B,6EACxCpY,YAAYqY,0BAA4B,+DACxCrY,YAAYsY,0BAA4B,6EAExCtY,YAAYuY,uBAAyB,EACrCvY,YAAYwY,mBAAqB,EACjCxY,YAAYyY,iBAAmB,EAC/BzY,YAAY0Y,6BAA+B,GAC3C1Y,YAAY2Y,oBAAsB,MAElC3Y,YAAY4Y,uBAAyB,EACrC5Y,YAAY6Y,uBAAyB,EACrC7Y,YAAY8Y,qBAAuB,EAEnC9Y,YAAY+Y,8CAAgD,EAC5D/Y,YAAYgZ,wCAA0C,EACtDhZ,YAAYiZ,4CAA8C,EAE1DjZ,YAAYkZ,sCAAwC,EACpDlZ,YAAYmZ,qCAAuC,EAEnDnZ,YAAYyC,mCAAqC,EACjDzC,YAAYsX,sCAAwC,EACpDtX,YAAYoZ,qCAAuC,EACnDpZ,YAAYqZ,mCAAqC,EACjDrZ,YAAYsZ,uCAAyC,EACrDtZ,YAAYuZ,mCAAqC,EACjDvZ,YAAYmR,2CAA6C,EACzDnR,YAAYwZ,4CAA8C,EAC1DxZ,YAAYyZ,4CAA8C,EAC1DzZ,YAAYkR,oCAAsC,EAClDlR,YAAY0Z,4CAA8C,GAC1D1Z,YAAY2Z,sCAAwC,GACpD3Z,YAAY4Z,mCAAqC,GAEjD5Z,YAAY6Z,oCAAsC,IAElD7Z,YAAY8Z,4BAA8B,EAE1C9Z,YAAY+Z,kBAAoB,EAChC/Z,YAAYga,gCAAkC,GAE9Cha,YAAYia,wBAA0B,EACtCja,YAAYka,4BAA8B,EAC1Cla,YAAYma,kBAAoB,EAEhCna,YAAYoa,6CAA+C,EAC3Dpa,YAAYqa,8CAAgD,EAC5Dra,YAAYsa,qDAAuD,EACnEta,YAAYua,8CAAgD,EAC5Dva,YAAYwa,+CAAiD,EAC7Dxa,YAAYya,sDAAwD,EACpEza,YAAY0a,8CAAgD,IAC5D1a,YAAY2a,0BAA4B,EAExC3a,YAAY4a,0BAA4B,EACxC5a,YAAY6a,0BAA4B,EAExC7a,YAAY8a,2BAA6B,EACzC9a,YAAY+a,8BAAgC,EAC5C/a,YAAYgb,gCAAkC,EAE9Chb,YAAYib,kCAAoC,EAChDjb,YAAYkb,kCAAoC,EAChDlb,YAAYmb,kCAAoC,EAChDnb,YAAYob,mCAAqC,EACjDpb,YAAYqb,kCAAoC,EAChDrb,YAAYsb,4CAA8C,GAE1Dtb,YAAYub,6BAA+B,EAC3Cvb,YAAYwb,4BAA8B,EAC1Cxb,YAAYyb,4BAA8B,EAC1Czb,YAAY0b,4BAA8B,EAC1C1b,YAAY2b,gCAAkC,EAC9C3b,YAAY4b,gCAAkC,EAC9C5b,YAAY6b,gCAAkC,EAC9C7b,YAAY8b,qCAAuC,IACnD9b,YAAY+b,8CAAgD,IAC5D/b,YAAYgc,8CAAgD,IAC5Dhc,YAAYic,0CAA4C,IACxDjc,YAAYkc,mDAAqD,IACjElc,YAAYmc,mDAAqD,IAEjEnc,YAAYyW,gBAAkB,EAC9BzW,YAAY2W,eAAiB,EAC7B3W,YAAYE,gBAAkB,EAE9BF,YAAYoc,mBAAqB,EACjCpc,YAAYqc,mCAAqC,EACjDrc,YAAYsc,mCAAqC,EACjDtc,YAAYuc,4BAA8B,EAC1Cvc,YAAYwc,4BAA8B,UAC1Cxc,YAAYyc,qCAAuC,UACnDzc,YAAY0c,2BAA6B,WAEzC1c,YAAY2c,wBAA0B,EACtC3c,YAAY4c,8BAAgC,EAC5C5c,YAAY6c,2BAA6B,EACzC7c,YAAY8c,wBAA0B,EAEtC9c,YAAY+c,gCAAkC,EAC9C/c,YAAYgd,yBAA2B,EACvChd,YAAYid,sBAAwB,EACpCjd,YAAYkd,qBAAuB,EAEnCld,YAAYmd,qBAAuB,EACnCnd,YAAYod,sBAAwB,EACpCpd,YAAYqd,qBAAuB,EAEnCrd,YAAYsd,oBAAsB,EAClCtd,YAAYud,mBAAqB,EACjCvd,YAAYwd,iBAAmB,EAC/Bxd,YAAYyd,iBAAmB,EAE/Bzd,YAAY0d,8BAAgC,EAC5C1d,YAAY2d,eAAiB,EAC7B3d,YAAY4d,aAAe,EAG7B,SAAS5I,YAAY6I,GACnB,SAASC,EAAUC,EAAMla,GACvB,IAAIma,EACJ,IACEA,EAASC,EAAUF,GAAMla,GACzB,MAAOqa,GACP,OAAOve,QAAQ4T,OAAO2K,GAExB,OAAIF,EAAOG,KACFH,EAAO1f,MAEPqB,QAAQ2T,QAAQ0K,EAAO1f,OAAO8f,KAAKC,EAAaC,GAG3D,IAAIL,EAAYJ,EAActR,MAAMtN,UAAU6F,MAAMtH,KAAKmO,UAAW,IAChE0S,EAAcP,EAAUjf,KAAKif,EAAW,QACxCQ,EAAaR,EAAUjf,KAAKif,EAAW,SAC3C,OAAOO,IAGT,SAASE,OAGP,MAA8B,OAAtB/K,aAAa5V,MAAuC,SAAtB4V,aAAa5V,KAGrD,SAAS4gB,QACP,OAAQ1I,UAAUC,UAAUpV,MAAM,UAChCmV,UAAUC,UAAUpV,MAAM,UAC1BmV,UAAUC,UAAUpV,MAAM,WAG9B,SAASwU,2BAGP,OAAGoJ,SAGuB,QAAtB/K,aAAa5V,OAGS,cAAtB4V,aAAa5V,MACfwV,UAAW,GACJ,GAGgB,UAAtBI,aAAa5V,MACdqV,SAAU,EACPO,aAAayC,SAAW,IAOJ,YAAtBzC,aAAa5V,MACdsV,WAAY,EACTM,aAAayC,SAAW,IAOJ,WAAtBzC,aAAa5V,KACX4V,aAAayC,SAAW,GAQJ,WAAtBzC,aAAa5V,MACduV,UAAW,EACRK,aAAayC,SAAW,SAF7B,IAWF,SAASZ,aAAazX,GACpB,GAAI4gB,QAGF,OAAOC,2CAA2C,eAAgB,CAAC7gB,IAErE,GAAI2gB,OAAQ,CAEV,GAAI3gB,EAAK+C,MAAM,mBACb,IAIE,OADgCwT,SAASuK,eAAe,mBACvBrJ,aAAazX,GAEhD,MAAO4M,GACL,IAEE,OADyB2J,SAASuK,eAAe,0BACvBrJ,aAAazX,GAEzC,MAAOsgB,GACL,KAAM,4HAKZ,IAEE,OADyB/J,SAASuK,eAAe,mBACvBrJ,aAAazX,GAEzC,MAAO4M,GAEL,OAAO,IAAImU,cAAc/gB,IAI7B,OAAOiV,aAAawC,aAAazX,GAGnC,SAASghB,mBAAmBC,GAK1B,OAJIA,EAAS,IACXA,EAAS,WAAaA,EAAS,GAG1BA,EAAOjZ,SAAS,IAAIkZ,cAG7B,SAASC,wBAAwBvU,GAC/B,IAAI0T,EAAM1T,EAAEhK,QAMZ,OALK0d,EAEM1T,EAAEqU,SACXX,GAAO,OAASU,mBAAmBpU,EAAEqU,QAAU,KAF/CX,EAAM1T,EAID0T,EAGT,SAAS3d,aAAaye,GACpB,GAAG7J,4BAA8BoJ,QAAUC,QACzC,OAAOO,wBAAwBC,GAGjC,IACE,OAAOnM,aAAatS,eACpB,MAAMiK,GACN,OAAOuU,wBAAwBC,IAKnC,SAAS5J,uBACP,OAAO6J,qBAAqB7J,uBAI9B,SAASnU,kBAAkBrD,GACzB,OAAOiV,aAAa5R,kBAAkBrD,GAuCxC,SAAS6gB,2CAA2CzK,aAAc7P,OAChE,IAAI+a,OACAC,GAUJ,GATAzL,sCAAsClW,KAAKwW,aAAc7P,OAAO,SAASqG,EAAG4U,UAC1ED,GAAK3U,EACL,IAAIhC,IAAI,UAAU4W,SAClBvd,KAAK2G,KACmB,iBAAb,SACT0W,OAASA,OAAO3d,QAAQ,SAAU,MAClC2d,OAASA,OAAO3d,QAAQ,SAAU,UAGnC4d,GACD,MAAMA,GACR,OAAOD,OAGT,SAASG,wCAEP,IAAKpiB,OAAOqiB,mCACZ,CACE,IAAIC,EAAMpL,SAASC,cAAc,OACjCmL,EAAIC,GAAK,kBACTD,EAAIE,MAAQ,uHACZF,EAAIG,UAAY,8nBAKhBvL,SAASwL,qBAAqB,QAAQ,GAAG/K,YAAY2K,GACrDpL,SAASuK,eAAe,6BAA6BkB,iBAAiB,SAAQ,WAE5EC,oBAAoB,qBACpB1L,SAASuK,eAAe,mBAAmBe,MAAMK,WAAa,YAGhEP,EAAIK,iBAAiB,SAAQ,WAE3BC,oBAAoB,qBACpB1L,SAASuK,eAAe,mBAAmBe,MAAMK,WAAa,YAEhEP,EAAIE,MAAMK,WAAW,WAGzB,SAASC,mCACPd,qBAAqBe,oBAAoBC,cAAeJ,qBAG1D,SAASK,qBACPjjB,OAAO4Z,YAAY,2BAA4B,KAC/C5Z,OAAO2iB,iBAAiB,WAAW,SAAUO,GAC3C,GAA2B,iBAAhBA,EAAU,MAAmBA,EAAM3a,KAAK7E,MAAM,wBAErD0S,kCAAJ,CAEA,GAAGH,WAAaC,SAChB,CAEE,IAAIiN,EAAMD,EAAM3a,KAAK6a,UAAUF,EAAM3a,KAAKyB,QAAQ,QAAU,GAC5D,IAAKmZ,EAAIzf,MAAM,2DACTyf,EAAIzf,MAAM,yEAId,OAFA2V,kBAAkBtW,YAAYE,gBAAiB,YAAekgB,EAAM,iEACpEP,sBAGF,IAAIS,EAAUnM,SAASC,cAAc,UACrCkM,EAAQhM,aAAa,OAAQ,mBAC7BgM,EAAQhM,aAAa,MAAO8L,GAC5BE,EAAQC,QAAUV,oBAClBS,EAAQE,OAAST,iCACjB5L,SAASwL,qBAAqB,QAAQ,GAAG/K,YAAY0L,QAErDrB,qBAAqBe,oBAAoBC,cAAeJ,qBAE1DxM,mCAAoC,MACnC,GAIL,SAASoN,iBAQH,IAQIH,EAdLpN,WAAaC,SAEd+M,qBAGIjN,SAAWG,WACTkN,EAAUnM,SAASC,cAAc,WAC7BE,aAAa,OAAQ,mBAC7BgM,EAAQhM,aAAa,MAAO,6EAC5BgM,EAAQC,QAAUV,oBAClBS,EAAQE,OAASN,mBACjB/L,SAASwL,qBAAqB,QAAQ,GAAG/K,YAAY0L,MAGjDA,EAAUnM,SAASC,cAAc,WAC7BE,aAAa,OAAQ,mBAC7BgM,EAAQhM,aAAa,MAAO,6EAC5BgM,EAAQC,QAAUV,oBAClBS,EAAQE,OAASN,mBACjB/L,SAASwL,qBAAqB,QAAQ,GAAG/K,YAAY0L,IAM3D,SAASI,oBAEP,IAAIC,EAAOxM,SAASC,cAAc,UAMlC,GALAuM,EAAKrM,aAAa,KAAM,sBACxBqM,EAAKrM,aAAa,OAAQ,uBAC1BqM,EAAKrM,aAAa,QAAS,sBAC3BH,SAASwL,qBAAqB,QAAQ,GAAG/K,YAAY+L,GACrD9N,aAAesB,SAASuK,eAAe,sBACpCH,OACH,CACE,IAAIqC,EAAQzM,SAASC,cAAc,UACnCwM,EAAMtM,aAAa,KAAM,0BACzBsM,EAAMtM,aAAa,UAAW,8CAC9BsM,EAAMtM,aAAa,QAAS,sBAC5BH,SAASwL,qBAAqB,QAAQ,GAAG/K,YAAYgM,GACrD,IAAIC,EAAQ1M,SAASC,cAAc,UACnCyM,EAAMvM,aAAa,KAAM,mBACzBuM,EAAMvM,aAAa,UAAW,8CAC9BuM,EAAMvM,aAAa,QAAS,sBAC5BH,SAASwL,qBAAqB,QAAQ,GAAG/K,YAAYiM,IAKzD,SAASZ,gBAEPnN,gBAAkB,EACfrT,WAEDuT,iBAEA/V,OAAO4Z,YAAY,qBAAsB,KAK7C,SAASgJ,oBAAoBrJ,QAER,IAAV,GAAyC,iBAAV,IACtCA,EAAM,qBACR1D,gBAAkB,EACfrT,WAEDsT,cAAcyD,GAEdvZ,OAAO4Z,YAAY,yBAA0B,KAKjD,SAASrB,qBAEgB,IAApB1C,kBAEAI,WAEDmM,wCAEFvM,gBAAkB,EACfrT,WAEDsT,cAAc,2CAEd9V,OAAO4Z,YAAY,yBAA0B,MAMjD,SAASiK,cAAcjd,GAErB,OAAO,IAAIlE,QAAQkE,GAGrB,SAASkd,qBACP,IACe1L,aAAa,kBAC1B4K,gBAEF,MAAO/B,GACL/J,SAASuK,eAAe,sBAAsBe,MAAMuB,QAAU,OAG9D,IAAIC,EAAWnL,UAAUoL,UAAU,uBACnC,GAAID,EAGApB,oBAFWoB,EAASE,cAEA,2CAGA,oCAItBtB,oBAAoB,sBAM1B,SAASlK,uBAEP,IAAIyL,EAAMjN,SAASC,cAAc,OACjCgN,EAAI1B,UAAY,6CAC8C,IAAzC0B,EAAIzB,qBAAqB,KAAKlc,OAEjDoc,oBAAoB,uDAInB1K,2BAEDsL,iBACQhhB,WAUmB,aAAxB0U,SAASkN,YACVX,oBACAK,sBAEA9jB,OAAO2iB,iBAAiB,QAAQ,SAAUO,GACxCO,oBACAK,wBACC,GAhBL9jB,OAAO2iB,iBAAiB,WAAW,SAAUO,GACtB,6BAAfA,EAAM3a,OAEVkb,oBACAK,yBAEF,GAeN,SAAS9L,iBAAiBjQ,GAExB6N,aAAe7N,EAGjB,SAASkQ,sBAEP,aAAgD,IAAnClV,YAA6B,oBAAsBA,YAAYshB,oBAhrB/E,I,8ECAD,WAEA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QAIA,aACE,WACSxP,EACAlU,EACA2jB,EACA1e,EACAjB,EACA4f,EACAC,GANA,KAAA3P,oBACA,KAAAlU,OACA,KAAA2jB,aACA,KAAA1e,cACA,KAAAjB,aACA,KAAA4f,YACA,KAAAC,UAsCX,OAnCS,YAAAC,aAAP,WACE,OAAO,EAAAC,QAAQnkB,KAAK4C,KAAM,EAAAwhB,0BAA2B,gBAGhD,YAAAC,cAAP,WACE,OAAO,EAAAF,QAAQnkB,KAAK4C,KAAM,EAAA0hB,yBAA0B,eAG/C,YAAAC,oBAAP,WACE,OAAO,EAAAA,oBAAoBvkB,KAAK4C,OAG3B,YAAA4hB,2BAAP,WACE,OAAO,EAAAA,2BAA2BxkB,KAAK4C,OAGlC,YAAA6hB,aAAP,WACE,OAAO,EAAAA,aAAazkB,KAAK4C,OAGpB,YAAAwR,aAAP,SAAoBC,GAClB,OAAO,EAAAD,aAAapU,KAAK4C,KAAMyR,IAG1B,YAAAqQ,QAAP,WACE,OAAO,EAAAA,QAAQ1kB,KAAK4C,OAGf,YAAA+hB,aAAP,WACE,OAAO,EAAAA,aAAa3kB,KAAK4C,OAGpB,YAAAgiB,oBAAP,SAA2BC,GACzB,OAAO,EAAAD,oBAAoB5kB,KAAK4C,KAAMiiB,IAE1C,EA9CA,GAAa,EAAA/Q,e,8ECbA,EAAAqJ,0BAA4B,EAC5B,EAAAF,sDAAwD,EACxD,EAAAD,+CAAiD,EACjD,EAAAD,8CAAgD,EAChD,EAAA8B,mCAAqC,EACrC,EAAAD,mBAAqB,EACrB,EAAAE,mCAAqC,EACrC,EAAAC,4BAA8B,EAC9B,EAAA1B,0BAA4B,EAC5B,EAAArC,mBAAqB,EACrB,EAAAD,uBAAyB,EACzB,EAAAE,iBAAmB,EACnB,EAAAC,6BAA+B,GAC/B,EAAArB,yBAA2B,IAC3B,EAAAF,4BAA8B,EAC9B,EAAA6D,gCAAkC,EAClC,EAAAD,8BAAgC,EAChC,EAAAD,2BAA6B,EAC7B,EAAAhC,qBAAuB,EACvB,EAAAF,uBAAyB,EACzB,EAAAC,uBAAyB,EACzB,EAAAuC,mCAAqC,EACrC,EAAAC,kCAAoC,EACpC,EAAAF,kCAAoC,EACpC,EAAAG,4CAA8C,GAC9C,EAAAL,kCAAoC,EACpC,EAAAC,kCAAoC,EACpC,EAAAY,qCAAuC,IACvC,EAAAC,8CAAgD,IAChD,EAAAG,mDAAqD,IACrD,EAAAF,8CAAgD,IAChD,EAAAG,mDAAqD,IACrD,EAAAF,0CAA4C,IAC5C,EAAAT,4BAA8B,EAC9B,EAAAC,4BAA8B,EAC9B,EAAAC,4BAA8B,EAC9B,EAAAH,6BAA+B,EAC/B,EAAAI,gCAAkC,EAClC,EAAAC,gCAAkC,EAClC,EAAAC,gCAAkC,EAClC,EAAA3E,6BAA+B,EAC/B,EAAAyB,oBAAsB,MACtB,EAAAiC,0BAA4B,EAC5B,EAAA4B,4BAA8B,UAC9B,EAAAjF,sCAAwC,EACxC,EAAAC,uCAAyC,EACzC,EAAAC,qCAAuC,EACvC,EAAA6K,oCAAsC,EACtC,EAAAhI,qDAAuD,EACvD,EAAAD,8CAAgD,EAChD,EAAAD,6CAA+C,EAC/C,EAAAZ,4CAA8C,EAC9C,EAAAC,4CAA8C,EAC9C,EAAAtI,2CAA6C,EAC7C,EAAAoI,mCAAqC,EACrC,EAAAH,qCAAuC,EACvC,EAAAQ,mCAAqC,GACrC,EAAAP,mCAAqC,EACrC,EAAA5W,mCAAqC,EACrC,EAAA6U,sCAAwC,EACxC,EAAAgC,uCAAyC,EACzC,EAAAK,sCAAwC,GACxC,EAAAD,4CAA8C,GAC9C,EAAAxI,oCAAsC,EACtC,EAAA6H,8CAAgD,EAChD,EAAAE,4CAA8C,EAC9C,EAAAD,wCAA0C,EAC1C,EAAAG,qCAAuC,EACvC,EAAAD,sCAAwC,EACxC,EAAA/W,2BAA6B,EAC7B,EAAA0X,oCAAsC,IACtC,EAAAI,wBAA0B,EAC1B,EAAAE,kBAAoB,EACpB,EAAAD,4BAA8B,EAC9B,EAAAnD,4BAA8B,EAC9B,EAAAD,qBAAuB,EACvB,EAAA1U,iBAAmB,KACnB,EAAA4X,gCAAkC,GAClC,EAAAD,kBAAoB,EACpB,EAAAwI,4BAA8B,GAC9B,EAAAC,wBAA0B,GAC1B,EAAAC,iCAAmC,GACnC,EAAAC,2BAA6B,GAC7B,EAAAC,sCAAwC,GACxC,EAAAC,yBAA2B,EAC3B,EAAAC,0BAA4B,GAC5B,EAAAC,2BAA6B,GAC7B,EAAAC,mBAAqB,GACrB,EAAAjJ,4BAA8B,EAC9B,EAAAkJ,0BAA4B,GAC5B,EAAAC,mCAAqC,GACrC,EAAAC,8BAAgC,GAChC,EAAAC,0BAA4B,MAC5B,EAAAC,6BAA+B,GAC/B,EAAAC,6BAA+B,GAC/B,EAAAC,yBAA2B,EAC3B,EAAAC,6BAA+B,EAC/B,EAAAC,0CAA4C,GAC5C,EAAAC,6CAA+C,GAC/C,EAAAC,2BAA6B,EAC7B,EAAAC,8BAAgC,GAChC,EAAAC,+BAAiC,EACjC,EAAAxS,6BAA+B,EAC/B,EAAAyS,wBAA0B,EAC1B,EAAAC,6BAA+B,MAC/B,EAAAC,yBAA2B,MAC3B,EAAAC,wBAA0B,EAC1B,EAAAC,oCAAsC,GACtC,EAAAC,+BAAiC,GACjC,EAAAC,oCAAsC,EACtC,EAAAC,wBAA0B,GAC1B,EAAAC,uBAAyB,GACzB,EAAAC,yBAA2B,EAC3B,EAAAC,8BAAgC,GAChC,EAAAC,+BAAiC,GACjC,EAAAC,qCAAuC,GACvC,EAAAC,2CAA6C,GAC7C,EAAAC,uBAAyB,EACzB,EAAA3N,8BAAgC,EAChC,EAAA4N,iCAAmC,IACnC,EAAAC,oCAAsC,IACtC,EAAAxiB,mCAAqC,EACrC,EAAAyiB,6BAA+B,EAC/B,EAAAC,8BAAgC,EAChC,EAAAC,WAAa,EACb,EAAAC,gCAAkC,GAClC,EAAAC,+BAAiC,EACjC,EAAAC,yBAA2B,EAC3B,EAAAC,oBAAsB,EACtB,EAAAC,mBAAqB,EACrB,EAAA5O,gBAAkB,EAClB,EAAAvW,gBAAkB,EAClB,EAAAyW,eAAiB,EACjB,EAAA2O,iCAAmC,OACnC,EAAAC,4BAA8B,OAC9B,EAAAC,iCAAmC,OACnC,EAAAC,gBAAkB,IAClB,EAAAC,6BAA+B,EAC/B,EAAAC,yBAA2B,EAC3B,EAAAC,wBAA0B,EAC1B,EAAAC,6BAA+B,GAC/B,EAAAC,uBAAyB,MACzB,EAAAC,iBAAmB,EACnB,EAAAC,wBAA0B,GAC1B,EAAAC,gCAAkC,GAClC,EAAAhO,mBAAqB,qEACrB,EAAAF,2BAA6B,iEAC7B,EAAAG,mBAAqB,uDACrB,EAAAF,2BAA6B,oD,8EClJ7B,EAAA8J,yBAA+C,CAC1D,CAAEoE,cAAe,CAAC,oBAAqBC,YAAa,2BACpD,CAAED,cAAe,CAAC,MAAOC,YAAa,wBACtC,CAAED,cAAe,CAAC,KAAMC,YAAa,UACrC,CAAED,cAAe,CAAC,KAAMC,YAAa,UACrC,CAAED,cAAe,CAAC,UAAWC,YAAa,SAC1C,CAAED,cAAe,CAAC,KAAMC,YAAa,YACrC,CAAED,cAAe,CAAC,MAAOC,YAAa,OACtC,CAAED,cAAe,CAAC,KAAMC,YAAa,aACrC,CAAED,cAAe,CAAC,OAAQ,QAASC,YAAa,QAChD,CAAED,cAAe,CAAC,SAAU,UAAWC,YAAa,UACpD,CAAED,cAAe,CAAC,QAAS,SAAUC,YAAa,SAClD,CAAED,cAAe,CAAC,MAAO,MAAO,mBAAoBC,YAAa,OACjE,CAAED,cAAe,CAAC,KAAMC,YAAa,SACrC,CAAED,cAAe,CAAC,KAAMC,YAAa,W,8EChB1B,EAAAC,gBAAkB,CAC7B,mBAAoB,kCACpB,mBAAoB,mEACpB,oBAAqB,MACrB,oBAAqB,UACrB,oBAAqB,SACrB,2BAA4B,gEAC5B,oBAAqB,8BACrB,sBAAuB,+EACvB,uBACE,4NACF,uBACE,yJACF,uBAAwB,oEACxB,uBACE,sGACF,uBAAwB,yDACxB,sBAAuB,6BACvB,sBAAuB,wEACvB,sBAAuB,sCACvB,sBAAuB,gDACvB,sBAAuB,uDACvB,sBAAuB,+EACvB,sBAAuB,wEACvB,sBACE,uMACF,uBACE,2IACF,yBACE,kKACF,uBAAwB,8FACxB,uBACE,oKACF,oBACE,0jBACF,oBACE,uUACF,cACE,uHACF,kBAAmB,gGACnB,oBAAqB,mCACrB,oBAAqB,kCACrB,oBAAqB,iDACrB,oBAAqB,6BACrB,oBAAqB,4BACrB,oBAAqB,4BACrB,oBAAqB,wCACrB,uBAAwB,0BACxB,4BAA6B,+EAC7B,uBAAwB,uFACxB,oBAAqB,+BACrB,oBAAqB,+BACrB,qBAAsB,kC,8EClDX,EAAAxE,0BAAgD,CAC3D,CAAEsE,cAAe,CAAC,oBAAqBC,YAAa,2BACpD,CAAED,cAAe,CAAC,MAAOC,YAAa,YACtC,CAAED,cAAe,CAAC,MAAOC,YAAa,WACtC,CAAED,cAAe,CAAC,KAAMC,YAAa,gBACrC,CAAED,cAAe,CAAC,KAAMC,YAAa,UACrC,CAAED,cAAe,CAAC,KAAMC,YAAa,UACrC,CAAED,cAAe,CAAC,UAAWC,YAAa,SAC1C,CAAED,cAAe,CAAC,KAAMC,YAAa,YACrC,CAAED,cAAe,CAAC,MAAOC,YAAa,uBACtC,CAAED,cAAe,CAAC,KAAMC,YAAa,aACrC,CAAED,cAAe,CAAC,OAAQ,QAASC,YAAa,QAChD,CAAED,cAAe,CAAC,SAAU,UAAWC,YAAa,UACpD,CAAED,cAAe,CAAC,QAAS,SAAUC,YAAa,SAClD,CAAED,cAAe,CAAC,MAAO,MAAO,mBAAoBC,YAAa,OACjE,CAAED,cAAe,CAAC,KAAMC,YAAa,SACrC,CAAED,cAAe,CAAC,KAAMC,YAAa,W,iHClBvC,iDACA,wDACA,0CAQa,QAAAhE,aAAe,sBAAA5iB,qBAAoB,WAC9C,IAAM0C,iBAAoB7B,KAAqB0R,kBAE/C,OAAOjQ,KACL,mBAAAf,kBAAiB,WACf,IAAImC,EAEJ,IACEA,EAAS,mBAAArC,oBAAsBqB,iBAAiBokB,OAAO,GACvD,MAAOzmB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,mCAG3D,OAAOqD,U,iHCzBb,iDACA,wDACA,0CAaa,QAAAgf,aAAe,sBAAA1iB,qBAAoB,WAC9C,IAAM0C,iBAAoB7B,KAAqB0R,kBAE/C,OAAOjQ,KACL,mBAAAf,kBAAiB,WACf,IAIIwlB,EAJEC,EAA+B,CACnCC,UAAW,KACXC,IAAK,MAIP,IACEH,EAAiB,mBAAA1lB,oBAAsBqB,iBAAiBykB,YACxDJ,EAAiB,mBAAA1lB,oBAAsB0lB,EAAeK,UACtDJ,EAAcC,UAAY,mBAAA5lB,oBAAsB0lB,EAAeM,aAC/DL,EAAcE,IAAM,mBAAA7lB,oBAAsB0lB,EAAeO,MACzD,MAAOjnB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,kCAG3D,OAAO2mB,U,irDCrCb,WACA,OAYa,EAAAvE,2BAA6B,EAAAziB,qBAAoB,W,0FACpC,SAAOa,KAAqB2hB,uB,OAEpD,MAAO,CAAP,EAFwB,SAED+E,QACrB,SAACC,EAAaC,G,MAAY,cACrBD,KAAW,MACbC,GAAU,EAAAZ,gBAAgBY,IAAY,KAAI,MAE7C,gB,iHCrBJ,iDACA,wDACA,0CAQa,QAAAjF,oBAAsB,sBAAAxiB,qBAAoB,WACrD,IAAM0C,iBAAoB7B,KAAqB0R,kBAE/C,OAAOjQ,KACL,mBAAAf,kBAAiB,WACf,IACImmB,EADEC,EAAiB,GAGvB,IAKE,GAJAD,EAAQ,mBAAArmB,oBAAsBqB,iBAAiBklB,mBAC/CF,EAAQ,mBAAArmB,oBAAsBqmB,EAAMG,MACpCH,EAAQ,mBAAArmB,oBAAsBqmB,EAAM1kB,OAExB,EACV,KAAO0kB,EAAQ,GAAG,CAChB,IAAII,OAAqB,EAEzBA,EAAwB,mBAAAzmB,oBAAsBqB,iBAAiBklB,mBAC/DE,EAAwB,mBAAAzmB,oBAAsBymB,EAAsBD,KACpEC,EAAwB,mBAAAzmB,oBAAsBymB,EAAsB3kB,KAAKukB,GACzEI,EAAwB,mBAAAzmB,oBAAsBymB,EAAsBC,IAEpEJ,EAAKxe,KAAK2e,GAEVJ,KAGJ,MAAOrnB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,+BAG3D,OAAOsnB,U,68CC1Cb,WACA,OACA,QACA,QASa,EAAAvF,QAAU,EAAApiB,qBAAoB,SACzCgoB,EACAC,G,kGAKa,O,sBAAA,GAAM,EAAA5V,aAAapU,KAAK4C,KAAMonB,I,cAAzCC,EAAW,S,aAIX,M,WAFA5nB,QAAQD,MAAM,GAER,IAAIE,MAAM,EAAAC,+BAA+B,IAAU,mD,OAG3D,MAAO,CAAP,EAAO,EAAA2nB,eAAeH,EAAME,e,8EC3B9B,WAgBa,EAAAC,eAAiB,SAACC,EAAsCC,GACnE,IAAMC,EAA8BD,EAAQjnB,MAAM,wDAElD,GAAIknB,EACF,OAAOA,EAAkBC,KAAI,SAACC,G,UACtBC,EAAgBD,EAAMvX,OAAO7P,MAAM,qCACrCsnB,EAAQD,aAAa,EAAbA,EAAgB,GAEtBE,EAAyD,QAA9C,EAAoB,QAApB,EAAGF,aAAa,EAAbA,EAAgB,UAAC,eAAGzmB,QAAQ,UAAW,aAAI,eAAGA,QAAQ,QAAS,KAC7E4mB,EAAqBF,aAAK,EAALA,EAAOtnB,MAAM,cAClCynB,EAAgBD,aAAkB,EAAlBA,EAAqB,GACvCE,GAAe,EAGnB,GAAID,EAAe,CACjB,IAAME,EAAiB,EAAAlC,gBAAgBgC,GAEnCE,IACFL,EAAQK,EACRD,GAAe,GAInB,IAAME,EAAiG,QAAnF,EAAGZ,EAAiBhV,MAAK,SAAC6V,GAAQ,OAAAA,EAAItC,cAAcvT,MAAK,SAAC/U,GAAS,OAAAA,IAASqqB,eAAO,eACnG9B,YAOJ,OALIoC,IACFN,EAAQM,EACRF,GAAe,GAGV,CAAEH,YAAW,EAAED,MAAK,EAAEI,aAAY,Q,68CC/C/C,WASa,EAAAjG,oBAAsB,EAAA7iB,qBAAoB,SAAgB8iB,G,gGACpD,SAAOjiB,KAAqB2hB,uB,OAU7C,OAVM0G,EAAW,SAUV,CAAP,EANIlc,MAAMpJ,QAAQkf,GACPA,EAAKqG,OAAM,SAACC,GAAe,OAAAF,EAASG,MAAK,SAACC,GAAY,OAAAA,IAAYF,QAElEF,EAASG,MAAK,SAACC,GAAY,OAAAA,IAAYxG,iB,iHCjBpD,iDACA,wDACA,0CAQa,QAAAH,QAAU,sBAAA3iB,qBAAoB,WACzC,IAAM0C,iBAAoB7B,KAAqB0R,kBAE/C,OAAOjQ,KACL,mBAAAf,kBAAiB,WACf,IAAIohB,EAEJ,IACEA,EAAU,mBAAAthB,oBAAsBqB,iBAAiB6mB,UACjD5G,EAAU,mBAAAthB,oBAAsBshB,EAAQ6G,OACxC,MAAOnpB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,mCAG3D,OAAOF,QAAQwiB,W,iHC1BrB,yCACA,6CACA,4CACA,wDACA,0CAEIrR,kBAQS,QAAAmY,uBAAyB,sBAAAzpB,qBAAoB,SAACwR,iBAAA,IAAAA,yBAAA,GACjD,IAAA/Q,YAAA,OAAAA,YAER,OAAK+Q,YAAcF,kBACVA,kBAGFhP,KACL,mBAAAf,kBAAiB,WACf,IAAIgB,EAyBAkP,EACAC,EAxBJ,IACEnP,EAAa,mBAAAlB,oBAAsB,mBAAAC,4BAA4B,kBAC/D,MAAOjB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,0CAG3D,IAEI,mBAAAgB,oBACAkB,EAAWI,KACTlC,YAAYmC,2BACZnC,YAAYoC,iBACZpC,YAAYqC,oCAGhB,MAAOzC,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,iCAM3D,IACEoR,EAAoB,mBAAApQ,oBAAsBkB,EAAWQ,aACrD2O,EAAyB,mBAAArQ,oBAAsBoQ,EAAkBzO,MACjE,MAAO3C,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,wCAG3D,IAAKqR,EACH,MAAM,IAAInR,MAAM,8BAGlB,IAAMuR,EAAiC,GAEvC,IACE,KAAOJ,GAAwB,CAC7B,IAAMhP,EACJ,mBAAArB,oBAAsBoQ,EAAkBtO,KAAKuO,GAE/CI,EAAgB3I,KACd,IAAI,cAAA4I,YACFrP,EACA,qBAAAW,mBAAmB,mBAAAhC,oBAAsBqB,EAAiBsP,aAC1D,mBAAA3Q,oBAAsBqB,EAAiBuP,WACvC,mBAAA5Q,oBAAsBqB,EAAiBsP,YACvC,mBAAA3Q,oBAAsBqB,EAAiBwP,WACvC,mBAAA7Q,oBAAsBqB,EAAiByP,cACvC,mBAAA9Q,oBAAsBqB,EAAiB0P,cAI3CV,KAEF,MAAOrR,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,iCAO3D,OAJAkC,EAAWa,QAEXkO,kBAAoBQ,U,iHC7F1B,yCACA,mCACA,6CACA,4CACA,wDACA,0CAEIR,kBASS,QAAAoY,yBAA2B,sBAAA1pB,qBAAoB,SAACwR,iBAAA,IAAAA,yBAAA,GACnD,IAAA/Q,YAAA,OAAAA,YAER,OAAK+Q,YAAcF,kBACVA,kBAGFhP,KACL,mBAAAf,kBAAiB,WACf,IAAIgB,EAyBAkP,EACAC,EAxBJ,IACEnP,EAAa,mBAAAlB,oBAAsB,mBAAAC,4BAA4B,kBAC/D,MAAOjB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,0CAG3D,IAEI,mBAAAgB,oBACAkB,EAAWI,KACTlC,YAAYqX,yBACZrX,YAAYoC,iBACZpC,YAAYqC,oCAGhB,MAAOzC,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,iCAM3D,KACEoR,EAAoB,mBAAApQ,oBAAsBkB,EAAWQ,gBAGnD0O,EACE,mBAAApQ,oBAAsBoQ,EAAkBxO,KAAKxC,YAAYkR,qCAM3DF,EACE,mBAAApQ,oBACAoQ,EAAkBxO,KAChBxC,YAAYmR,2CACZ,YAAAC,8BAGJH,EAAyB,mBAAArQ,oBAAsBoQ,EAAkBzO,OAEnE,MAAO3C,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,wCAG3D,IAAKqR,EACH,MAAM,IAAInR,MAAM,8BAGlB,IAAMuR,EAAiC,GAEvC,IACE,KAAOJ,GAAwB,CAC7B,IAAMhP,EACJ,mBAAArB,oBAAsBoQ,EAAkBtO,KAAKuO,GAE/CI,EAAgB3I,KACd,IAAI,cAAA4I,YACFrP,EACA,qBAAAW,mBAAmB,mBAAAhC,oBAAsBqB,EAAiBsP,aAC1D,mBAAA3Q,oBAAsBqB,EAAiBuP,WACvC,mBAAA5Q,oBAAsBqB,EAAiBsP,YACvC,mBAAA3Q,oBAAsBqB,EAAiBwP,WACvC,mBAAA7Q,oBAAsBqB,EAAiByP,cACvC,mBAAA9Q,oBAAsBqB,EAAiB0P,cAI3CV,KAEF,MAAOrR,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,iCAO3D,OAJAkC,EAAWa,QAEXkO,kBAAoBQ,U,iHChH1B,yCACA,6CACA,4CACA,wDACA,0CAEIR,kBASS,QAAAqY,4BAA8B,sBAAA3pB,qBAAoB,SAACwR,iBAAA,IAAAA,yBAAA,GACtD,IAAA/Q,YAAA,OAAAA,YAER,OAAK+Q,YAAcF,kBACVA,kBAGFhP,KACL,mBAAAf,kBAAiB,WACf,IAAIgB,EAyBAkP,EACAC,EAxBJ,IACEnP,EAAa,mBAAAlB,oBAAsB,mBAAAC,4BAA4B,kBAC/D,MAAOjB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,0CAG3D,IAEI,mBAAAgB,oBACAkB,EAAWI,KACTlC,YAAYqX,yBACZrX,YAAYoC,iBACZpC,YAAYqC,oCAGhB,MAAOzC,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,iCAM3D,IACEoR,EAAoB,mBAAApQ,oBAAsBkB,EAAWQ,aACrD2O,EAAyB,mBAAArQ,oBAAsBoQ,EAAkBzO,MACjE,MAAO3C,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,wCAG3D,IAAKqR,EACH,MAAM,IAAInR,MAAM,8BAGlB,IAAMuR,EAAiC,GAEvC,IACE,KAAOJ,GAAwB,CAC7B,IAAMhP,EACJ,mBAAArB,oBAAsBoQ,EAAkBtO,KAAKuO,GAE/CI,EAAgB3I,KACd,IAAI,cAAA4I,YACFrP,EACA,qBAAAW,mBAAmB,mBAAAhC,oBAAsBqB,EAAiBsP,aAC1D,mBAAA3Q,oBAAsBqB,EAAiBuP,WACvC,mBAAA5Q,oBAAsBqB,EAAiBsP,YACvC,mBAAA3Q,oBAAsBqB,EAAiBwP,WACvC,mBAAA7Q,oBAAsBqB,EAAiByP,cACvC,mBAAA9Q,oBAAsBqB,EAAiB0P,cAI3CV,KAEF,MAAOrR,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,iCAO3D,OAJAkC,EAAWa,QAEXkO,kBAAoBQ,U,68CC9F1B,WACA,OACA,QACA,QACA,QAOa,EAAA8X,mBAAqB,EAAA5pB,qBAChC,qD,0DAIiB,O,sBAAA,GAAM,EAAAyS,iB,cAAnBoX,EAAa,S,aAIb,M,WAFAvpB,QAAQD,MAAM,GAER,IAAIE,MAAM,EAAAC,+BAA+B,IAAU,0C,OAG3D,IAAK,EAAAspB,yBAAyBD,EAAWlX,cACvC,MAAM,IAAIpS,MAAM,oCAGlB,IAAK,EAAAwpB,uBAAuBF,EAAWjX,YACrC,MAAM,IAAIrS,MAAM,gCAGlB,MAAO,CAAP,GAAO,c,8EC/BE,EAAAupB,yBAA2B,SAACpT,GACvC,IAAMtV,EAAQsV,EAAQtV,MAAM,uBAE5B,IAAKA,EACH,OAAO,EAGA,IAAA4oB,EAAA,KAAcC,GAAP,KAAO,MAEvB,QAAIzhB,OAAOwhB,GAAS,MAIE,IAAlBxhB,OAAOwhB,IAAgBxhB,OAAOyhB,GAAS,S,8ECXhC,EAAAF,uBAAyB,SAACrT,G,MAGrC,OAFAA,EAA2C,QAApC,EAAGA,EAAQtV,MAAM,2BAAmB,eAAG,GAEvCoH,OAAOkO,IALkB,I,kgDCAlC,iDACA,wDACA,0CACA,uCASa,QAAAwT,mBAAqB,sBAAAlqB,qBAChC,SAAOqC,WAAoB8nB,oBAA0B,kD,+FAE1B,OADjB1pB,YAAgB/C,OAAM,YACL,GAAM,gBAAA0E,cAAcC,a,OAE7C,OAFMK,iBAAmB,UAElB,CAAP,EAAOJ,KACL,mBAAAf,kBAAiB,WACf,IAAI6oB,EACAC,EA8BAC,EA5BJ,IACEF,EAAc,mBAAA/oB,oBAAsB,mBAAAC,4BAA4B,qBAChE+oB,EAAiB,mBAAAhpB,oBAAsB,mBAAAC,4BAA4B,sBACnE,MAAOjB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,oCAG3D,IAIQ,mBAAAgB,oBAAsB+oB,EAAYG,oBAAoB7nB,kBACtD,mBAAArB,oBAAsB+oB,EAAYI,0BAAyB,GAC3D,mBAAAnpB,oBAAsBgpB,EAAeI,gBAAgBN,oBAEzD,mBAAA9oB,oBACAgpB,EAAeK,sBAAsBjqB,YAAYuX,uCAE7C,mBAAA3W,oBAAsBgpB,EAAeM,wBAVnB,8EAWlB,mBAAAtpB,oBAAsBgpB,EAAeO,qBAVtB,gEAWrB,MAAOvqB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,0CAK3D,IACEiqB,EAAY,mBAAAjpB,oBAAsBgpB,EAAeQ,KAAKT,GACtD,MAAO/pB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,gCAG3D,OAAOiqB,kB,kgDC5Df,uCACA,6CACA,wDACA,0CACA,uCACA,qCASa,QAAAQ,wBAA0B,sBAAA9qB,qBACrC,SAAOqC,WAAoB0oB,aAAmB,kD,+FAEnB,OADjBtqB,YAAgB/C,OAAM,YACL,GAAM,gBAAA0E,cAAcC,a,OAE7C,OAFMK,iBAAmB,UAElB,CAAP,EAAOJ,KACL,mBAAAf,kBAAiB,WACf,IAAIypB,EACAC,EACAC,EACAd,EAEJ,IACEY,EAAa,mBAAA3pB,oBAAsB,mBAAAC,4BAA4B,wBAC/D2pB,EAAkB,mBAAA5pB,oBAAsB,mBAAAC,4BAA4B,uBACpE4pB,EAAkB,mBAAA7pB,oBAAsB,mBAAAC,4BAA4B,4BACpE8oB,EAAc,mBAAA/oB,oBAAsB,mBAAAC,4BAA4B,qBAChE,MAAOjB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,oCAG3D,IAWI8qB,EAyBAb,EApCEc,EAAc,cAAA7nB,YAAY,IAAI8nB,MAEpC,IACQ,mBAAAhqB,oBAAsB2pB,EAAWM,aAAa,YAAAtQ,+CAC9C,mBAAA3Z,oBAAsB2pB,EAAWO,cAAcH,GACrD,MAAO/qB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,wCAK3D,IACQ,mBAAAgB,oBAAsB+oB,EAAYG,oBAAoB7nB,kBAC5DyoB,EAAiB,mBAAA9pB,oBAAsB+oB,EAAYoB,yBAC7C,mBAAAnqB,oBAAsB8pB,EAAeM,IAAIT,GACzC,mBAAA3pB,oBAAsB+oB,EAAYsB,gBAAgBjrB,YAAYgZ,yCACpE,MAAOpZ,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,oCAG3D,IAEI,mBAAAgB,oBACA4pB,EAAgBU,kBAAkBlrB,YAAY+b,+CAE1C,mBAAAnb,oBAAsB4pB,EAAgBW,aAAab,aACzD,MAAO1qB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,6BAK3D,IACEiqB,EACE,mBAAAjpB,oBACA6pB,EAAgBW,SAASZ,EAAiBb,EAAa3pB,YAAY2Y,qBACrE,MAAO/Y,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,gCAG3D,OAAOiqB,kB,kgDCrFf,uCACA,6CACA,wDACA,0CACA,uCACA,qCAUa,QAAAwB,qBAAuB,sBAAA9rB,qBAClC,SAAOqC,WAAoB0pB,cAAqChB,aAAmB,kD,+FAExD,OADjBtqB,YAAgB/C,OAAM,YACL,GAAM,gBAAA0E,cAAcC,a,OAE7C,OAFMK,iBAAmB,UAElB,CAAP,EAAOJ,KACL,mBAAAf,kBAAiB,WACf,IAAIypB,EACAC,EACAC,EACAd,EAEJ,IACEY,EAAa,mBAAA3pB,oBAAsB,mBAAAC,4BAA4B,wBAC/D2pB,EAAkB,mBAAA5pB,oBAAsB,mBAAAC,4BAA4B,uBACpE4pB,EAAkB,mBAAA7pB,oBAAsB,mBAAAC,4BAA4B,4BACpE8oB,EAAc,mBAAA/oB,oBAAsB,mBAAAC,4BAA4B,qBAChE,MAAOjB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,oCAG3D,IAWI8qB,EAyBAb,EApCEc,EAAc,cAAA7nB,YAAY,IAAI8nB,MAEpC,IACQ,mBAAAhqB,oBAAsB2pB,EAAWM,aAAa,YAAAtQ,+CAC9C,mBAAA3Z,oBAAsB2pB,EAAWO,cAAcH,GACrD,MAAO/qB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,wCAK3D,IACQ,mBAAAgB,oBAAsB+oB,EAAYG,oBAAoB7nB,kBAC5DyoB,EAAiB,mBAAA9pB,oBAAsB+oB,EAAYoB,yBAC7C,mBAAAnqB,oBAAsB8pB,EAAeM,IAAIT,GACzC,mBAAA3pB,oBAAsB+oB,EAAYsB,gBAAgBjrB,YAAYgZ,yCACpE,MAAOpZ,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,oCAG3D,IAEI,mBAAAgB,oBACA4pB,EAAgBU,kBAAkBlrB,YAAY+b,+CAE1C,mBAAAnb,oBAAsB4pB,EAAgBW,aAAab,aACzD,MAAO1qB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,6BAK3D,IAEI,mBAAAgB,oBACA6pB,EAAgBc,WAAWf,EAAiBc,cAAetrB,YAAY2Y,qBAEzEkR,EACE,mBAAAjpB,oBACA6pB,EAAgBe,WAAWhB,EAAiBb,EAAa3pB,YAAY2Y,qBACvE,MAAO/Y,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,gCAG3D,OAAOiqB,kB,ohDC1Ff,uCACA,6CACA,wDACA,0CACA,uCACA,qCASa,QAAA4B,wBAA0B,sBAAAlsB,qBACrC,SAAOqC,WAAoB8nB,oBAAwC,kD,+FAExC,OADjB1pB,YAAgB/C,OAAM,YACL,GAAM,gBAAA0E,cAAcC,a,OAE7C,OAFMK,iBAAmB,UAElB,CAAP,EAAOJ,KACL,mBAAAf,kBAAiB,WACf,IAAIypB,EACAE,EACAd,EAEJ,IACEY,EAAa,mBAAA3pB,oBAAsB,mBAAAC,4BAA4B,wBAC/D4pB,EAAkB,mBAAA7pB,oBAAsB,mBAAAC,4BAA4B,4BACpE8oB,EAAc,mBAAA/oB,oBAAsB,mBAAAC,4BAA4B,qBAChE,MAAOjB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,oCAG3D,IAWI8rB,EAUAhB,EAeAb,EApCEc,EAAc,cAAA7nB,YAAY,IAAI8nB,MAEpC,IACQ,mBAAAhqB,oBAAsB2pB,EAAWM,aAAa,YAAAtQ,+CAC9C,mBAAA3Z,oBAAsB2pB,EAAWO,cAAcH,GACrD,MAAO/qB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,wCAK3D,IACE8rB,EAAgBroB,OAAOW,KAAK0lB,oBAAoB9jB,SAAS,UACzD,MAAOhG,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,gDAKlB,IACQ,mBAAAc,oBAAsB+oB,EAAYG,oBAAoB7nB,kBAC5DyoB,EAAiB,mBAAA9pB,oBAAsB+oB,EAAYoB,yBAC7C,mBAAAnqB,oBAAsB8pB,EAAeM,IAAIT,GACzC,mBAAA3pB,oBAAsB6pB,EAAgBkB,wBAAwB3rB,YAAY6a,2BAC1E,mBAAAja,oBAAsB6pB,EAAgBT,gBAAgB0B,GACtD,mBAAA9qB,oBAAsB+oB,EAAYsB,gBAAgBjrB,YAAYgZ,yCACpE,MAAOpZ,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,0CAK3D,IACEiqB,EAAY,mBAAAjpB,oBAAsB6pB,EAAgBmB,UAAUjC,EAAa3pB,YAAY2Y,qBACrF,MAAO/Y,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,gCAG3D,OAAOiqB,mB,wDCjFf,IAAIgC,EAGJA,EAAI,WACH,OAAOzrB,KADJ,GAIJ,IAECyrB,EAAIA,GAAK,IAAIpqB,SAAS,cAAb,GACR,MAAO+I,GAEc,iBAAXvN,SAAqB4uB,EAAI5uB,QAOrCH,EAAOD,QAAUgvB,G,6BCjBjBhvB,EAAQwH,WAuCR,SAAqBynB,GACnB,IAAIC,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAC3B,OAAuC,GAA9BE,EAAWC,GAAuB,EAAKA,GA1ClDrvB,EAAQ0T,YAiDR,SAAsBub,GACpB,IAAIK,EAcA9uB,EAbA0uB,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAEvB5kB,EAAM,IAAIilB,EAVhB,SAAsBN,EAAKG,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,EAS9BG,CAAYP,EAAKG,EAAUC,IAEzCI,EAAU,EAGVpnB,EAAMgnB,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAK5uB,EAAI,EAAGA,EAAI6H,EAAK7H,GAAK,EACxB8uB,EACGI,EAAUT,EAAInjB,WAAWtL,KAAO,GAChCkvB,EAAUT,EAAInjB,WAAWtL,EAAI,KAAO,GACpCkvB,EAAUT,EAAInjB,WAAWtL,EAAI,KAAO,EACrCkvB,EAAUT,EAAInjB,WAAWtL,EAAI,IAC/B8J,EAAImlB,KAAcH,GAAO,GAAM,IAC/BhlB,EAAImlB,KAAcH,GAAO,EAAK,IAC9BhlB,EAAImlB,KAAmB,IAANH,EAGK,IAApBD,IACFC,EACGI,EAAUT,EAAInjB,WAAWtL,KAAO,EAChCkvB,EAAUT,EAAInjB,WAAWtL,EAAI,KAAO,EACvC8J,EAAImlB,KAAmB,IAANH,GAGK,IAApBD,IACFC,EACGI,EAAUT,EAAInjB,WAAWtL,KAAO,GAChCkvB,EAAUT,EAAInjB,WAAWtL,EAAI,KAAO,EACpCkvB,EAAUT,EAAInjB,WAAWtL,EAAI,KAAO,EACvC8J,EAAImlB,KAAcH,GAAO,EAAK,IAC9BhlB,EAAImlB,KAAmB,IAANH,GAGnB,OAAOhlB,GA3FTtK,EAAQuM,cAkHR,SAAwBojB,GAQtB,IAPA,IAAIL,EACAjnB,EAAMsnB,EAAM/oB,OACZgpB,EAAavnB,EAAM,EACnBwnB,EAAQ,GAIHrvB,EAAI,EAAGsvB,EAAOznB,EAAMunB,EAAYpvB,EAAIsvB,EAAMtvB,GAH9B,MAInBqvB,EAAMhkB,KAAKkkB,EAAYJ,EAAOnvB,EAAIA,EAJf,MAIqCsvB,EAAOA,EAAQtvB,EAJpD,QAQF,IAAfovB,GACFN,EAAMK,EAAMtnB,EAAM,GAClBwnB,EAAMhkB,KACJmkB,EAAOV,GAAO,GACdU,EAAQV,GAAO,EAAK,IACpB,OAEsB,IAAfM,IACTN,GAAOK,EAAMtnB,EAAM,IAAM,GAAKsnB,EAAMtnB,EAAM,GAC1CwnB,EAAMhkB,KACJmkB,EAAOV,GAAO,IACdU,EAAQV,GAAO,EAAK,IACpBU,EAAQV,GAAO,EAAK,IACpB,MAIJ,OAAOO,EAAMhrB,KAAK,KAzIpB,IALA,IAAImrB,EAAS,GACTN,EAAY,GACZH,EAA4B,oBAAfzoB,WAA6BA,WAAa4I,MAEvD4D,EAAO,mEACF9S,EAAI,EAAG6H,EAAMiL,EAAK1M,OAAQpG,EAAI6H,IAAO7H,EAC5CwvB,EAAOxvB,GAAK8S,EAAK9S,GACjBkvB,EAAUpc,EAAKxH,WAAWtL,IAAMA,EAQlC,SAAS2uB,EAASF,GAChB,IAAI5mB,EAAM4mB,EAAIroB,OAEd,GAAIyB,EAAM,EAAI,EACZ,MAAM,IAAIpF,MAAM,kDAKlB,IAAImsB,EAAWH,EAAI7kB,QAAQ,KAO3B,OANkB,IAAdglB,IAAiBA,EAAW/mB,GAMzB,CAAC+mB,EAJcA,IAAa/mB,EAC/B,EACA,EAAK+mB,EAAW,GAsEtB,SAASW,EAAaJ,EAAOrmB,EAAOC,GAGlC,IAFA,IAAI+lB,EARoBW,EASpBC,EAAS,GACJ1vB,EAAI8I,EAAO9I,EAAI+I,EAAK/I,GAAK,EAChC8uB,GACIK,EAAMnvB,IAAM,GAAM,WAClBmvB,EAAMnvB,EAAI,IAAM,EAAK,QACP,IAAfmvB,EAAMnvB,EAAI,IACb0vB,EAAOrkB,KAdFmkB,GADiBC,EAeMX,IAdT,GAAK,IACxBU,EAAOC,GAAO,GAAK,IACnBD,EAAOC,GAAO,EAAI,IAClBD,EAAa,GAANC,IAaT,OAAOC,EAAOrrB,KAAK,IAjGrB6qB,EAAU,IAAI5jB,WAAW,IAAM,GAC/B4jB,EAAU,IAAI5jB,WAAW,IAAM,I;;AClB/B9L,EAAQ0K,KAAO,SAAUlC,EAAQyC,EAAQklB,EAAMC,EAAMC,GACnD,IAAI1iB,EAAG/M,EACH0vB,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTjwB,EAAI2vB,EAAQE,EAAS,EAAK,EAC1BvvB,EAAIqvB,GAAQ,EAAI,EAChB5tB,EAAIiG,EAAOyC,EAASzK,GAOxB,IALAA,GAAKM,EAEL6M,EAAIpL,GAAM,IAAOkuB,GAAU,EAC3BluB,KAAQkuB,EACRA,GAASH,EACFG,EAAQ,EAAG9iB,EAAS,IAAJA,EAAWnF,EAAOyC,EAASzK,GAAIA,GAAKM,EAAG2vB,GAAS,GAKvE,IAHA7vB,EAAI+M,GAAM,IAAO8iB,GAAU,EAC3B9iB,KAAQ8iB,EACRA,GAASL,EACFK,EAAQ,EAAG7vB,EAAS,IAAJA,EAAW4H,EAAOyC,EAASzK,GAAIA,GAAKM,EAAG2vB,GAAS,GAEvE,GAAU,IAAN9iB,EACFA,EAAI,EAAI6iB,MACH,IAAI7iB,IAAM4iB,EACf,OAAO3vB,EAAI8vB,IAAsBld,KAAdjR,GAAK,EAAI,GAE5B3B,GAAQ4L,KAAK4E,IAAI,EAAGgf,GACpBziB,GAAQ6iB,EAEV,OAAQjuB,GAAK,EAAI,GAAK3B,EAAI4L,KAAK4E,IAAI,EAAGzD,EAAIyiB,IAG5CpwB,EAAQgI,MAAQ,SAAUQ,EAAQ/G,EAAOwJ,EAAQklB,EAAMC,EAAMC,GAC3D,IAAI1iB,EAAG/M,EAAGC,EACNyvB,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBI,EAAe,KAATP,EAAc5jB,KAAK4E,IAAI,GAAI,IAAM5E,KAAK4E,IAAI,GAAI,IAAM,EAC1D5Q,EAAI2vB,EAAO,EAAKE,EAAS,EACzBvvB,EAAIqvB,EAAO,GAAK,EAChB5tB,EAAId,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQ+K,KAAKokB,IAAInvB,GAEbyI,MAAMzI,IAAUA,IAAU+R,KAC5B5S,EAAIsJ,MAAMzI,GAAS,EAAI,EACvBkM,EAAI4iB,IAEJ5iB,EAAInB,KAAK0F,MAAM1F,KAAKqN,IAAIpY,GAAS+K,KAAKqkB,KAClCpvB,GAASZ,EAAI2L,KAAK4E,IAAI,GAAIzD,IAAM,IAClCA,IACA9M,GAAK,IAGLY,GADEkM,EAAI6iB,GAAS,EACNG,EAAK9vB,EAEL8vB,EAAKnkB,KAAK4E,IAAI,EAAG,EAAIof,IAEpB3vB,GAAK,IACf8M,IACA9M,GAAK,GAGH8M,EAAI6iB,GAASD,GACf3vB,EAAI,EACJ+M,EAAI4iB,GACK5iB,EAAI6iB,GAAS,GACtB5vB,GAAMa,EAAQZ,EAAK,GAAK2L,KAAK4E,IAAI,EAAGgf,GACpCziB,GAAQ6iB,IAER5vB,EAAIa,EAAQ+K,KAAK4E,IAAI,EAAGof,EAAQ,GAAKhkB,KAAK4E,IAAI,EAAGgf,GACjDziB,EAAI,IAIDyiB,GAAQ,EAAG5nB,EAAOyC,EAASzK,GAAS,IAAJI,EAAUJ,GAAKM,EAAGF,GAAK,IAAKwvB,GAAQ,GAI3E,IAFAziB,EAAKA,GAAKyiB,EAAQxvB,EAClB0vB,GAAQF,EACDE,EAAO,EAAG9nB,EAAOyC,EAASzK,GAAS,IAAJmN,EAAUnN,GAAKM,EAAG6M,GAAK,IAAK2iB,GAAQ,GAE1E9nB,EAAOyC,EAASzK,EAAIM,IAAU,IAAJyB,I,cCnF5B,IAAIwG,EAAW,GAAGA,SAElB9I,EAAOD,QAAU0P,MAAMpJ,SAAW,SAAUgE,GAC1C,MAA6B,kBAAtBvB,EAASpI,KAAK2J,K,ohDCHvB,uCACA,6CACA,wDACA,0CACA,uCACA,qCASa,QAAAwmB,qBAAuB,sBAAApuB,qBAClC,SAAOqC,WAAoB0pB,eAAmC,kD,+FAEnC,OADjBtrB,YAAgB/C,OAAM,YACL,GAAM,gBAAA0E,cAAcC,a,OAE7C,OAFMK,iBAAmB,UAElB,CAAP,EAAOJ,KACL,mBAAAf,kBAAiB,WACf,IAAIypB,EACAE,EACAd,EAEJ,IACEY,EAAa,mBAAA3pB,oBAAsB,mBAAAC,4BAA4B,wBAC/D4pB,EAAkB,mBAAA7pB,oBAAsB,mBAAAC,4BAA4B,4BACpE8oB,EAAc,mBAAA/oB,oBAAsB,mBAAAC,4BAA4B,qBAChE,MAAOjB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,oCAG3D,IAWI8rB,EAUAhB,EAeAb,EApCEc,EAAc,cAAA7nB,YAAY,IAAI8nB,MAEpC,IACQ,mBAAAhqB,oBAAsB2pB,EAAWM,aAAa,YAAAtQ,+CAC9C,mBAAA3Z,oBAAsB2pB,EAAWO,cAAcH,GACrD,MAAO/qB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,wCAK3D,IACE8rB,EAAgBroB,OAAOW,KAAKsnB,eAAe1lB,SAAS,UACpD,MAAOhG,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,gDAKlB,IACQ,mBAAAc,oBAAsB+oB,EAAYG,oBAAoB7nB,kBAC5DyoB,EAAiB,mBAAA9pB,oBAAsB+oB,EAAYoB,yBAC7C,mBAAAnqB,oBAAsB8pB,EAAeM,IAAIT,GACzC,mBAAA3pB,oBAAsB6pB,EAAgBkB,wBAAwB3rB,YAAY6a,2BAC1E,mBAAAja,oBAAsB6pB,EAAgBT,gBAAgB0B,GACtD,mBAAA9qB,oBAAsB+oB,EAAYsB,gBAAgBjrB,YAAYgZ,yCACpE,MAAOpZ,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,0CAK3D,IACQ,mBAAAgB,oBAAsB6pB,EAAgBmD,YAAYtC,cAAetrB,YAAY2Y,qBACnFkR,EAAY,mBAAAjpB,oBAAsB6pB,EAAgBoD,YAAYlE,EAAa3pB,YAAY2Y,qBACvF,MAAO/Y,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,gCAG3D,OAAOiqB,mB,8jDClFf,iDACA,wDACA,0CAUa,QAAAiE,WAAa,sBAAAvuB,qBACxB,SAAOmqB,oBAAwC,kD,sDAG7C,OAFQ1pB,YAAgB/C,OAAM,YAEvB,CAAP,EAAO4E,KACL,mBAAAf,kBAAiB,WACf,IACI4qB,EACAqC,EAFEvD,EAAkB,mBAAA5pB,oBAAsB,mBAAAC,4BAA4B,uBAI1E,IACE6qB,EAAgBroB,OAAOW,KAAK0lB,oBAAoB9jB,SAAS,UACzD,MAAOhG,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,gDAGlB,IAEI,mBAAAc,oBACA4pB,EAAgBU,kBAAkBlrB,YAAY+b,+CAE1C,mBAAAnb,oBAAsB4pB,EAAgBwD,qBAAqBhuB,YAAY6a,2BACvE,mBAAAja,oBAAsB4pB,EAAgByD,KAAKvC,GACjD,MAAO9rB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,wCAG3D,IACEmuB,EAAO,mBAAAntB,oBAAsB4pB,EAAgB3D,MAC7C,MAAOjnB,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,4BAG3D,OAAOmuB,kB,2JCnDf,iDACA,wDACA,0CAOa,QAAAG,cAAgB,sBAAA3uB,qBAAoB,WAC/C,IAAI4S,WAAa,KAEjB,OAAOtQ,KACL,mBAAAf,kBAAiB,WACf,IAAIsR,EAEJ,IACEA,EAAa,mBAAAxR,oBAAsB,mBAAAC,4BAA4B,kBAE/DsR,WAAa,mBAAAvR,oBAAsBwR,EAAWE,aAE9CH,WAAa,mBAAAvR,oBAAsBuR,WAAWvM,WAC9C,MAAOhG,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,uCAG3D,OAAOuS,mB,iHC5Bb,iDACA,0CACA,wDAOa,QAAAgc,iBAAmB,sBAAA5uB,qBAAoB,WAClD,IAAI2S,aAAe,KAEnB,OAAOrQ,KACL,mBAAAf,kBAAiB,WACf,IAAIsR,EAEJ,IACEA,EAAa,mBAAAxR,oBAAsB,mBAAAC,4BAA4B,mBAE/DqR,aAAe,mBAAAtR,oBAAsBwR,EAAWC,iBAG9CH,aAAe,mBAAAtR,oBAAsBwR,EAAWG,SAGlDL,aAAe,mBAAAtR,oBAAsBsR,aAAatM,WAClD,MAAOhG,GAGP,MAFAC,QAAQD,MAAMA,GAER,IAAIE,MAAM,iCAAAC,+BAA+BH,IAAU,6CAG3D,OAAOsS","file":"crypto-pro-js.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 = 12);\n","import { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\r\n\r\ntype Unpromisify = T extends Promise ? R : T;\r\n\r\nlet isSetLogLevel = false;\r\nlet isPluginLoaded = false;\r\n\r\nexport const _afterPluginsLoaded = any>(\r\n fn: T,\r\n): ((...args: Parameters) => Promise>>) => {\r\n const canPromise = Boolean(window.Promise);\r\n\r\n return async function (...args: Parameters): Promise>> {\r\n if (!isPluginLoaded) {\r\n try {\r\n require('../vendor/cadesplugin_api');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(\r\n _extractMeaningfulErrorMessage(error) || 'Ошибка при подключении модуля для работы с Cades plugin',\r\n );\r\n }\r\n\r\n isPluginLoaded = true;\r\n }\r\n\r\n const { cadesplugin } = window;\r\n\r\n if (!canPromise) {\r\n throw new Error('Необходим полифилл для Promise');\r\n }\r\n\r\n if (!cadesplugin) {\r\n throw new Error('Не подключен модуль для работы с Cades plugin');\r\n }\r\n\r\n if (!isSetLogLevel) {\r\n cadesplugin.set_log_level(cadesplugin.LOG_LEVEL_ERROR);\r\n\r\n isSetLogLevel = true;\r\n }\r\n\r\n try {\r\n await cadesplugin;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(\r\n _extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации модуля для работы с Cades plugin',\r\n );\r\n }\r\n\r\n return await fn.apply(this, args);\r\n };\r\n};\r\n","export const _extractMeaningfulErrorMessage = (error: Error): string | null => {\r\n let errorContainer = window.cadesplugin?.getLastError && window.cadesplugin.getLastError(error);\r\n\r\n if (!errorContainer?.message) {\r\n if (!error.message) {\r\n return null;\r\n }\r\n\r\n errorContainer = error;\r\n }\r\n\r\n const containsRussianLetters = /[а-яА-Я]/.test(errorContainer.message);\r\n\r\n if (!containsRussianLetters) {\r\n return null;\r\n }\r\n\r\n const searchResult = errorContainer.message.match(/^(.*?)(?:(?:\\.?\\s?\\(?(0x[0-9a-zA-Z]{1,8})\\)?)|(?:\\.?$))/);\r\n\r\n return searchResult ? searchResult[1] + (searchResult[2] ? ' (Код ошибки: ' + searchResult[2] + ')' : '') : null;\r\n};\r\n","// синтетические переменные, которые подменяются в рантайме\r\nexport const __cadesAsyncToken__ = {};\r\nexport const __createCadesPluginObject__ = (...args): any => ({});\r\n\r\nfunction getGeneratorConstructor(): GeneratorFunction {\r\n return new Function('', 'return Object.getPrototypeOf(function*(){}).constructor')();\r\n}\r\n\r\nexport const _generateCadesFn = (callback: Function): string => {\r\n const { cadesplugin } = window;\r\n const cadesGeneratorsAPI = Boolean(cadesplugin.CreateObjectAsync);\r\n const callbackName = callback.name || 'dynamicFn';\r\n const callbackLiteral = String(callback);\r\n const callbackArguments = callbackLiteral.match(/^function[\\s\\w]*?\\((.*?)\\)/)?.[1] || '';\r\n const callbackBody = callbackLiteral.replace(/^.*?{([\\s\\S]*?)}$/, '$1');\r\n let crossEnvCallbackLiteral = String(\r\n new (cadesGeneratorsAPI ? getGeneratorConstructor() : Function)(callbackArguments, callbackBody),\r\n );\r\n\r\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\r\n /\\w+?\\.__createCadesPluginObject__(\\([\\s\\S]*?\\))/gm,\r\n `cadesplugin.CreateObject${cadesGeneratorsAPI ? 'Async' : ''}$1`,\r\n );\r\n\r\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\r\n /\\w+?\\.__cadesAsyncToken__\\s*?\\+\\s*?\\b/gm,\r\n cadesGeneratorsAPI ? 'yield ' : '',\r\n );\r\n\r\n if (!cadesGeneratorsAPI) {\r\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/propset_(.*?)\\((.*?)\\)/gm, '$1 = $2');\r\n }\r\n\r\n return [\r\n cadesGeneratorsAPI ? `cadesplugin.async_spawn(${crossEnvCallbackLiteral});` : `(${crossEnvCallbackLiteral})();`,\r\n `//# sourceURL=crypto-pro_${callbackName}.js`,\r\n ].join('');\r\n};\r\n","export * from './cades-constants';\r\nexport * from './issuer-tags-translations';\r\nexport * from './oids-dictionary';\r\nexport * from './subject-tags-translations';\r\n","export * from './certificate';\r\n","import { CadesCertificate } from '../api/certificate';\r\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\r\n\r\n/**\r\n * Возвращает сертификат в формате Cades по отпечатку\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @returns сертификат в формате Cades\r\n */\r\nexport const _getCadesCert = _afterPluginsLoaded(\r\n (thumbprint: string): CadesCertificate => {\r\n const { cadesplugin } = window;\r\n\r\n return eval(\r\n _generateCadesFn(function _getCadesCert() {\r\n let cadesStore;\r\n\r\n try {\r\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\r\n }\r\n\r\n if (!cadesStore) {\r\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesStore.Open(\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\r\n cadesplugin.CAPICOM_MY_STORE,\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\r\n )\r\n );\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\r\n }\r\n\r\n let cadesCertificateList;\r\n let certificatesCount;\r\n\r\n try {\r\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\r\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\r\n }\r\n\r\n if (!certificatesCount) {\r\n throw new Error('Нет доступных сертификатов');\r\n }\r\n\r\n let cadesCertificate: CadesCertificate;\r\n\r\n try {\r\n cadesCertificateList =\r\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\r\n\r\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\r\n\r\n if (!count) {\r\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\r\n }\r\n\r\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата');\r\n }\r\n\r\n cadesStore.Close();\r\n\r\n return cadesCertificate;\r\n }),\r\n );\r\n },\r\n);\r\n","export const _extractCommonName = (subjectName: string): string | undefined =>\r\n subjectName.match(/CN=\"?(.+?)\"?(?:,|$)/)?.[1]?.replace(/\"{2}/g, '\"');\r\n","/**\r\n * Возвращает объект даты, совместимый с Cades plugin'ом, зависящий от браузера.\r\n *\r\n * В IE необходимо использовать специфичный формат \"VT_DATE\"\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Microsoft_Extensions/Date.getVarDate\r\n */\r\nexport const _getDateObj = (dateObj): Date => (dateObj.getVarDate ? dateObj.getVarDate() : dateObj);\r\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","import { CadesCertificate, Certificate } from './certificate';\r\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractCommonName } from '../helpers/_extractCommonName';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\nlet certificatesCache: Certificate[];\r\n\r\n/**\r\n * Возвращает список сертификатов, доступных пользователю в системе\r\n *\r\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\r\n * @returns список сертификатов\r\n */\r\nexport const getUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\r\n const { cadesplugin } = window;\r\n\r\n if (!resetCache && certificatesCache) {\r\n return certificatesCache;\r\n }\r\n\r\n return eval(\r\n _generateCadesFn(function getUserCertificates(): Certificate[] {\r\n let cadesStore;\r\n\r\n try {\r\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesStore.Open(\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\r\n cadesplugin.CAPICOM_MY_STORE,\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\r\n )\r\n );\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\r\n }\r\n\r\n let cadesCertificates;\r\n let cadesCertificatesCount;\r\n\r\n try {\r\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\r\n\r\n if (cadesCertificates) {\r\n cadesCertificates =\r\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\r\n\r\n /**\r\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\r\n * или не действительны на данный момент\r\n */\r\n cadesCertificates =\r\n __cadesAsyncToken__ +\r\n cadesCertificates.Find(\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\r\n CAPICOM_PROPID_KEY_PROV_INFO,\r\n );\r\n\r\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\r\n }\r\n\r\n if (!cadesCertificatesCount) {\r\n throw new Error('Нет доступных сертификатов');\r\n }\r\n\r\n const certificateList: Certificate[] = [];\r\n\r\n try {\r\n while (cadesCertificatesCount) {\r\n const cadesCertificate: CadesCertificate =\r\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\r\n\r\n certificateList.push(\r\n new Certificate(\r\n cadesCertificate,\r\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\r\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\r\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\r\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\r\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\r\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\r\n ),\r\n );\r\n\r\n cadesCertificatesCount--;\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\r\n }\r\n\r\n cadesStore.Close();\r\n\r\n certificatesCache = certificateList;\r\n\r\n return certificatesCache;\r\n }),\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Возвращает указанное внутренее свойство у сертификата в формате Cades\r\n *\r\n * @param propName = наименование свойства\r\n * @returns значение запрошенного свойства\r\n */\r\nexport const getCadesProp = _afterPluginsLoaded(function (propName: string): any {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function getCadesProp() {\r\n let propertyValue;\r\n\r\n try {\r\n propertyValue = __cadesAsyncToken__ + cadesCertificate[propName];\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при обращении к свойству сертификата');\r\n }\r\n\r\n return propertyValue;\r\n }),\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\nexport interface SystemInfo {\r\n cadesVersion: string;\r\n cspVersion: string;\r\n}\r\n\r\n/**\r\n * Предоставляет информацию о системе\r\n *\r\n * @returns информацию о CSP и плагине\r\n */\r\nexport const getSystemInfo = _afterPluginsLoaded(\r\n (): SystemInfo => {\r\n const sysInfo = {\r\n cadesVersion: null,\r\n cspVersion: null,\r\n };\r\n\r\n return eval(\r\n _generateCadesFn(function getSystemInfo(): SystemInfo {\r\n let cadesAbout;\r\n\r\n try {\r\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\r\n\r\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\r\n sysInfo.cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\r\n\r\n if (!sysInfo.cadesVersion) {\r\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\r\n }\r\n\r\n sysInfo.cadesVersion = __cadesAsyncToken__ + sysInfo.cadesVersion.toString();\r\n sysInfo.cspVersion = __cadesAsyncToken__ + sysInfo.cspVersion.toString();\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о системе');\r\n }\r\n\r\n return sysInfo;\r\n }),\r\n );\r\n },\r\n);\r\n","export * from './api';\r\n","export * from './getCertificate';\nexport * from './getUserCertificates';\nexport * from './getAllUserCertificates';\nexport * from './getContainerCertificates';\nexport * from './getAllContainerCertificates';\nexport * from './getSystemInfo';\nexport * from './isValidSystemSetup';\nexport * from './createXMLSignature';\nexport * from './createDetachedSignature';\nexport * from './addDetachedSignature';\nexport * from './createAttachedSignature';\nexport * from './addAttachedSignature';\nexport * from './createHash';\nexport * from './certificate';\nexport * from './getCspVersion';\nexport * from './getPluginVersion';\n","import { Certificate } from './certificate';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { getUserCertificates } from './getUserCertificates';\r\n\r\n/**\r\n * Возвращает сертификат по отпечатку\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @returns сертификат\r\n */\r\nexport const getCertificate = _afterPluginsLoaded(\r\n async (thumbprint: string): Promise => {\r\n if (!thumbprint) {\r\n throw new Error('Отпечаток не указан');\r\n }\r\n\r\n const availableCertificates: Certificate[] = await getUserCertificates();\r\n const foundCertificate: Certificate = availableCertificates.find((cert) => cert.thumbprint === thumbprint);\r\n\r\n if (!foundCertificate) {\r\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\r\n }\r\n\r\n return foundCertificate;\r\n },\r\n);\r\n",";(function () {\r\n //already loaded\r\n if(window.cadesplugin)\r\n return;\r\n\r\n var pluginObject;\r\n var plugin_resolved = 0;\r\n var plugin_reject;\r\n var plugin_resolve;\r\n var isOpera = 0;\r\n var isFireFox = 0;\r\n var isSafari = 0;\r\n var isYandex = 0;\r\n var canPromise = !!window.Promise;\r\n var cadesplugin_loaded_event_recieved = false;\r\n var cadesplugin;\r\n\r\n if(canPromise)\r\n {\r\n cadesplugin = new Promise(function(resolve, reject)\r\n {\r\n plugin_resolve = resolve;\r\n plugin_reject = reject;\r\n });\r\n } else\r\n {\r\n cadesplugin = {};\r\n }\r\n\r\n function check_browser() {\r\n var ua= navigator.userAgent, tem, M= ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n if(/trident/i.test(M[1])){\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name:'IE', version:(tem[1] || '')};\r\n }\r\n if(M[1] === 'Chrome'){\r\n tem = ua.match(/\\b(OPR|Edg|YaBrowser)\\/(\\d+)/);\r\n if (tem != null)\r\n return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\r\n }\r\n M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null)\r\n M.splice(1, 1, tem[1]);\r\n return {name:M[0],version:M[1]};\r\n }\r\n var browserSpecs = check_browser();\r\n\r\n function cpcsp_console_log(level, msg){\r\n //IE9 не может писать в консоль если не открыта вкладка developer tools\r\n if(typeof(console) === 'undefined')\r\n return;\r\n if (level <= cadesplugin.current_log_level ){\r\n if (level === cadesplugin.LOG_LEVEL_DEBUG)\r\n console.log(\"DEBUG: %s\", msg);\r\n if (level === cadesplugin.LOG_LEVEL_INFO)\r\n console.info(\"INFO: %s\", msg);\r\n if (level === cadesplugin.LOG_LEVEL_ERROR)\r\n console.error(\"ERROR: %s\", msg);\r\n return;\r\n }\r\n }\r\n\r\n function set_log_level(level){\r\n if (!((level === cadesplugin.LOG_LEVEL_DEBUG) ||\r\n (level === cadesplugin.LOG_LEVEL_INFO) ||\r\n (level === cadesplugin.LOG_LEVEL_ERROR))){\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"cadesplugin_api.js: Incorrect log_level: \" + level);\r\n return;\r\n }\r\n cadesplugin.current_log_level = level;\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = DEBUG\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = INFO\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = ERROR\");\r\n if(isNativeMessageSupported())\r\n {\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\r\n window.postMessage(\"set_log_level=debug\", \"*\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\r\n window.postMessage(\"set_log_level=info\", \"*\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\r\n window.postMessage(\"set_log_level=error\", \"*\");\r\n }\r\n }\r\n\r\n function set_constantValues()\r\n {\r\n cadesplugin.CAPICOM_MEMORY_STORE = 0;\r\n cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_MEMORY_STORE = 0;\r\n cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_CONTAINER_STORE = 100;\r\n\r\n cadesplugin.CAPICOM_MY_STORE = \"My\";\r\n\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\r\n\r\n cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010;\r\n cadesplugin.CADESCOM_XADES_BES = 0x00000020;\r\n cadesplugin.CADESCOM_XADES_T = 0x00000050;\r\n cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0;\r\n cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000;\r\n\r\n cadesplugin.XmlDsigGost3410UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr3411\";\r\n cadesplugin.XmlDsigGost3410Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411\";\r\n\r\n cadesplugin.XmlDsigGost3411Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3410Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3411Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512\";\r\n cadesplugin.XmlDsigGost3410Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512\";\r\n\r\n cadesplugin.CADESCOM_CADES_DEFAULT = 0;\r\n cadesplugin.CADESCOM_CADES_BES = 1;\r\n cadesplugin.CADESCOM_CADES_T = 0x5;\r\n cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\r\n cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff;\r\n\r\n cadesplugin.CADESCOM_ENCODE_BASE64 = 0;\r\n cadesplugin.CADESCOM_ENCODE_BINARY = 1;\r\n cadesplugin.CADESCOM_ENCODE_ANY = -1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\r\n\r\n cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\r\n cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\r\n\r\n cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\r\n\r\n cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9;\r\n\r\n cadesplugin.CAPICOM_OID_OTHER = 0;\r\n cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\r\n\r\n cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2;\r\n cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5;\r\n cadesplugin.CAPICOM_EKU_OTHER = 0;\r\n\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100;\r\n cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1;\r\n\r\n cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0;\r\n cadesplugin.CADESCOM_BASE64_TO_BINARY = 1;\r\n\r\n cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\r\n\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\r\n\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\r\n\r\n cadesplugin.LOG_LEVEL_DEBUG = 4;\r\n cadesplugin.LOG_LEVEL_INFO = 2;\r\n cadesplugin.LOG_LEVEL_ERROR = 1;\r\n\r\n cadesplugin.CADESCOM_AllowNone = 0;\r\n cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1;\r\n cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2;\r\n cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4;\r\n cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000;\r\n cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000;\r\n cadesplugin.CADESCOM_UseContainerStore = 0x40000000;\r\n\r\n cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04;\r\n cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07;\r\n\r\n cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00;\r\n cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01;\r\n cadesplugin.ENABLE_CARRIER_CREATE = 0x02;\r\n cadesplugin.ENABLE_ANY_OPERATION = 0x03;\r\n\r\n cadesplugin.CADESCOM_PRODUCT_CSP = 0;\r\n cadesplugin.CADESCOM_PRODUCT_OCSP = 1;\r\n cadesplugin.CADESCOM_PRODUCT_TSP = 2;\r\n\r\n cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001;\r\n cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002;\r\n cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004;\r\n cadesplugin.MEDIA_TYPE_SCARD = 0x00000008;\r\n\r\n cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0;\r\n cadesplugin.AT_KEYEXCHANGE = 1;\r\n cadesplugin.AT_SIGNATURE = 2;\r\n }\r\n\r\n function async_spawn(generatorFunc) {\r\n function continuer(verb, arg) {\r\n var result;\r\n try {\r\n result = generator[verb](arg);\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n if (result.done) {\r\n return result.value;\r\n } else {\r\n return Promise.resolve(result.value).then(onFulfilled, onRejected);\r\n }\r\n }\r\n var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));\r\n var onFulfilled = continuer.bind(continuer, \"next\");\r\n var onRejected = continuer.bind(continuer, \"throw\");\r\n return onFulfilled();\r\n }\r\n\r\n function isIE() {\r\n // var retVal = ((\"Microsoft Internet Explorer\" == navigator.appName) || // IE < 11\r\n // navigator.userAgent.match(/Trident\\/./i)); // IE 11\r\n return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE');\r\n }\r\n\r\n function isIOS() {\r\n return (navigator.userAgent.match(/ipod/i) ||\r\n navigator.userAgent.match(/ipad/i) ||\r\n navigator.userAgent.match(/iphone/i));\r\n }\r\n\r\n function isNativeMessageSupported()\r\n {\r\n // В IE работаем через NPAPI\r\n if(isIE())\r\n return false;\r\n // В Edge работаем через NativeMessage\r\n if (browserSpecs.name === 'Edg') {\r\n return true;\r\n }\r\n if (browserSpecs.name === 'YaBrowser') {\r\n isYandex = true;\r\n return true;\r\n }\r\n // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии\r\n if(browserSpecs.name === 'Opera') {\r\n isOpera = true;\r\n if(browserSpecs.version >= 33){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n if(browserSpecs.name === 'Firefox') {\r\n isFireFox = true;\r\n if(browserSpecs.version >= 52){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n if(browserSpecs.name === 'Chrome') {\r\n if(browserSpecs.version >= 42){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n //В Сафари начиная с 12 версии нет NPAPI\r\n if(browserSpecs.name === 'Safari') {\r\n isSafari = true;\r\n if(browserSpecs.version >= 12) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // Функция активации объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObject(name) {\r\n if (isIOS()) {\r\n // На iOS для создания объектов используется функция\r\n // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js\r\n return call_ru_cryptopro_npcades_10_native_bridge(\"CreateObject\", [name]);\r\n }\r\n if (isIE()) {\r\n // В Internet Explorer создаются COM-объекты\r\n if (name.match(/X509Enrollment/i)) {\r\n try {\r\n // Объекты CertEnroll пробуем создавать через нашу фабрику,\r\n // если не получилось то через CX509EnrollmentWebClassFactory\r\n var objCertEnrollClassFactory = document.getElementById(\"webClassFactory\");\r\n return objCertEnrollClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n try {\r\n var objWebClassFactory = document.getElementById(\"certEnrollClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (err) {\r\n throw (\"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS\");\r\n }\r\n }\r\n }\r\n // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory\r\n try {\r\n var objWebClassFactory = document.getElementById(\"webClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n // Для версий плагина ниже 2.0.12538\r\n return new ActiveXObject(name);\r\n }\r\n }\r\n // создаются объекты NPAPI\r\n return pluginObject.CreateObject(name);\r\n }\r\n\r\n function decimalToHexString(number) {\r\n if (number < 0) {\r\n number = 0xFFFFFFFF + number + 1;\r\n }\r\n\r\n return number.toString(16).toUpperCase();\r\n }\r\n\r\n function GetMessageFromException(e) {\r\n var err = e.message;\r\n if (!err) {\r\n err = e;\r\n } else if (e.number) {\r\n err += \" (0x\" + decimalToHexString(e.number) + \")\";\r\n }\r\n return err;\r\n }\r\n\r\n function getLastError(exception) {\r\n if(isNativeMessageSupported() || isIE() || isIOS() ) {\r\n return GetMessageFromException(exception);\r\n }\r\n\r\n try {\r\n return pluginObject.getLastError();\r\n } catch(e) {\r\n return GetMessageFromException(exception);\r\n }\r\n }\r\n\r\n // Функция для удаления созданных объектов\r\n function ReleasePluginObjects() {\r\n return cpcsp_chrome_nmcades.ReleasePluginObjects();\r\n }\r\n\r\n // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObjectAsync(name) {\r\n return pluginObject.CreateObjectAsync(name);\r\n }\r\n\r\n //Функции для IOS\r\n var ru_cryptopro_npcades_10_native_bridge = {\r\n callbacksCount : 1,\r\n callbacks : {},\r\n\r\n // Automatically called by native layer when a result is available\r\n resultForCallback : function resultForCallback(callbackId, resultArray) {\r\n var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId];\r\n if (!callback) return;\r\n callback.apply(null,resultArray);\r\n },\r\n\r\n // Use this in javascript to request native objective-c code\r\n // functionName : string (I think the name is explicit :p)\r\n // args : array of arguments\r\n // callback : function with n-arguments that is going to be called when the native code returned\r\n call : function call(functionName, args, callback) {\r\n var hasCallback = callback && typeof callback === \"function\";\r\n var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0;\r\n\r\n if (hasCallback)\r\n ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback;\r\n\r\n var iframe = document.createElement(\"IFRAME\");\r\n var arrObjs = new Array(\"_CPNP_handle\");\r\n try{\r\n iframe.setAttribute(\"src\", \"cpnp-js-call:\" + functionName + \":\" + callbackId+ \":\" + encodeURIComponent(JSON.stringify(args, arrObjs)));\r\n } catch(e){\r\n alert(e);\r\n }\r\n document.documentElement.appendChild(iframe);\r\n iframe.parentNode.removeChild(iframe);\r\n iframe = null;\r\n }\r\n };\r\n\r\n function call_ru_cryptopro_npcades_10_native_bridge(functionName, array){\r\n var tmpobj;\r\n var ex;\r\n ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function(e, response){\r\n ex = e;\r\n var str='tmpobj='+response;\r\n eval(str);\r\n if (typeof (tmpobj) === \"string\"){\r\n tmpobj = tmpobj.replace(/\\\\\\n/gm, \"\\n\");\r\n tmpobj = tmpobj.replace(/\\\\\\r/gm, \"\\r\");\r\n }\r\n });\r\n if(ex)\r\n throw ex;\r\n return tmpobj;\r\n }\r\n\r\n function show_firefox_missing_extension_dialog()\r\n {\r\n if (!window.cadesplugin_skip_extension_install)\r\n {\r\n var ovr = document.createElement('div');\r\n ovr.id = \"cadesplugin_ovr\";\r\n ovr.style = \"visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)\";\r\n ovr.innerHTML = \"
\" +\r\n \"\" +\r\n \"
Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.\" +\r\n \"
\";\r\n document.getElementsByTagName(\"Body\")[0].appendChild(ovr);\r\n document.getElementById(\"cadesplugin_close_install\").addEventListener('click',function()\r\n {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n\r\n ovr.addEventListener('click',function()\r\n {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n document.getElementById(\"cadesplugin_ovr\").style.visibility = 'hidden';\r\n });\r\n ovr.style.visibility=\"visible\";\r\n }\r\n }\r\n function firefox_or_safari_nmcades_onload() {\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n\r\n function nmcades_api_onload () {\r\n window.postMessage(\"cadesplugin_echo_request\", \"*\");\r\n window.addEventListener(\"message\", function (event){\r\n if (typeof(event.data) !== \"string\" || !event.data.match(\"cadesplugin_loaded\"))\r\n return;\r\n if (cadesplugin_loaded_event_recieved)\r\n return;\r\n if(isFireFox || isSafari)\r\n {\r\n // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js\r\n var url = event.data.substring(event.data.indexOf(\"url:\") + 4);\r\n if (!url.match(\"^moz-extension://[a-zA-Z0-9-]+/nmcades_plugin_api.js$\")\r\n && !url.match(\"^safari-extension://[a-zA-Z0-9-]+/[a-zA-Z0-9]+/nmcades_plugin_api.js$\"))\r\n {\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"Bad url \\\"\" + url + \"\\\" for load CryptoPro Extension for CAdES Browser plug-in\");\r\n plugin_loaded_error();\r\n return;\r\n }\r\n var fileref = document.createElement('script');\r\n fileref.setAttribute(\"type\", \"text/javascript\");\r\n fileref.setAttribute(\"src\", url);\r\n fileref.onerror = plugin_loaded_error;\r\n fileref.onload = firefox_or_safari_nmcades_onload;\r\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\r\n }else {\r\n cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);\r\n }\r\n cadesplugin_loaded_event_recieved = true;\r\n }, false);\r\n }\r\n\r\n //Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari\r\n function load_extension()\r\n {\r\n if(isFireFox || isSafari){\r\n // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера.\r\n nmcades_api_onload();\r\n } else {\r\n // в асинхронном варианте для Yandex и Opera подключаем расширение из Opera store.\r\n if (isOpera || isYandex) {\r\n var fileref = document.createElement('script');\r\n fileref.setAttribute(\"type\", \"text/javascript\");\r\n fileref.setAttribute(\"src\", \"chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js\");\r\n fileref.onerror = plugin_loaded_error;\r\n fileref.onload = nmcades_api_onload;\r\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\r\n } else {\r\n // для Chrome, Chromium, Chromium Edge расширение из Chrome store\r\n var fileref = document.createElement('script');\r\n fileref.setAttribute(\"type\", \"text/javascript\");\r\n fileref.setAttribute(\"src\", \"chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js\");\r\n fileref.onerror = plugin_loaded_error;\r\n fileref.onload = nmcades_api_onload;\r\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\r\n }\r\n }\r\n }\r\n\r\n //Загружаем плагин для NPAPI\r\n function load_npapi_plugin()\r\n {\r\n var elem = document.createElement('object');\r\n elem.setAttribute(\"id\", \"cadesplugin_object\");\r\n elem.setAttribute(\"type\", \"application/x-cades\");\r\n elem.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem);\r\n pluginObject = document.getElementById(\"cadesplugin_object\");\r\n if(isIE())\r\n {\r\n var elem1 = document.createElement('object');\r\n elem1.setAttribute(\"id\", \"certEnrollClassFactory\");\r\n elem1.setAttribute(\"classid\", \"clsid:884e2049-217d-11da-b2a4-000e7bbb2b09\");\r\n elem1.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem1);\r\n var elem2 = document.createElement('object');\r\n elem2.setAttribute(\"id\", \"webClassFactory\");\r\n elem2.setAttribute(\"classid\", \"clsid:B04C8637-10BD-484E-B0DA-B8A039F60024\");\r\n elem2.setAttribute(\"style\", \"visibility: hidden\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(elem2);\r\n }\r\n }\r\n\r\n //Отправляем событие что все ок.\r\n function plugin_loaded()\r\n {\r\n plugin_resolved = 1;\r\n if(canPromise)\r\n {\r\n plugin_resolve();\r\n }else {\r\n window.postMessage(\"cadesplugin_loaded\", \"*\");\r\n }\r\n }\r\n\r\n //Отправляем событие что сломались.\r\n function plugin_loaded_error(msg)\r\n {\r\n if(typeof(msg) === 'undefined' || typeof(msg) === 'object')\r\n msg = \"Плагин недоступен\";\r\n plugin_resolved = 1;\r\n if(canPromise)\r\n {\r\n plugin_reject(msg);\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n }\r\n\r\n //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку\r\n function check_load_timeout()\r\n {\r\n if(plugin_resolved === 1)\r\n return;\r\n if(isFireFox)\r\n {\r\n show_firefox_missing_extension_dialog();\r\n }\r\n plugin_resolved = 1;\r\n if(canPromise)\r\n {\r\n plugin_reject(\"Истекло время ожидания загрузки плагина\");\r\n } else {\r\n window.postMessage(\"cadesplugin_load_error\", \"*\");\r\n }\r\n\r\n }\r\n\r\n //Вспомогательная функция для NPAPI\r\n function createPromise(arg)\r\n {\r\n return new Promise(arg);\r\n }\r\n\r\n function check_npapi_plugin (){\r\n try {\r\n var oAbout = CreateObject(\"CAdESCOM.About\");\r\n plugin_loaded();\r\n }\r\n catch (err) {\r\n document.getElementById(\"cadesplugin_object\").style.display = 'none';\r\n // Объект создать не удалось, проверим, установлен ли\r\n // вообще плагин. Такая возможность есть не во всех браузерах\r\n var mimetype = navigator.mimeTypes[\"application/x-cades\"];\r\n if (mimetype) {\r\n var plugin = mimetype.enabledPlugin;\r\n if (plugin) {\r\n plugin_loaded_error(\"Плагин загружен, но не создаются обьекты\");\r\n }else\r\n {\r\n plugin_loaded_error(\"Ошибка при загрузке плагина\");\r\n }\r\n }else\r\n {\r\n plugin_loaded_error(\"Плагин недоступен\");\r\n }\r\n }\r\n }\r\n\r\n //Проверяем работает ли плагин\r\n function check_plugin_working()\r\n {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = \"\";\r\n var isIeLessThan9 = (div.getElementsByTagName(\"i\").length === 1);\r\n if (isIeLessThan9) {\r\n plugin_loaded_error(\"Internet Explorer версии 8 и ниже не поддерживается\");\r\n return;\r\n }\r\n\r\n if(isNativeMessageSupported())\r\n {\r\n load_extension();\r\n }else if(!canPromise) {\r\n window.addEventListener(\"message\", function (event){\r\n if (event.data !== \"cadesplugin_echo_request\")\r\n return;\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n },\r\n false);\r\n }else\r\n {\r\n if(document.readyState === \"complete\"){\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n } else {\r\n window.addEventListener(\"load\", function (event) {\r\n load_npapi_plugin();\r\n check_npapi_plugin();\r\n }, false);\r\n }\r\n }\r\n }\r\n\r\n function set_pluginObject(obj)\r\n {\r\n pluginObject = obj;\r\n }\r\n\r\n function is_capilite_enabled()\r\n {\r\n if ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP)\r\n return true;\r\n return false;\r\n };\r\n\r\n //Export\r\n cadesplugin.JSModuleVersion = \"2.3.1\";\r\n cadesplugin.async_spawn = async_spawn;\r\n cadesplugin.set = set_pluginObject;\r\n cadesplugin.set_log_level = set_log_level;\r\n cadesplugin.getLastError = getLastError;\r\n cadesplugin.is_capilite_enabled = is_capilite_enabled;\r\n\r\n if(isNativeMessageSupported())\r\n {\r\n cadesplugin.CreateObjectAsync = CreateObjectAsync;\r\n cadesplugin.ReleasePluginObjects = ReleasePluginObjects;\r\n }\r\n\r\n if(!isNativeMessageSupported())\r\n {\r\n cadesplugin.CreateObject = CreateObject;\r\n }\r\n\r\n if(window.cadesplugin_load_timeout)\r\n {\r\n setTimeout(check_load_timeout, window.cadesplugin_load_timeout);\r\n }\r\n else\r\n {\r\n setTimeout(check_load_timeout, 20000);\r\n }\r\n\r\n set_constantValues();\r\n\r\n cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR;\r\n window.cadesplugin = cadesplugin;\r\n check_plugin_working();\r\n}());\r\n","import { ISSUER_TAGS_TRANSLATIONS, SUBJECT_TAGS_TRANSLATIONS } from '../../constants';\r\nimport { TagTranslation } from '../../helpers/_parseCertInfo';\r\nimport { exportBase64 } from './exportBase64';\r\nimport { getAlgorithm } from './getAlgorithm';\r\nimport { getCadesProp } from './getCadesProp';\r\nimport { getDecodedExtendedKeyUsage, ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';\r\nimport { getExtendedKeyUsage } from './getExtendedKeyUsage';\r\nimport { getInfo } from './getInfo';\r\nimport { hasExtendedKeyUsage } from './hasExtendedKeyUsage';\r\nimport { isValid } from './isValid';\r\n\r\nexport type CadesCertificate = any;\r\n\r\nexport class Certificate {\r\n constructor(\r\n public _cadesCertificate: CadesCertificate,\r\n public name: string,\r\n public issuerName: string,\r\n public subjectName: string,\r\n public thumbprint: string,\r\n public validFrom: string,\r\n public validTo: string,\r\n ) {}\r\n\r\n public getOwnerInfo(): Promise {\r\n return getInfo.call(this, SUBJECT_TAGS_TRANSLATIONS, 'SubjectName');\r\n }\r\n\r\n public getIssuerInfo(): Promise {\r\n return getInfo.call(this, ISSUER_TAGS_TRANSLATIONS, 'IssuerName');\r\n }\r\n\r\n public getExtendedKeyUsage(): Promise {\r\n return getExtendedKeyUsage.call(this);\r\n }\r\n\r\n public getDecodedExtendedKeyUsage(): Promise {\r\n return getDecodedExtendedKeyUsage.call(this);\r\n }\r\n\r\n public getAlgorithm(): Promise {\r\n return getAlgorithm.call(this);\r\n }\r\n\r\n public getCadesProp(propName): Promise {\r\n return getCadesProp.call(this, propName);\r\n }\r\n\r\n public isValid(): Promise {\r\n return isValid.call(this);\r\n }\r\n\r\n public exportBase64(): Promise {\r\n return exportBase64.call(this);\r\n }\r\n\r\n public hasExtendedKeyUsage(oids): Promise {\r\n return hasExtendedKeyUsage.call(this, oids);\r\n }\r\n}\r\n","export const CADESCOM_ATTRIBUTE_OTHER = -1;\r\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\nexport const CADESCOM_AllowNoOutstandingRequest = 1;\r\nexport const CADESCOM_AllowNone = 0;\r\nexport const CADESCOM_AllowUntrustedCertificate = 2;\r\nexport const CADESCOM_AllowUntrustedRoot = 4;\r\nexport const CADESCOM_BASE64_TO_BINARY = 0x01;\r\nexport const CADESCOM_CADES_BES = 1;\r\nexport const CADESCOM_CADES_DEFAULT = 0;\r\nexport const CADESCOM_CADES_T = 5;\r\nexport const CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\r\nexport const CADESCOM_CONTAINER_STORE = 100;\r\nexport const CADESCOM_CURRENT_USER_STORE = 2;\r\nexport const CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\r\nexport const CADESCOM_DISPLAY_DATA_CONTENT = 1;\r\nexport const CADESCOM_DISPLAY_DATA_NONE = 0;\r\nexport const CADESCOM_ENCODE_ANY = -1;\r\nexport const CADESCOM_ENCODE_BASE64 = 0;\r\nexport const CADESCOM_ENCODE_BINARY = 1;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\r\nexport const CADESCOM_HASH_ALGORITHM_MD2 = 1;\r\nexport const CADESCOM_HASH_ALGORITHM_MD4 = 2;\r\nexport const CADESCOM_HASH_ALGORITHM_MD5 = 3;\r\nexport const CADESCOM_HASH_ALGORITHM_SHA1 = 0;\r\nexport const CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\r\nexport const CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\r\nexport const CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\r\nexport const CADESCOM_LOCAL_MACHINE_STORE = 1;\r\nexport const CADESCOM_PKCS7_TYPE = 65535;\r\nexport const CADESCOM_STRING_TO_UCS2LE = 0x00;\r\nexport const CADESCOM_SkipInstallToStore = 268435456;\r\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\r\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\r\nexport const CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\r\nexport const CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;\r\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\nexport const CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\r\nexport const CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\r\nexport const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\r\nexport const CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\r\nexport const CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\r\nexport const CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\r\nexport const CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\r\nexport const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\r\nexport const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\nexport const CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\r\nexport const CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\r\nexport const CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\r\nexport const CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\r\nexport const CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\r\nexport const CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\r\nexport const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\r\nexport const CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\r\nexport const CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\r\nexport const CAPICOM_CURRENT_USER_STORE = 2;\r\nexport const CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\r\nexport const CAPICOM_EKU_CLIENT_AUTH = 2;\r\nexport const CAPICOM_EKU_OTHER = 0;\r\nexport const CAPICOM_EKU_SMARTCARD_LOGON = 5;\r\nexport const CAPICOM_LOCAL_MACHINE_STORE = 1;\r\nexport const CAPICOM_MEMORY_STORE = 0;\r\nexport const CAPICOM_MY_STORE = 'My';\r\nexport const CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\r\nexport const CAPICOM_OID_OTHER = 0;\r\nexport const CAPICOM_PROPID_ACCESS_STATE = 14;\r\nexport const CAPICOM_PROPID_ARCHIVED = 19;\r\nexport const CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;\r\nexport const CAPICOM_PROPID_AUTO_ENROLL = 21;\r\nexport const CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;\r\nexport const CAPICOM_PROPID_CTL_USAGE = 9;\r\nexport const CAPICOM_PROPID_DATE_STAMP = 27;\r\nexport const CAPICOM_PROPID_DESCRIPTION = 13;\r\nexport const CAPICOM_PROPID_EFS = 17;\r\nexport const CAPICOM_PROPID_ENHKEY_USAGE = 9;\r\nexport const CAPICOM_PROPID_ENROLLMENT = 26;\r\nexport const CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;\r\nexport const CAPICOM_PROPID_FIRST_RESERVED = 66;\r\nexport const CAPICOM_PROPID_FIRST_USER = 0x00008000;\r\nexport const CAPICOM_PROPID_FORTEZZA_DATA = 18;\r\nexport const CAPICOM_PROPID_FRIENDLY_NAME = 11;\r\nexport const CAPICOM_PROPID_HASH_PROP = 3;\r\nexport const CAPICOM_PROPID_IE30_RESERVED = 7;\r\nexport const CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;\r\nexport const CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;\r\nexport const CAPICOM_PROPID_KEY_CONTEXT = 5;\r\nexport const CAPICOM_PROPID_KEY_IDENTIFIER = 20;\r\nexport const CAPICOM_PROPID_KEY_PROV_HANDLE = 1;\r\nexport const CAPICOM_PROPID_KEY_PROV_INFO = 2;\r\nexport const CAPICOM_PROPID_KEY_SPEC = 6;\r\nexport const CAPICOM_PROPID_LAST_RESERVED = 0x00007fff;\r\nexport const CAPICOM_PROPID_LAST_USER = 0x0000ffff;\r\nexport const CAPICOM_PROPID_MD5_HASH = 4;\r\nexport const CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;\r\nexport const CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;\r\nexport const CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;\r\nexport const CAPICOM_PROPID_PVK_FILE = 12;\r\nexport const CAPICOM_PROPID_RENEWAL = 64;\r\nexport const CAPICOM_PROPID_SHA1_HASH = 3;\r\nexport const CAPICOM_PROPID_SIGNATURE_HASH = 15;\r\nexport const CAPICOM_PROPID_SMART_CARD_DATA = 16;\r\nexport const CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;\r\nexport const CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;\r\nexport const CAPICOM_PROPID_UNKNOWN = 0;\r\nexport const CAPICOM_SMART_CARD_USER_STORE = 4;\r\nexport const CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;\r\nexport const CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\r\nexport const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\r\nexport const CAPICOM_STORE_OPEN_READ_ONLY = 0;\r\nexport const CAPICOM_STORE_OPEN_READ_WRITE = 1;\r\nexport const CHECK_NONE = 0;\r\nexport const CHECK_OFFLINE_REVOCATION_STATUS = 16;\r\nexport const CHECK_ONLINE_REVOCATION_STATUS = 8;\r\nexport const CHECK_SIGNATURE_VALIDITY = 4;\r\nexport const CHECK_TIME_VALIDITY = 2;\r\nexport const CHECK_TRUSTED_ROOT = 1;\r\nexport const LOG_LEVEL_DEBUG = 4;\r\nexport const LOG_LEVEL_ERROR = 1;\r\nexport const LOG_LEVEL_INFO = 2;\r\nexport const TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;\r\nexport const TRUST_CTL_IS_NOT_TIME_VALID = 131072;\r\nexport const TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;\r\nexport const TRUST_IS_CYCLIC = 128;\r\nexport const TRUST_IS_NOT_SIGNATURE_VALID = 8;\r\nexport const TRUST_IS_NOT_TIME_NESTED = 2;\r\nexport const TRUST_IS_NOT_TIME_VALID = 1;\r\nexport const TRUST_IS_NOT_VALID_FOR_USAGE = 16;\r\nexport const TRUST_IS_PARTIAL_CHAIN = 65536;\r\nexport const TRUST_IS_REVOKED = 4;\r\nexport const TRUST_IS_UNTRUSTED_ROOT = 32;\r\nexport const TRUST_REVOCATION_STATUS_UNKNOWN = 64;\r\nexport const XmlDsigGost3410Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\r\nexport const XmlDsigGost3410UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411';\r\nexport const XmlDsigGost3411Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\r\nexport const XmlDsigGost3411UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr3411';\r\n","import { TagsTranslations } from './tags-translations';\r\n\r\nexport const ISSUER_TAGS_TRANSLATIONS: TagsTranslations[] = [\r\n { possibleNames: ['UnstructuredName'], translation: 'Неструктурированное имя' },\r\n { possibleNames: ['CN'], translation: 'Удостоверяющий центр' },\r\n { possibleNames: ['C'], translation: 'Страна' },\r\n { possibleNames: ['S'], translation: 'Регион' },\r\n { possibleNames: ['STREET'], translation: 'Адрес' },\r\n { possibleNames: ['O'], translation: 'Компания' },\r\n { possibleNames: ['OU'], translation: 'Тип' },\r\n { possibleNames: ['T'], translation: 'Должность' },\r\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\r\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\r\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\r\n { possibleNames: ['ИНН', 'INN', 'ИНН организации'], translation: 'ИНН' },\r\n { possibleNames: ['E'], translation: 'Email' },\r\n { possibleNames: ['L'], translation: 'Город' },\r\n];\r\n","export const OIDS_DICTIONARY = {\r\n '1.2.643.2.2.34.6': 'Пользователь Центра Регистрации',\r\n '1.2.643.2.39.1.1': 'Использование в программных продуктах системы \"1С:Предприятие 8\"',\r\n '1.2.643.3.131.1.1': 'ИНН',\r\n '1.2.643.3.141.1.1': 'РНС ФСС',\r\n '1.2.643.3.141.1.2': 'КП ФСС',\r\n '1.2.643.3.2.100.65.13.11': 'Использование в системе АИС \"Госзакупки\" Сахалинской области.',\r\n '1.2.643.3.8.100.1': 'Сертификат типа \"ekey-ГОСТ\"',\r\n '1.2.643.3.8.100.1.1': 'Общее использование в системах ИОК без права заверения финансовых документов',\r\n '1.2.643.3.8.100.1.10':\r\n 'Для участия в электронных торгах и подписания государственного контракта в информационных системах Тендерного комитета города Москвы уполномоченными лицами участников размещения государственного заказа города Москвы',\r\n '1.2.643.3.8.100.1.11':\r\n 'Подписание электронных документов в автоматизированной информационной системе размещения государственного и муниципального заказа Саратовской области',\r\n '1.2.643.3.8.100.1.12': 'Использование в системе государственного заказа Иркутской области',\r\n '1.2.643.3.8.100.1.13':\r\n 'Использование в электронной торговой площадке агентства государственного заказа Красноярского края',\r\n '1.2.643.3.8.100.1.14': 'Использование в электронной торговой площадке \"Тендер\"',\r\n '1.2.643.3.8.100.1.2': 'Передача отчетности по ТКС',\r\n '1.2.643.3.8.100.1.3': 'Оформление взаимных обязательств, соглашений, договоров, актов и т.п.',\r\n '1.2.643.3.8.100.1.4': 'Внутрикорпоративный документооборот',\r\n '1.2.643.3.8.100.1.5': 'Использование в системах электронной торговли',\r\n '1.2.643.3.8.100.1.6': 'Использование в торгово-закупочной системе \"ЭЛЕКТРА\"',\r\n '1.2.643.3.8.100.1.7': 'Использование в системе Портал государственных закупок Ставропольского края.',\r\n '1.2.643.3.8.100.1.8': 'Использование в Единой системе электронной торговли B2B-Center и B2G.',\r\n '1.2.643.3.8.100.1.9':\r\n 'Для участия в электронных торгах и подписания государственного контракта в электронной площадке ОАО «ЕЭТП» уполномоченными лицами участников размещения государственного или муниципального заказа',\r\n '1.2.643.5.1.24.2.1.3':\r\n 'Формирование документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\r\n '1.2.643.5.1.24.2.1.3.1':\r\n 'Формирование кадастровым инженером документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\r\n '1.2.643.5.1.24.2.2.2': 'Формирование документов как результата оказания услуги со стороны органов регистрации прав',\r\n '1.2.643.5.1.24.2.2.3':\r\n 'Формирование документов для получения государственных услуг в сфере государственной регистрации прав на недвижимое имущество и сделок с ним со стороны заявителя',\r\n '1.2.643.6.2.1.7.1':\r\n 'Использование единоличным исполнительным органом юридического лица или уполномоченными представителями юридического лица в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских и иных прав и обязанностей в сфере негосударственного пенсионного обеспечения, негосударственного пенсионного страхования, в сфере деятельности паевых инвестиционных фондов, акционерных инвестиционных фондов, профессиональных участников рынка ценных бумаг, а также связанной с обслуживанием указанной деятельности услуг кредитных и иных организаций',\r\n '1.2.643.6.2.1.7.2':\r\n 'Использование физическим лицом в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских прав и обязанностей в отношении инвестиционных паев паевых инвестиционных фондов, в том числе отношения, связанные с учетом и/или фиксацией прав на инвестиционные паи паевых инвестиционных фондов',\r\n '1.2.643.6.3':\r\n 'Использование в электронных торговых системах и в программном обеспечении, связанным с обменом электронных сообщений',\r\n '1.2.643.6.3.1.1': 'Использование на электронных площадок отобранных для проведения аукционах в электронной форме',\r\n '1.2.643.6.3.1.2.1': 'Тип участника - Юридическое лицо',\r\n '1.2.643.6.3.1.2.2': 'Тип участника - Физическое лицо',\r\n '1.2.643.6.3.1.2.3': 'Тип участника - Индивидуальный предприниматель',\r\n '1.2.643.6.3.1.3.1': 'Участник размещения заказа',\r\n '1.2.643.6.3.1.4.1': 'Администратор организации',\r\n '1.2.643.6.3.1.4.2': 'Уполномоченный специалист',\r\n '1.2.643.6.3.1.4.3': 'Специалист с правом подписи контракта',\r\n '1.2.840.113549.1.9.2': 'Неструктурированное имя',\r\n '1.3.6.1.4.1.24138.1.1.8.1': 'Обеспечение юридической значимости в Системе \"Электронная Торговая Площадка\"',\r\n '1.3.6.1.4.1.29919.21': 'Использование в системе Портал государственных закупок Ростовской области \"Рефери\".',\r\n '1.3.6.1.5.5.7.3.2': 'Проверка подлинности клиента',\r\n '1.3.6.1.5.5.7.3.4': 'Защищенная электронная почта',\r\n '1.3.643.3.8.100.15': 'Использование в ЭТП \"uTender\"',\r\n};\r\n","import { TagsTranslations } from './tags-translations';\r\n\r\nexport const SUBJECT_TAGS_TRANSLATIONS: TagsTranslations[] = [\r\n { possibleNames: ['UnstructuredName'], translation: 'Неструктурированное имя' },\r\n { possibleNames: ['CN'], translation: 'Владелец' },\r\n { possibleNames: ['SN'], translation: 'Фамилия' },\r\n { possibleNames: ['G'], translation: 'Имя Отчество' },\r\n { possibleNames: ['C'], translation: 'Страна' },\r\n { possibleNames: ['S'], translation: 'Регион' },\r\n { possibleNames: ['STREET'], translation: 'Адрес' },\r\n { possibleNames: ['O'], translation: 'Компания' },\r\n { possibleNames: ['OU'], translation: 'Отдел/подразделение' },\r\n { possibleNames: ['T'], translation: 'Должность' },\r\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\r\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\r\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\r\n { possibleNames: ['ИНН', 'INN', 'ИНН организации'], translation: 'ИНН' },\r\n { possibleNames: ['E'], translation: 'Email' },\r\n { possibleNames: ['L'], translation: 'Город' },\r\n];\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Экспортирует сертификат в формате base64\r\n *\r\n * @returns сертификат в формате base64\r\n */\r\nexport const exportBase64 = _afterPluginsLoaded(function (): string {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function exportBase64(): string {\r\n let base64: string;\r\n\r\n try {\r\n base64 = __cadesAsyncToken__ + cadesCertificate.Export(0);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при экспорте сертификата');\r\n }\r\n\r\n return base64;\r\n }),\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\ninterface AlgorithmInfo {\r\n algorithm: string;\r\n oid: string;\r\n}\r\n\r\n/**\r\n * Возвращает информацию об алгоритме сертификата\r\n *\r\n * @returns информацию об алгоритме и его OID'е\r\n */\r\nexport const getAlgorithm = _afterPluginsLoaded(function (): AlgorithmInfo {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function getAlgorithm(): AlgorithmInfo {\r\n const algorithmInfo: AlgorithmInfo = {\r\n algorithm: null,\r\n oid: null,\r\n };\r\n let cadesPublicKey;\r\n\r\n try {\r\n cadesPublicKey = __cadesAsyncToken__ + cadesCertificate.PublicKey();\r\n cadesPublicKey = __cadesAsyncToken__ + cadesPublicKey.Algorithm;\r\n algorithmInfo.algorithm = __cadesAsyncToken__ + cadesPublicKey.FriendlyName;\r\n algorithmInfo.oid = __cadesAsyncToken__ + cadesPublicKey.Value;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении алгоритма');\r\n }\r\n\r\n return algorithmInfo;\r\n }),\r\n );\r\n});\r\n","import { OIDS_DICTIONARY } from '../../constants';\r\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { Certificate } from './certificate';\r\n\r\nexport interface ExtendedKeysTranslations {\r\n [key: string]: string | null;\r\n}\r\n\r\n/**\r\n * Возвращает расшифрованные ОИД'ы сертификата\r\n *\r\n * @returns словарь расшифрованных ОИД'ов\r\n */\r\nexport const getDecodedExtendedKeyUsage = _afterPluginsLoaded(async function (): Promise {\r\n const certificateOids = await (this as Certificate).getExtendedKeyUsage();\r\n\r\n return certificateOids.reduce(\r\n (decodedOids, oidCode) => ({\r\n ...decodedOids,\r\n [oidCode]: OIDS_DICTIONARY[oidCode] || null,\r\n }),\r\n {},\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Возвращает ОИД'ы сертификата\r\n *\r\n * @returns список ОИД'ов\r\n */\r\nexport const getExtendedKeyUsage = _afterPluginsLoaded(function (): string[] {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function getExtendedKeyUsage(): string[] {\r\n const OIDS: string[] = [];\r\n let count: any;\r\n\r\n try {\r\n count = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\r\n count = __cadesAsyncToken__ + count.EKUs;\r\n count = __cadesAsyncToken__ + count.Count;\r\n\r\n if (count > 0) {\r\n while (count > 0) {\r\n let cadesExtendedKeyUsage;\r\n\r\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\r\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.EKUs;\r\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.Item(count);\r\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.OID;\r\n\r\n OIDS.push(cadesExtendedKeyUsage);\r\n\r\n count--;\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || \"Ошибка при получении ОИД'ов\");\r\n }\r\n\r\n return OIDS;\r\n }),\r\n );\r\n});\r\n","import { TagsTranslations } from '../../constants/tags-translations';\r\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { _parseCertInfo, TagTranslation } from '../../helpers/_parseCertInfo';\r\nimport { getCadesProp } from './getCadesProp';\r\n\r\n/**\r\n * Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам\r\n *\r\n * @param tags = словарь\r\n * @param entitiesPath = путь к разбираемой сущности\r\n * @returns расшифрованная информация по отдельным тэгам\r\n */\r\nexport const getInfo = _afterPluginsLoaded(async function (\r\n tags: TagsTranslations[],\r\n entitiesPath: string,\r\n): Promise {\r\n let entities: string;\r\n\r\n try {\r\n entities = await getCadesProp.call(this, entitiesPath);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при извлечении информации из сертификата');\r\n }\r\n\r\n return _parseCertInfo(tags, entities);\r\n});\r\n","import { OIDS_DICTIONARY } from '../constants';\r\nimport { TagsTranslations } from '../constants/tags-translations';\r\n\r\nexport interface TagTranslation {\r\n description: string;\r\n title: string;\r\n isTranslated: boolean;\r\n}\r\n\r\n/**\r\n * Парсит информацию из строки с информацией о сертификате\r\n *\r\n * @param tagsTranslations - словарь с расшифровками тэгов\r\n * @param rawInfo - данные для парсинга\r\n * @returns расшифрованная информация по отдельным тэгам\r\n */\r\nexport const _parseCertInfo = (tagsTranslations: TagsTranslations[], rawInfo: string): TagTranslation[] => {\r\n const extractedEntities: string[] = rawInfo.match(/([а-яА-Яa-zA-Z0-9\\s.]+)=(?:(\"[^\"]+?\")|(.+?))(?:,|$)/g);\r\n\r\n if (extractedEntities) {\r\n return extractedEntities.map((group) => {\r\n const segmentsMatch = group.trim().match(/^([а-яА-Яa-zA-Z0-9\\s.]+)=(.+?),?$/);\r\n let title = segmentsMatch?.[1];\r\n // Вырезаем лишние кавычки\r\n const description = segmentsMatch?.[2]?.replace(/^\"(.*)\"/, '$1')?.replace(/\"{2}/g, '\"');\r\n const oidIdentifierMatch = title?.match(/^OID\\.(.*)/);\r\n const oidIdentifier = oidIdentifierMatch?.[1];\r\n let isTranslated = false;\r\n\r\n // Если нашли в тайтле ОИД, пытаемся его расшифровать\r\n if (oidIdentifier) {\r\n const oidTranslation = OIDS_DICTIONARY[oidIdentifier];\r\n\r\n if (oidTranslation) {\r\n title = oidTranslation;\r\n isTranslated = true;\r\n }\r\n }\r\n\r\n const tagTranslation = tagsTranslations.find((tag) => tag.possibleNames.find((name) => name === title))\r\n ?.translation;\r\n\r\n if (tagTranslation) {\r\n title = tagTranslation;\r\n isTranslated = true;\r\n }\r\n\r\n return { description, title, isTranslated };\r\n });\r\n }\r\n};\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Проверяет наличие ОИД'а (ОИД'ов) у сертификата\r\n *\r\n * @param oids - ОИД'ы для проверки\r\n * @returns флаг наличия ОИД'ов у сертификата\r\n */\r\nexport const hasExtendedKeyUsage = _afterPluginsLoaded(async function (oids: string | string[]): Promise {\r\n const certOids = await (this as Certificate).getExtendedKeyUsage();\r\n\r\n let result: boolean;\r\n\r\n if (Array.isArray(oids)) {\r\n result = oids.every((oidToCheck) => certOids.some((certOid) => certOid === oidToCheck));\r\n } else {\r\n result = certOids.some((certOid) => certOid === oids);\r\n }\r\n\r\n return result;\r\n});\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Проверяет действительность сертификата\r\n *\r\n * @returns флаг валидности\r\n */\r\nexport const isValid = _afterPluginsLoaded(function (): boolean {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function isValid() {\r\n let isValid;\r\n\r\n try {\r\n isValid = __cadesAsyncToken__ + cadesCertificate.IsValid();\r\n isValid = __cadesAsyncToken__ + isValid.Result;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при проверке сертификата');\r\n }\r\n\r\n return Boolean(isValid);\r\n }),\r\n );\r\n});\r\n","import { CadesCertificate, Certificate } from './certificate';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractCommonName } from '../helpers/_extractCommonName';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\nlet certificatesCache: Certificate[];\r\n\r\n/**\r\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\r\n *\r\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\r\n * @returns список сертификатов\r\n */\r\nexport const getAllUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\r\n const { cadesplugin } = window;\r\n\r\n if (!resetCache && certificatesCache) {\r\n return certificatesCache;\r\n }\r\n\r\n return eval(\r\n _generateCadesFn(function getAllUserCertificates(): Certificate[] {\r\n let cadesStore;\r\n\r\n try {\r\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesStore.Open(\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\r\n cadesplugin.CAPICOM_MY_STORE,\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\r\n )\r\n );\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\r\n }\r\n\r\n let cadesCertificates;\r\n let cadesCertificatesCount;\r\n\r\n try {\r\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\r\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\r\n }\r\n\r\n if (!cadesCertificatesCount) {\r\n throw new Error('Нет доступных сертификатов');\r\n }\r\n\r\n const certificateList: Certificate[] = [];\r\n\r\n try {\r\n while (cadesCertificatesCount) {\r\n const cadesCertificate: CadesCertificate =\r\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\r\n\r\n certificateList.push(\r\n new Certificate(\r\n cadesCertificate,\r\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\r\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\r\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\r\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\r\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\r\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\r\n ),\r\n );\r\n\r\n cadesCertificatesCount--;\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\r\n }\r\n\r\n cadesStore.Close();\r\n\r\n certificatesCache = certificateList;\r\n\r\n return certificatesCache;\r\n }),\r\n );\r\n});\r\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 * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getContainerCertificates = _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 getContainerCertificates(): 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.CADESCOM_CONTAINER_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","import { CadesCertificate, Certificate } from './certificate';\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 * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllContainerCertificates = _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 getAllContainerCertificates(): 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.CADESCOM_CONTAINER_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 cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\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","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { _isSupportedCadesVersion } from '../helpers/_isSupportedCadesVersion';\r\nimport { _isSupportedCSPVersion } from '../helpers/_isSupportedCSPVersion';\r\nimport { getSystemInfo, SystemInfo } from './getSystemInfo';\r\n\r\n/**\r\n * Проверяет корректность настроек ЭП на машине\r\n *\r\n * @returns флаг корректности настроек\r\n */\r\nexport const isValidSystemSetup = _afterPluginsLoaded(\r\n async (): Promise => {\r\n let systemInfo: SystemInfo;\r\n\r\n try {\r\n systemInfo = await getSystemInfo();\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Настройки ЭП на данной машине не верны');\r\n }\r\n\r\n if (!_isSupportedCadesVersion(systemInfo.cadesVersion)) {\r\n throw new Error('Не поддерживаемая версия плагина');\r\n }\r\n\r\n if (!_isSupportedCSPVersion(systemInfo.cspVersion)) {\r\n throw new Error('Не поддерживаемая версия CSP');\r\n }\r\n\r\n return true;\r\n },\r\n);\r\n","export const _isSupportedCadesVersion = (version: string): boolean => {\r\n const match = version.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\r\n\r\n if (!match) {\r\n return false;\r\n }\r\n\r\n const [, major, minor, patch] = match;\r\n\r\n if (Number(major) < 2) {\r\n return false;\r\n }\r\n\r\n if (Number(major) === 2 && Number(patch) < 12438) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n","const oldestSupportedCSPVersion = 4.0;\r\n\r\nexport const _isSupportedCSPVersion = (version: string): boolean => {\r\n version = version.match(/\\d+?\\b(?:\\.\\d+)?/)?.[0];\r\n\r\n return Number(version) >= oldestSupportedCSPVersion;\r\n};\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\n\r\n/**\r\n * Создает XML подпись для документа в формате XML\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param unencryptedMessage - подписываемое сообщение в формате XML\r\n * @returns подпись\r\n */\r\nexport const createXMLSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, unencryptedMessage: string): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function createXMLSignature(): string {\r\n let cadesSigner;\r\n let cadesSignedXML;\r\n\r\n try {\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n cadesSignedXML = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.SignedXML');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n try {\r\n const signatureMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\r\n const digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\r\n\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_CheckCertificate(true));\r\n void (__cadesAsyncToken__ + cadesSignedXML.propset_Content(unencryptedMessage));\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED)\r\n );\r\n void (__cadesAsyncToken__ + cadesSignedXML.propset_SignatureMethod(signatureMethod));\r\n void (__cadesAsyncToken__ + cadesSignedXML.propset_DigestMethod(digestMethod));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n signature = __cadesAsyncToken__ + cadesSignedXML.Sign(cadesSigner);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\nimport { _getDateObj } from '../helpers/_getDateObj';\r\n\r\n/**\r\n * Создает отсоединенную подпись хеша по отпечатку сертификата\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\r\n * @returns подпись в формате PKCS#7\r\n */\r\nexport const createDetachedSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, messageHash: string): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function createDetachedSignature(): string {\r\n let cadesAttrs;\r\n let cadesHashedData;\r\n let cadesSignedData;\r\n let cadesSigner;\r\n\r\n try {\r\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\r\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\r\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n const currentTime = _getDateObj(new Date());\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\r\n }\r\n\r\n let cadesAuthAttrs;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\r\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\r\n );\r\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n signature =\r\n __cadesAsyncToken__ +\r\n cadesSignedData.SignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\nimport { _getDateObj } from '../helpers/_getDateObj';\r\n\r\n/**\r\n * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param signedMessage - подписанное сообщение\r\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\r\n * @returns подпись в формате PKCS#7\r\n */\r\nexport const addDetachedSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, signedMessage: string | ArrayBuffer, messageHash: string): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function addDetachedSignature(): string {\r\n let cadesAttrs;\r\n let cadesHashedData;\r\n let cadesSignedData;\r\n let cadesSigner;\r\n\r\n try {\r\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\r\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\r\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n const currentTime = _getDateObj(new Date());\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\r\n }\r\n\r\n let cadesAuthAttrs;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\r\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\r\n );\r\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesSignedData.VerifyHash(cadesHashedData, signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE)\r\n );\r\n signature =\r\n __cadesAsyncToken__ +\r\n cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\nimport { _getDateObj } from '../helpers/_getDateObj';\r\n\r\n/**\r\n * Создает присоединенную подпись сообщения по отпечатку сертификата\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param message - подписываемое сообщение\r\n * @returns подпись в формате PKCS#7\r\n */\r\nexport const createAttachedSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, unencryptedMessage: string | ArrayBuffer): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function createAttachedSignature(): string {\r\n let cadesAttrs;\r\n let cadesSignedData;\r\n let cadesSigner;\r\n\r\n try {\r\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\r\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n const currentTime = _getDateObj(new Date());\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\r\n }\r\n\r\n let messageBase64;\r\n\r\n try {\r\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error('Ошибка при преобразовании сообщения в Base64');\r\n }\r\n\r\n let cadesAuthAttrs;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\r\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\r\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\r\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n signature = __cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\nimport { _getDateObj } from '../helpers/_getDateObj';\r\n\r\n/**\r\n * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param signedMessage - подписанное сообщение\r\n * @returns подпись в формате PKCS#7\r\n */\r\nexport const addAttachedSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, signedMessage: string | ArrayBuffer): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function addAttachedSignature(): string {\r\n let cadesAttrs;\r\n let cadesSignedData;\r\n let cadesSigner;\r\n\r\n try {\r\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\r\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n const currentTime = _getDateObj(new Date());\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\r\n }\r\n\r\n let messageBase64;\r\n\r\n try {\r\n messageBase64 = Buffer.from(signedMessage).toString('base64');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error('Ошибка при преобразовании сообщения в Base64');\r\n }\r\n\r\n let cadesAuthAttrs;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\r\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\r\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\r\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE));\r\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\n/**\r\n * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит\r\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)\r\n *\r\n * @param unencryptedMessage - сообщение для хеширования\r\n *\r\n * @returns хеш\r\n */\r\nexport const createHash = _afterPluginsLoaded(\r\n async (unencryptedMessage: string | ArrayBuffer): Promise => {\r\n const { cadesplugin } = window;\r\n\r\n return eval(\r\n _generateCadesFn(function createHash(): string {\r\n const cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\r\n let messageBase64;\r\n let hash;\r\n\r\n try {\r\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error('Ошибка при преобразовании сообщения в Base64');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\r\n );\r\n void (__cadesAsyncToken__ + cadesHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\r\n void (__cadesAsyncToken__ + cadesHashedData.Hash(messageBase64));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации хэширования');\r\n }\r\n\r\n try {\r\n hash = __cadesAsyncToken__ + cadesHashedData.Value;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при создании хэша');\r\n }\r\n\r\n return hash;\r\n }),\r\n );\r\n },\r\n);\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\n/**\r\n * Предоставляет информацию о системе\r\n *\r\n * @returns информацию о CSP\r\n */\r\nexport const getCspVersion = _afterPluginsLoaded((): string => {\r\n let cspVersion = null;\r\n\r\n return eval(\r\n _generateCadesFn(function getCspVersion(): string {\r\n let cadesAbout;\r\n\r\n try {\r\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\r\n\r\n cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\r\n\r\n cspVersion = __cadesAsyncToken__ + cspVersion.toString();\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении версии системы');\r\n }\r\n\r\n return cspVersion;\r\n }),\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\n\r\n/**\r\n * Предоставляет информацию о системе\r\n *\r\n * @returns информацию о плагине\r\n */\r\nexport const getPluginVersion = _afterPluginsLoaded((): string => {\r\n let cadesVersion = null;\r\n\r\n return eval(\r\n _generateCadesFn(function getPluginVersion(): string {\r\n let cadesAbout;\r\n\r\n try {\r\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\r\n\r\n cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\r\n\r\n if (!cadesVersion) {\r\n cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\r\n }\r\n\r\n cadesVersion = __cadesAsyncToken__ + cadesVersion.toString();\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о плагине');\r\n }\r\n\r\n return cadesVersion;\r\n }),\r\n );\r\n});\r\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/examples/script-tag/package-lock.json b/examples/script-tag/package-lock.json
old mode 100644
new mode 100755
diff --git a/lib/api/addAttachedSignature.d.ts b/lib/api/addAttachedSignature.d.ts
new file mode 100644
index 0000000..dd0f3b6
--- /dev/null
+++ b/lib/api/addAttachedSignature.d.ts
@@ -0,0 +1,8 @@
+/**
+ * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @param signedMessage - подписанное сообщение
+ * @returns подпись в формате PKCS#7
+ */
+export declare const addAttachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer) => Promise;
diff --git a/lib/api/addDetachedSignature.d.ts b/lib/api/addDetachedSignature.d.ts
new file mode 100644
index 0000000..129bd8f
--- /dev/null
+++ b/lib/api/addDetachedSignature.d.ts
@@ -0,0 +1,9 @@
+/**
+ * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @param signedMessage - подписанное сообщение
+ * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
+ * @returns подпись в формате PKCS#7
+ */
+export declare const addDetachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer, messageHash: string) => Promise;
diff --git a/lib/api/certificate/certificate.d.ts b/lib/api/certificate/certificate.d.ts
new file mode 100644
index 0000000..5bddd6b
--- /dev/null
+++ b/lib/api/certificate/certificate.d.ts
@@ -0,0 +1,22 @@
+import { TagTranslation } from '../../helpers/_parseCertInfo';
+import { ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';
+export declare type CadesCertificate = any;
+export declare class Certificate {
+ _cadesCertificate: CadesCertificate;
+ name: string;
+ issuerName: string;
+ subjectName: string;
+ thumbprint: string;
+ validFrom: string;
+ validTo: string;
+ constructor(_cadesCertificate: CadesCertificate, name: string, issuerName: string, subjectName: string, thumbprint: string, validFrom: string, validTo: string);
+ getOwnerInfo(): Promise;
+ getIssuerInfo(): Promise;
+ getExtendedKeyUsage(): Promise;
+ getDecodedExtendedKeyUsage(): Promise;
+ getAlgorithm(): Promise;
+ getCadesProp(propName: any): Promise;
+ isValid(): Promise;
+ exportBase64(): Promise;
+ hasExtendedKeyUsage(oids: any): Promise;
+}
diff --git a/lib/api/certificate/exportBase64.d.ts b/lib/api/certificate/exportBase64.d.ts
new file mode 100644
index 0000000..e531560
--- /dev/null
+++ b/lib/api/certificate/exportBase64.d.ts
@@ -0,0 +1,6 @@
+/**
+ * Экспортирует сертификат в формате base64
+ *
+ * @returns сертификат в формате base64
+ */
+export declare const exportBase64: () => Promise;
diff --git a/lib/api/certificate/getAlgorithm.d.ts b/lib/api/certificate/getAlgorithm.d.ts
new file mode 100644
index 0000000..79f94da
--- /dev/null
+++ b/lib/api/certificate/getAlgorithm.d.ts
@@ -0,0 +1,11 @@
+interface AlgorithmInfo {
+ algorithm: string;
+ oid: string;
+}
+/**
+ * Возвращает информацию об алгоритме сертификата
+ *
+ * @returns информацию об алгоритме и его OID'е
+ */
+export declare const getAlgorithm: () => Promise;
+export {};
diff --git a/lib/api/certificate/getCadesProp.d.ts b/lib/api/certificate/getCadesProp.d.ts
new file mode 100644
index 0000000..0ff1c59
--- /dev/null
+++ b/lib/api/certificate/getCadesProp.d.ts
@@ -0,0 +1,7 @@
+/**
+ * Возвращает указанное внутренее свойство у сертификата в формате Cades
+ *
+ * @param propName = наименование свойства
+ * @returns значение запрошенного свойства
+ */
+export declare const getCadesProp: (propName: string) => Promise;
diff --git a/lib/api/certificate/getDecodedExtendedKeyUsage.d.ts b/lib/api/certificate/getDecodedExtendedKeyUsage.d.ts
new file mode 100644
index 0000000..478f67b
--- /dev/null
+++ b/lib/api/certificate/getDecodedExtendedKeyUsage.d.ts
@@ -0,0 +1,9 @@
+export interface ExtendedKeysTranslations {
+ [key: string]: string | null;
+}
+/**
+ * Возвращает расшифрованные ОИД'ы сертификата
+ *
+ * @returns словарь расшифрованных ОИД'ов
+ */
+export declare const getDecodedExtendedKeyUsage: () => Promise;
diff --git a/lib/api/certificate/getExtendedKeyUsage.d.ts b/lib/api/certificate/getExtendedKeyUsage.d.ts
new file mode 100644
index 0000000..fe83e38
--- /dev/null
+++ b/lib/api/certificate/getExtendedKeyUsage.d.ts
@@ -0,0 +1,6 @@
+/**
+ * Возвращает ОИД'ы сертификата
+ *
+ * @returns список ОИД'ов
+ */
+export declare const getExtendedKeyUsage: () => Promise;
diff --git a/lib/api/certificate/getInfo.d.ts b/lib/api/certificate/getInfo.d.ts
new file mode 100644
index 0000000..84a34b4
--- /dev/null
+++ b/lib/api/certificate/getInfo.d.ts
@@ -0,0 +1,10 @@
+import { TagsTranslations } from '../../constants/tags-translations';
+import { TagTranslation } from '../../helpers/_parseCertInfo';
+/**
+ * Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам
+ *
+ * @param tags = словарь
+ * @param entitiesPath = путь к разбираемой сущности
+ * @returns расшифрованная информация по отдельным тэгам
+ */
+export declare const getInfo: (tags: TagsTranslations[], entitiesPath: string) => Promise;
diff --git a/lib/api/certificate/hasExtendedKeyUsage.d.ts b/lib/api/certificate/hasExtendedKeyUsage.d.ts
new file mode 100644
index 0000000..dbd41ef
--- /dev/null
+++ b/lib/api/certificate/hasExtendedKeyUsage.d.ts
@@ -0,0 +1,7 @@
+/**
+ * Проверяет наличие ОИД'а (ОИД'ов) у сертификата
+ *
+ * @param oids - ОИД'ы для проверки
+ * @returns флаг наличия ОИД'ов у сертификата
+ */
+export declare const hasExtendedKeyUsage: (oids: string | string[]) => Promise;
diff --git a/lib/api/certificate/index.d.ts b/lib/api/certificate/index.d.ts
new file mode 100644
index 0000000..cea7596
--- /dev/null
+++ b/lib/api/certificate/index.d.ts
@@ -0,0 +1 @@
+export * from './certificate';
diff --git a/lib/api/certificate/isValid.d.ts b/lib/api/certificate/isValid.d.ts
new file mode 100644
index 0000000..69814c8
--- /dev/null
+++ b/lib/api/certificate/isValid.d.ts
@@ -0,0 +1,6 @@
+/**
+ * Проверяет действительность сертификата
+ *
+ * @returns флаг валидности
+ */
+export declare const isValid: () => Promise;
diff --git a/lib/api/createAttachedSignature.d.ts b/lib/api/createAttachedSignature.d.ts
new file mode 100644
index 0000000..b771957
--- /dev/null
+++ b/lib/api/createAttachedSignature.d.ts
@@ -0,0 +1,8 @@
+/**
+ * Создает присоединенную подпись сообщения по отпечатку сертификата
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @param message - подписываемое сообщение
+ * @returns подпись в формате PKCS#7
+ */
+export declare const createAttachedSignature: (thumbprint: string, unencryptedMessage: string | ArrayBuffer) => Promise;
diff --git a/lib/api/createDetachedSignature.d.ts b/lib/api/createDetachedSignature.d.ts
new file mode 100644
index 0000000..f7c1dbe
--- /dev/null
+++ b/lib/api/createDetachedSignature.d.ts
@@ -0,0 +1,8 @@
+/**
+ * Создает отсоединенную подпись хеша по отпечатку сертификата
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
+ * @returns подпись в формате PKCS#7
+ */
+export declare const createDetachedSignature: (thumbprint: string, messageHash: string) => Promise;
diff --git a/lib/api/createHash.d.ts b/lib/api/createHash.d.ts
new file mode 100644
index 0000000..f63a997
--- /dev/null
+++ b/lib/api/createHash.d.ts
@@ -0,0 +1,9 @@
+/**
+ * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит
+ * 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)
+ *
+ * @param unencryptedMessage - сообщение для хеширования
+ *
+ * @returns хеш
+ */
+export declare const createHash: (unencryptedMessage: string | ArrayBuffer) => Promise;
diff --git a/lib/api/createXMLSignature.d.ts b/lib/api/createXMLSignature.d.ts
new file mode 100644
index 0000000..5ccd295
--- /dev/null
+++ b/lib/api/createXMLSignature.d.ts
@@ -0,0 +1,8 @@
+/**
+ * Создает XML подпись для документа в формате XML
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @param unencryptedMessage - подписываемое сообщение в формате XML
+ * @returns подпись
+ */
+export declare const createXMLSignature: (thumbprint: string, unencryptedMessage: string) => Promise;
diff --git a/lib/api/getAllContainerCertificates.d.ts b/lib/api/getAllContainerCertificates.d.ts
new file mode 100644
index 0000000..5d40a6e
--- /dev/null
+++ b/lib/api/getAllContainerCertificates.d.ts
@@ -0,0 +1,9 @@
+import { Certificate } from './certificate';
+/**
+ * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей
+ * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа
+ *
+ * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
+ * @returns список сертификатов
+ */
+export declare const getAllContainerCertificates: (resetCache?: boolean) => Promise;
diff --git a/lib/api/getAllUserCertificates.d.ts b/lib/api/getAllUserCertificates.d.ts
new file mode 100644
index 0000000..252d75f
--- /dev/null
+++ b/lib/api/getAllUserCertificates.d.ts
@@ -0,0 +1,8 @@
+import { Certificate } from './certificate';
+/**
+ * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа
+ *
+ * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
+ * @returns список сертификатов
+ */
+export declare const getAllUserCertificates: (resetCache?: boolean) => Promise;
diff --git a/lib/api/getCertificate.d.ts b/lib/api/getCertificate.d.ts
new file mode 100644
index 0000000..8213f30
--- /dev/null
+++ b/lib/api/getCertificate.d.ts
@@ -0,0 +1,8 @@
+import { Certificate } from './certificate';
+/**
+ * Возвращает сертификат по отпечатку
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @returns сертификат
+ */
+export declare const getCertificate: (thumbprint: string) => Promise;
diff --git a/lib/api/getContainerCertificates.d.ts b/lib/api/getContainerCertificates.d.ts
new file mode 100644
index 0000000..1d74a4f
--- /dev/null
+++ b/lib/api/getContainerCertificates.d.ts
@@ -0,0 +1,9 @@
+import { Certificate } from './certificate';
+/**
+ * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей
+ * Возвращает список сертификатов, доступных пользователю в системе
+ *
+ * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
+ * @returns список сертификатов
+ */
+export declare const getContainerCertificates: (resetCache?: boolean) => Promise;
diff --git a/lib/api/getCspVersion.d.ts b/lib/api/getCspVersion.d.ts
new file mode 100644
index 0000000..6712e13
--- /dev/null
+++ b/lib/api/getCspVersion.d.ts
@@ -0,0 +1,6 @@
+/**
+ * Предоставляет информацию о системе
+ *
+ * @returns информацию о CSP
+ */
+export declare const getCspVersion: () => Promise;
diff --git a/lib/api/getPluginVersion.d.ts b/lib/api/getPluginVersion.d.ts
new file mode 100644
index 0000000..c84bced
--- /dev/null
+++ b/lib/api/getPluginVersion.d.ts
@@ -0,0 +1,6 @@
+/**
+ * Предоставляет информацию о системе
+ *
+ * @returns информацию о плагине
+ */
+export declare const getPluginVersion: () => Promise;
diff --git a/lib/api/getSystemInfo.d.ts b/lib/api/getSystemInfo.d.ts
new file mode 100644
index 0000000..9d39042
--- /dev/null
+++ b/lib/api/getSystemInfo.d.ts
@@ -0,0 +1,10 @@
+export interface SystemInfo {
+ cadesVersion: string;
+ cspVersion: string;
+}
+/**
+ * Предоставляет информацию о системе
+ *
+ * @returns информацию о CSP и плагине
+ */
+export declare const getSystemInfo: () => Promise;
diff --git a/lib/api/getUserCertificates.d.ts b/lib/api/getUserCertificates.d.ts
new file mode 100644
index 0000000..571f403
--- /dev/null
+++ b/lib/api/getUserCertificates.d.ts
@@ -0,0 +1,8 @@
+import { Certificate } from './certificate';
+/**
+ * Возвращает список сертификатов, доступных пользователю в системе
+ *
+ * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
+ * @returns список сертификатов
+ */
+export declare const getUserCertificates: (resetCache?: boolean) => Promise;
diff --git a/lib/api/index.d.ts b/lib/api/index.d.ts
new file mode 100644
index 0000000..98ba640
--- /dev/null
+++ b/lib/api/index.d.ts
@@ -0,0 +1,16 @@
+export * from './getCertificate';
+export * from './getUserCertificates';
+export * from './getAllUserCertificates';
+export * from './getContainerCertificates';
+export * from './getAllContainerCertificates';
+export * from './getSystemInfo';
+export * from './isValidSystemSetup';
+export * from './createXMLSignature';
+export * from './createDetachedSignature';
+export * from './addDetachedSignature';
+export * from './createAttachedSignature';
+export * from './addAttachedSignature';
+export * from './createHash';
+export * from './certificate';
+export * from './getCspVersion';
+export * from './getPluginVersion';
diff --git a/lib/api/isValidSystemSetup.d.ts b/lib/api/isValidSystemSetup.d.ts
new file mode 100644
index 0000000..5b3afaf
--- /dev/null
+++ b/lib/api/isValidSystemSetup.d.ts
@@ -0,0 +1,6 @@
+/**
+ * Проверяет корректность настроек ЭП на машине
+ *
+ * @returns флаг корректности настроек
+ */
+export declare const isValidSystemSetup: () => Promise;
diff --git a/lib/constants/cades-constants.d.ts b/lib/constants/cades-constants.d.ts
new file mode 100644
index 0000000..8e36560
--- /dev/null
+++ b/lib/constants/cades-constants.d.ts
@@ -0,0 +1,149 @@
+export declare const CADESCOM_ATTRIBUTE_OTHER = -1;
+export declare const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;
+export declare const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;
+export declare const CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;
+export declare const CADESCOM_AllowNoOutstandingRequest = 1;
+export declare const CADESCOM_AllowNone = 0;
+export declare const CADESCOM_AllowUntrustedCertificate = 2;
+export declare const CADESCOM_AllowUntrustedRoot = 4;
+export declare const CADESCOM_BASE64_TO_BINARY = 1;
+export declare const CADESCOM_CADES_BES = 1;
+export declare const CADESCOM_CADES_DEFAULT = 0;
+export declare const CADESCOM_CADES_T = 5;
+export declare const CADESCOM_CADES_X_LONG_TYPE_1 = 93;
+export declare const CADESCOM_CONTAINER_STORE = 100;
+export declare const CADESCOM_CURRENT_USER_STORE = 2;
+export declare const CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;
+export declare const CADESCOM_DISPLAY_DATA_CONTENT = 1;
+export declare const CADESCOM_DISPLAY_DATA_NONE = 0;
+export declare const CADESCOM_ENCODE_ANY = -1;
+export declare const CADESCOM_ENCODE_BASE64 = 0;
+export declare const CADESCOM_ENCODE_BINARY = 1;
+export declare const CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;
+export declare const CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;
+export declare const CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;
+export declare const CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;
+export declare const CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;
+export declare const CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;
+export declare const CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;
+export declare const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;
+export declare const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;
+export declare const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;
+export declare const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;
+export declare const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;
+export declare const CADESCOM_HASH_ALGORITHM_MD2 = 1;
+export declare const CADESCOM_HASH_ALGORITHM_MD4 = 2;
+export declare const CADESCOM_HASH_ALGORITHM_MD5 = 3;
+export declare const CADESCOM_HASH_ALGORITHM_SHA1 = 0;
+export declare const CADESCOM_HASH_ALGORITHM_SHA_256 = 4;
+export declare const CADESCOM_HASH_ALGORITHM_SHA_384 = 5;
+export declare const CADESCOM_HASH_ALGORITHM_SHA_512 = 6;
+export declare const CADESCOM_LOCAL_MACHINE_STORE = 1;
+export declare const CADESCOM_PKCS7_TYPE = 65535;
+export declare const CADESCOM_STRING_TO_UCS2LE = 0;
+export declare const CADESCOM_SkipInstallToStore = 268435456;
+export declare const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;
+export declare const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;
+export declare const CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;
+export declare const CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;
+export declare const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;
+export declare const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;
+export declare const CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;
+export declare const CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;
+export declare const CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;
+export declare const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;
+export declare const CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;
+export declare const CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;
+export declare const CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;
+export declare const CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;
+export declare const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
+export declare const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
+export declare const CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;
+export declare const CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;
+export declare const CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;
+export declare const CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;
+export declare const CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;
+export declare const CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;
+export declare const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;
+export declare const CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;
+export declare const CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;
+export declare const CAPICOM_CURRENT_USER_STORE = 2;
+export declare const CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;
+export declare const CAPICOM_EKU_CLIENT_AUTH = 2;
+export declare const CAPICOM_EKU_OTHER = 0;
+export declare const CAPICOM_EKU_SMARTCARD_LOGON = 5;
+export declare const CAPICOM_LOCAL_MACHINE_STORE = 1;
+export declare const CAPICOM_MEMORY_STORE = 0;
+export declare const CAPICOM_MY_STORE = "My";
+export declare const CAPICOM_OID_KEY_USAGE_EXTENSION = 10;
+export declare const CAPICOM_OID_OTHER = 0;
+export declare const CAPICOM_PROPID_ACCESS_STATE = 14;
+export declare const CAPICOM_PROPID_ARCHIVED = 19;
+export declare const CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;
+export declare const CAPICOM_PROPID_AUTO_ENROLL = 21;
+export declare const CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;
+export declare const CAPICOM_PROPID_CTL_USAGE = 9;
+export declare const CAPICOM_PROPID_DATE_STAMP = 27;
+export declare const CAPICOM_PROPID_DESCRIPTION = 13;
+export declare const CAPICOM_PROPID_EFS = 17;
+export declare const CAPICOM_PROPID_ENHKEY_USAGE = 9;
+export declare const CAPICOM_PROPID_ENROLLMENT = 26;
+export declare const CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;
+export declare const CAPICOM_PROPID_FIRST_RESERVED = 66;
+export declare const CAPICOM_PROPID_FIRST_USER = 32768;
+export declare const CAPICOM_PROPID_FORTEZZA_DATA = 18;
+export declare const CAPICOM_PROPID_FRIENDLY_NAME = 11;
+export declare const CAPICOM_PROPID_HASH_PROP = 3;
+export declare const CAPICOM_PROPID_IE30_RESERVED = 7;
+export declare const CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;
+export declare const CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;
+export declare const CAPICOM_PROPID_KEY_CONTEXT = 5;
+export declare const CAPICOM_PROPID_KEY_IDENTIFIER = 20;
+export declare const CAPICOM_PROPID_KEY_PROV_HANDLE = 1;
+export declare const CAPICOM_PROPID_KEY_PROV_INFO = 2;
+export declare const CAPICOM_PROPID_KEY_SPEC = 6;
+export declare const CAPICOM_PROPID_LAST_RESERVED = 32767;
+export declare const CAPICOM_PROPID_LAST_USER = 65535;
+export declare const CAPICOM_PROPID_MD5_HASH = 4;
+export declare const CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;
+export declare const CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;
+export declare const CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;
+export declare const CAPICOM_PROPID_PVK_FILE = 12;
+export declare const CAPICOM_PROPID_RENEWAL = 64;
+export declare const CAPICOM_PROPID_SHA1_HASH = 3;
+export declare const CAPICOM_PROPID_SIGNATURE_HASH = 15;
+export declare const CAPICOM_PROPID_SMART_CARD_DATA = 16;
+export declare const CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;
+export declare const CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;
+export declare const CAPICOM_PROPID_UNKNOWN = 0;
+export declare const CAPICOM_SMART_CARD_USER_STORE = 4;
+export declare const CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;
+export declare const CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;
+export declare const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
+export declare const CAPICOM_STORE_OPEN_READ_ONLY = 0;
+export declare const CAPICOM_STORE_OPEN_READ_WRITE = 1;
+export declare const CHECK_NONE = 0;
+export declare const CHECK_OFFLINE_REVOCATION_STATUS = 16;
+export declare const CHECK_ONLINE_REVOCATION_STATUS = 8;
+export declare const CHECK_SIGNATURE_VALIDITY = 4;
+export declare const CHECK_TIME_VALIDITY = 2;
+export declare const CHECK_TRUSTED_ROOT = 1;
+export declare const LOG_LEVEL_DEBUG = 4;
+export declare const LOG_LEVEL_ERROR = 1;
+export declare const LOG_LEVEL_INFO = 2;
+export declare const TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;
+export declare const TRUST_CTL_IS_NOT_TIME_VALID = 131072;
+export declare const TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;
+export declare const TRUST_IS_CYCLIC = 128;
+export declare const TRUST_IS_NOT_SIGNATURE_VALID = 8;
+export declare const TRUST_IS_NOT_TIME_NESTED = 2;
+export declare const TRUST_IS_NOT_TIME_VALID = 1;
+export declare const TRUST_IS_NOT_VALID_FOR_USAGE = 16;
+export declare const TRUST_IS_PARTIAL_CHAIN = 65536;
+export declare const TRUST_IS_REVOKED = 4;
+export declare const TRUST_IS_UNTRUSTED_ROOT = 32;
+export declare const TRUST_REVOCATION_STATUS_UNKNOWN = 64;
+export declare const XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411";
+export declare const XmlDsigGost3410UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";
+export declare const XmlDsigGost3411Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411";
+export declare const XmlDsigGost3411UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
diff --git a/lib/constants/index.d.ts b/lib/constants/index.d.ts
new file mode 100644
index 0000000..4f7f7dd
--- /dev/null
+++ b/lib/constants/index.d.ts
@@ -0,0 +1,4 @@
+export * from './cades-constants';
+export * from './issuer-tags-translations';
+export * from './oids-dictionary';
+export * from './subject-tags-translations';
diff --git a/lib/constants/issuer-tags-translations.d.ts b/lib/constants/issuer-tags-translations.d.ts
new file mode 100644
index 0000000..12e0f7d
--- /dev/null
+++ b/lib/constants/issuer-tags-translations.d.ts
@@ -0,0 +1,2 @@
+import { TagsTranslations } from './tags-translations';
+export declare const ISSUER_TAGS_TRANSLATIONS: TagsTranslations[];
diff --git a/lib/constants/oids-dictionary.d.ts b/lib/constants/oids-dictionary.d.ts
new file mode 100644
index 0000000..cedee7d
--- /dev/null
+++ b/lib/constants/oids-dictionary.d.ts
@@ -0,0 +1,44 @@
+export declare const OIDS_DICTIONARY: {
+ '1.2.643.2.2.34.6': string;
+ '1.2.643.2.39.1.1': string;
+ '1.2.643.3.131.1.1': string;
+ '1.2.643.3.141.1.1': string;
+ '1.2.643.3.141.1.2': string;
+ '1.2.643.3.2.100.65.13.11': string;
+ '1.2.643.3.8.100.1': string;
+ '1.2.643.3.8.100.1.1': string;
+ '1.2.643.3.8.100.1.10': string;
+ '1.2.643.3.8.100.1.11': string;
+ '1.2.643.3.8.100.1.12': string;
+ '1.2.643.3.8.100.1.13': string;
+ '1.2.643.3.8.100.1.14': string;
+ '1.2.643.3.8.100.1.2': string;
+ '1.2.643.3.8.100.1.3': string;
+ '1.2.643.3.8.100.1.4': string;
+ '1.2.643.3.8.100.1.5': string;
+ '1.2.643.3.8.100.1.6': string;
+ '1.2.643.3.8.100.1.7': string;
+ '1.2.643.3.8.100.1.8': string;
+ '1.2.643.3.8.100.1.9': string;
+ '1.2.643.5.1.24.2.1.3': string;
+ '1.2.643.5.1.24.2.1.3.1': string;
+ '1.2.643.5.1.24.2.2.2': string;
+ '1.2.643.5.1.24.2.2.3': string;
+ '1.2.643.6.2.1.7.1': string;
+ '1.2.643.6.2.1.7.2': string;
+ '1.2.643.6.3': string;
+ '1.2.643.6.3.1.1': string;
+ '1.2.643.6.3.1.2.1': string;
+ '1.2.643.6.3.1.2.2': string;
+ '1.2.643.6.3.1.2.3': string;
+ '1.2.643.6.3.1.3.1': string;
+ '1.2.643.6.3.1.4.1': string;
+ '1.2.643.6.3.1.4.2': string;
+ '1.2.643.6.3.1.4.3': string;
+ '1.2.840.113549.1.9.2': string;
+ '1.3.6.1.4.1.24138.1.1.8.1': string;
+ '1.3.6.1.4.1.29919.21': string;
+ '1.3.6.1.5.5.7.3.2': string;
+ '1.3.6.1.5.5.7.3.4': string;
+ '1.3.643.3.8.100.15': string;
+};
diff --git a/lib/constants/subject-tags-translations.d.ts b/lib/constants/subject-tags-translations.d.ts
new file mode 100644
index 0000000..0a4a6c2
--- /dev/null
+++ b/lib/constants/subject-tags-translations.d.ts
@@ -0,0 +1,2 @@
+import { TagsTranslations } from './tags-translations';
+export declare const SUBJECT_TAGS_TRANSLATIONS: TagsTranslations[];
diff --git a/lib/constants/tags-translations.d.ts b/lib/constants/tags-translations.d.ts
new file mode 100644
index 0000000..5c791bd
--- /dev/null
+++ b/lib/constants/tags-translations.d.ts
@@ -0,0 +1,4 @@
+export interface TagsTranslations {
+ possibleNames: string[];
+ translation: string;
+}
diff --git a/lib/crypto-pro-js.d.ts b/lib/crypto-pro-js.d.ts
new file mode 100644
index 0000000..f25f765
--- /dev/null
+++ b/lib/crypto-pro-js.d.ts
@@ -0,0 +1,5 @@
+// Type definitions for crypto-pro-js 2.3.1
+// Project: crypto-pro-js
+// Definitions by: Artem Vasilev https://github.com/kernusr
+
+export * from './api';
diff --git a/lib/crypto-pro-js.js b/lib/crypto-pro-js.js
new file mode 100644
index 0000000..0267f1d
--- /dev/null
+++ b/lib/crypto-pro-js.js
@@ -0,0 +1,5133 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define("cryptoPro", [], factory);
+ else if(typeof exports === 'object')
+ exports["cryptoPro"] = factory();
+ else
+ root["cryptoPro"] = factory();
+})(window, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./crypto-pro-js.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../node_modules/base64-js/index.js":
+/*!******************************************!*\
+ !*** ../node_modules/base64-js/index.js ***!
+ \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.byteLength = byteLength
+exports.toByteArray = toByteArray
+exports.fromByteArray = fromByteArray
+
+var lookup = []
+var revLookup = []
+var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
+
+var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+for (var i = 0, len = code.length; i < len; ++i) {
+ lookup[i] = code[i]
+ revLookup[code.charCodeAt(i)] = i
+}
+
+// Support decoding URL-safe base64 strings, as Node.js does.
+// See: https://en.wikipedia.org/wiki/Base64#URL_applications
+revLookup['-'.charCodeAt(0)] = 62
+revLookup['_'.charCodeAt(0)] = 63
+
+function getLens (b64) {
+ var len = b64.length
+
+ if (len % 4 > 0) {
+ throw new Error('Invalid string. Length must be a multiple of 4')
+ }
+
+ // Trim off extra bytes after placeholder bytes are found
+ // See: https://github.com/beatgammit/base64-js/issues/42
+ var validLen = b64.indexOf('=')
+ if (validLen === -1) validLen = len
+
+ var placeHoldersLen = validLen === len
+ ? 0
+ : 4 - (validLen % 4)
+
+ return [validLen, placeHoldersLen]
+}
+
+// base64 is 4/3 + up to two characters of the original data
+function byteLength (b64) {
+ var lens = getLens(b64)
+ var validLen = lens[0]
+ var placeHoldersLen = lens[1]
+ return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
+}
+
+function _byteLength (b64, validLen, placeHoldersLen) {
+ return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
+}
+
+function toByteArray (b64) {
+ var tmp
+ var lens = getLens(b64)
+ var validLen = lens[0]
+ var placeHoldersLen = lens[1]
+
+ var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
+
+ var curByte = 0
+
+ // if there are placeholders, only get up to the last complete 4 chars
+ var len = placeHoldersLen > 0
+ ? validLen - 4
+ : validLen
+
+ var i
+ for (i = 0; i < len; i += 4) {
+ tmp =
+ (revLookup[b64.charCodeAt(i)] << 18) |
+ (revLookup[b64.charCodeAt(i + 1)] << 12) |
+ (revLookup[b64.charCodeAt(i + 2)] << 6) |
+ revLookup[b64.charCodeAt(i + 3)]
+ arr[curByte++] = (tmp >> 16) & 0xFF
+ arr[curByte++] = (tmp >> 8) & 0xFF
+ arr[curByte++] = tmp & 0xFF
+ }
+
+ if (placeHoldersLen === 2) {
+ tmp =
+ (revLookup[b64.charCodeAt(i)] << 2) |
+ (revLookup[b64.charCodeAt(i + 1)] >> 4)
+ arr[curByte++] = tmp & 0xFF
+ }
+
+ if (placeHoldersLen === 1) {
+ tmp =
+ (revLookup[b64.charCodeAt(i)] << 10) |
+ (revLookup[b64.charCodeAt(i + 1)] << 4) |
+ (revLookup[b64.charCodeAt(i + 2)] >> 2)
+ arr[curByte++] = (tmp >> 8) & 0xFF
+ arr[curByte++] = tmp & 0xFF
+ }
+
+ return arr
+}
+
+function tripletToBase64 (num) {
+ return lookup[num >> 18 & 0x3F] +
+ lookup[num >> 12 & 0x3F] +
+ lookup[num >> 6 & 0x3F] +
+ lookup[num & 0x3F]
+}
+
+function encodeChunk (uint8, start, end) {
+ var tmp
+ var output = []
+ for (var i = start; i < end; i += 3) {
+ tmp =
+ ((uint8[i] << 16) & 0xFF0000) +
+ ((uint8[i + 1] << 8) & 0xFF00) +
+ (uint8[i + 2] & 0xFF)
+ output.push(tripletToBase64(tmp))
+ }
+ return output.join('')
+}
+
+function fromByteArray (uint8) {
+ var tmp
+ var len = uint8.length
+ var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
+ var parts = []
+ var maxChunkLength = 16383 // must be multiple of 3
+
+ // go through the array every three bytes, we'll deal with trailing stuff later
+ for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
+ parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
+ }
+
+ // pad the end with zeros, but make sure to not forget the extra bytes
+ if (extraBytes === 1) {
+ tmp = uint8[len - 1]
+ parts.push(
+ lookup[tmp >> 2] +
+ lookup[(tmp << 4) & 0x3F] +
+ '=='
+ )
+ } else if (extraBytes === 2) {
+ tmp = (uint8[len - 2] << 8) + uint8[len - 1]
+ parts.push(
+ lookup[tmp >> 10] +
+ lookup[(tmp >> 4) & 0x3F] +
+ lookup[(tmp << 2) & 0x3F] +
+ '='
+ )
+ }
+
+ return parts.join('')
+}
+
+
+/***/ }),
+
+/***/ "../node_modules/buffer/index.js":
+/*!***************************************!*\
+ !*** ../node_modules/buffer/index.js ***!
+ \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author Feross Aboukhadijeh
+ * @license MIT
+ */
+/* eslint-disable no-proto */
+
+
+
+var base64 = __webpack_require__(/*! base64-js */ "../node_modules/base64-js/index.js")
+var ieee754 = __webpack_require__(/*! ieee754 */ "../node_modules/ieee754/index.js")
+var isArray = __webpack_require__(/*! isarray */ "../node_modules/buffer/node_modules/isarray/index.js")
+
+exports.Buffer = Buffer
+exports.SlowBuffer = SlowBuffer
+exports.INSPECT_MAX_BYTES = 50
+
+/**
+ * If `Buffer.TYPED_ARRAY_SUPPORT`:
+ * === true Use Uint8Array implementation (fastest)
+ * === false Use Object implementation (most compatible, even IE6)
+ *
+ * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
+ * Opera 11.6+, iOS 4.2+.
+ *
+ * Due to various browser bugs, sometimes the Object implementation will be used even
+ * when the browser supports typed arrays.
+ *
+ * Note:
+ *
+ * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
+ * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
+ *
+ * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
+ *
+ * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
+ * incorrect length in some situations.
+
+ * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
+ * get the Object implementation, which is slower but behaves correctly.
+ */
+Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
+ ? global.TYPED_ARRAY_SUPPORT
+ : typedArraySupport()
+
+/*
+ * Export kMaxLength after typed array support is determined.
+ */
+exports.kMaxLength = kMaxLength()
+
+function typedArraySupport () {
+ try {
+ var arr = new Uint8Array(1)
+ arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
+ return arr.foo() === 42 && // typed array instances can be augmented
+ typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
+ arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
+ } catch (e) {
+ return false
+ }
+}
+
+function kMaxLength () {
+ return Buffer.TYPED_ARRAY_SUPPORT
+ ? 0x7fffffff
+ : 0x3fffffff
+}
+
+function createBuffer (that, length) {
+ if (kMaxLength() < length) {
+ throw new RangeError('Invalid typed array length')
+ }
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ // Return an augmented `Uint8Array` instance, for best performance
+ that = new Uint8Array(length)
+ that.__proto__ = Buffer.prototype
+ } else {
+ // Fallback: Return an object instance of the Buffer class
+ if (that === null) {
+ that = new Buffer(length)
+ }
+ that.length = length
+ }
+
+ return that
+}
+
+/**
+ * The Buffer constructor returns instances of `Uint8Array` that have their
+ * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
+ * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
+ * and the `Uint8Array` methods. Square bracket notation works as expected -- it
+ * returns a single octet.
+ *
+ * The `Uint8Array` prototype remains unmodified.
+ */
+
+function Buffer (arg, encodingOrOffset, length) {
+ if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
+ return new Buffer(arg, encodingOrOffset, length)
+ }
+
+ // Common case.
+ if (typeof arg === 'number') {
+ if (typeof encodingOrOffset === 'string') {
+ throw new Error(
+ 'If encoding is specified then the first argument must be a string'
+ )
+ }
+ return allocUnsafe(this, arg)
+ }
+ return from(this, arg, encodingOrOffset, length)
+}
+
+Buffer.poolSize = 8192 // not used by this implementation
+
+// TODO: Legacy, not needed anymore. Remove in next major version.
+Buffer._augment = function (arr) {
+ arr.__proto__ = Buffer.prototype
+ return arr
+}
+
+function from (that, value, encodingOrOffset, length) {
+ if (typeof value === 'number') {
+ throw new TypeError('"value" argument must not be a number')
+ }
+
+ if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
+ return fromArrayBuffer(that, value, encodingOrOffset, length)
+ }
+
+ if (typeof value === 'string') {
+ return fromString(that, value, encodingOrOffset)
+ }
+
+ return fromObject(that, value)
+}
+
+/**
+ * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
+ * if value is a number.
+ * Buffer.from(str[, encoding])
+ * Buffer.from(array)
+ * Buffer.from(buffer)
+ * Buffer.from(arrayBuffer[, byteOffset[, length]])
+ **/
+Buffer.from = function (value, encodingOrOffset, length) {
+ return from(null, value, encodingOrOffset, length)
+}
+
+if (Buffer.TYPED_ARRAY_SUPPORT) {
+ Buffer.prototype.__proto__ = Uint8Array.prototype
+ Buffer.__proto__ = Uint8Array
+ if (typeof Symbol !== 'undefined' && Symbol.species &&
+ Buffer[Symbol.species] === Buffer) {
+ // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
+ Object.defineProperty(Buffer, Symbol.species, {
+ value: null,
+ configurable: true
+ })
+ }
+}
+
+function assertSize (size) {
+ if (typeof size !== 'number') {
+ throw new TypeError('"size" argument must be a number')
+ } else if (size < 0) {
+ throw new RangeError('"size" argument must not be negative')
+ }
+}
+
+function alloc (that, size, fill, encoding) {
+ assertSize(size)
+ if (size <= 0) {
+ return createBuffer(that, size)
+ }
+ if (fill !== undefined) {
+ // Only pay attention to encoding if it's a string. This
+ // prevents accidentally sending in a number that would
+ // be interpretted as a start offset.
+ return typeof encoding === 'string'
+ ? createBuffer(that, size).fill(fill, encoding)
+ : createBuffer(that, size).fill(fill)
+ }
+ return createBuffer(that, size)
+}
+
+/**
+ * Creates a new filled Buffer instance.
+ * alloc(size[, fill[, encoding]])
+ **/
+Buffer.alloc = function (size, fill, encoding) {
+ return alloc(null, size, fill, encoding)
+}
+
+function allocUnsafe (that, size) {
+ assertSize(size)
+ that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
+ if (!Buffer.TYPED_ARRAY_SUPPORT) {
+ for (var i = 0; i < size; ++i) {
+ that[i] = 0
+ }
+ }
+ return that
+}
+
+/**
+ * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
+ * */
+Buffer.allocUnsafe = function (size) {
+ return allocUnsafe(null, size)
+}
+/**
+ * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
+ */
+Buffer.allocUnsafeSlow = function (size) {
+ return allocUnsafe(null, size)
+}
+
+function fromString (that, string, encoding) {
+ if (typeof encoding !== 'string' || encoding === '') {
+ encoding = 'utf8'
+ }
+
+ if (!Buffer.isEncoding(encoding)) {
+ throw new TypeError('"encoding" must be a valid string encoding')
+ }
+
+ var length = byteLength(string, encoding) | 0
+ that = createBuffer(that, length)
+
+ var actual = that.write(string, encoding)
+
+ if (actual !== length) {
+ // Writing a hex string, for example, that contains invalid characters will
+ // cause everything after the first invalid character to be ignored. (e.g.
+ // 'abxxcd' will be treated as 'ab')
+ that = that.slice(0, actual)
+ }
+
+ return that
+}
+
+function fromArrayLike (that, array) {
+ var length = array.length < 0 ? 0 : checked(array.length) | 0
+ that = createBuffer(that, length)
+ for (var i = 0; i < length; i += 1) {
+ that[i] = array[i] & 255
+ }
+ return that
+}
+
+function fromArrayBuffer (that, array, byteOffset, length) {
+ array.byteLength // this throws if `array` is not a valid ArrayBuffer
+
+ if (byteOffset < 0 || array.byteLength < byteOffset) {
+ throw new RangeError('\'offset\' is out of bounds')
+ }
+
+ if (array.byteLength < byteOffset + (length || 0)) {
+ throw new RangeError('\'length\' is out of bounds')
+ }
+
+ if (byteOffset === undefined && length === undefined) {
+ array = new Uint8Array(array)
+ } else if (length === undefined) {
+ array = new Uint8Array(array, byteOffset)
+ } else {
+ array = new Uint8Array(array, byteOffset, length)
+ }
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ // Return an augmented `Uint8Array` instance, for best performance
+ that = array
+ that.__proto__ = Buffer.prototype
+ } else {
+ // Fallback: Return an object instance of the Buffer class
+ that = fromArrayLike(that, array)
+ }
+ return that
+}
+
+function fromObject (that, obj) {
+ if (Buffer.isBuffer(obj)) {
+ var len = checked(obj.length) | 0
+ that = createBuffer(that, len)
+
+ if (that.length === 0) {
+ return that
+ }
+
+ obj.copy(that, 0, 0, len)
+ return that
+ }
+
+ if (obj) {
+ if ((typeof ArrayBuffer !== 'undefined' &&
+ obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
+ if (typeof obj.length !== 'number' || isnan(obj.length)) {
+ return createBuffer(that, 0)
+ }
+ return fromArrayLike(that, obj)
+ }
+
+ if (obj.type === 'Buffer' && isArray(obj.data)) {
+ return fromArrayLike(that, obj.data)
+ }
+ }
+
+ throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
+}
+
+function checked (length) {
+ // Note: cannot use `length < kMaxLength()` here because that fails when
+ // length is NaN (which is otherwise coerced to zero.)
+ if (length >= kMaxLength()) {
+ throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
+ 'size: 0x' + kMaxLength().toString(16) + ' bytes')
+ }
+ return length | 0
+}
+
+function SlowBuffer (length) {
+ if (+length != length) { // eslint-disable-line eqeqeq
+ length = 0
+ }
+ return Buffer.alloc(+length)
+}
+
+Buffer.isBuffer = function isBuffer (b) {
+ return !!(b != null && b._isBuffer)
+}
+
+Buffer.compare = function compare (a, b) {
+ if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
+ throw new TypeError('Arguments must be Buffers')
+ }
+
+ if (a === b) return 0
+
+ var x = a.length
+ var y = b.length
+
+ for (var i = 0, len = Math.min(x, y); i < len; ++i) {
+ if (a[i] !== b[i]) {
+ x = a[i]
+ y = b[i]
+ break
+ }
+ }
+
+ if (x < y) return -1
+ if (y < x) return 1
+ return 0
+}
+
+Buffer.isEncoding = function isEncoding (encoding) {
+ switch (String(encoding).toLowerCase()) {
+ case 'hex':
+ case 'utf8':
+ case 'utf-8':
+ case 'ascii':
+ case 'latin1':
+ case 'binary':
+ case 'base64':
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return true
+ default:
+ return false
+ }
+}
+
+Buffer.concat = function concat (list, length) {
+ if (!isArray(list)) {
+ throw new TypeError('"list" argument must be an Array of Buffers')
+ }
+
+ if (list.length === 0) {
+ return Buffer.alloc(0)
+ }
+
+ var i
+ if (length === undefined) {
+ length = 0
+ for (i = 0; i < list.length; ++i) {
+ length += list[i].length
+ }
+ }
+
+ var buffer = Buffer.allocUnsafe(length)
+ var pos = 0
+ for (i = 0; i < list.length; ++i) {
+ var buf = list[i]
+ if (!Buffer.isBuffer(buf)) {
+ throw new TypeError('"list" argument must be an Array of Buffers')
+ }
+ buf.copy(buffer, pos)
+ pos += buf.length
+ }
+ return buffer
+}
+
+function byteLength (string, encoding) {
+ if (Buffer.isBuffer(string)) {
+ return string.length
+ }
+ if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
+ (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
+ return string.byteLength
+ }
+ if (typeof string !== 'string') {
+ string = '' + string
+ }
+
+ var len = string.length
+ if (len === 0) return 0
+
+ // Use a for loop to avoid recursion
+ var loweredCase = false
+ for (;;) {
+ switch (encoding) {
+ case 'ascii':
+ case 'latin1':
+ case 'binary':
+ return len
+ case 'utf8':
+ case 'utf-8':
+ case undefined:
+ return utf8ToBytes(string).length
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return len * 2
+ case 'hex':
+ return len >>> 1
+ case 'base64':
+ return base64ToBytes(string).length
+ default:
+ if (loweredCase) return utf8ToBytes(string).length // assume utf8
+ encoding = ('' + encoding).toLowerCase()
+ loweredCase = true
+ }
+ }
+}
+Buffer.byteLength = byteLength
+
+function slowToString (encoding, start, end) {
+ var loweredCase = false
+
+ // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
+ // property of a typed array.
+
+ // This behaves neither like String nor Uint8Array in that we set start/end
+ // to their upper/lower bounds if the value passed is out of range.
+ // undefined is handled specially as per ECMA-262 6th Edition,
+ // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
+ if (start === undefined || start < 0) {
+ start = 0
+ }
+ // Return early if start > this.length. Done here to prevent potential uint32
+ // coercion fail below.
+ if (start > this.length) {
+ return ''
+ }
+
+ if (end === undefined || end > this.length) {
+ end = this.length
+ }
+
+ if (end <= 0) {
+ return ''
+ }
+
+ // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
+ end >>>= 0
+ start >>>= 0
+
+ if (end <= start) {
+ return ''
+ }
+
+ if (!encoding) encoding = 'utf8'
+
+ while (true) {
+ switch (encoding) {
+ case 'hex':
+ return hexSlice(this, start, end)
+
+ case 'utf8':
+ case 'utf-8':
+ return utf8Slice(this, start, end)
+
+ case 'ascii':
+ return asciiSlice(this, start, end)
+
+ case 'latin1':
+ case 'binary':
+ return latin1Slice(this, start, end)
+
+ case 'base64':
+ return base64Slice(this, start, end)
+
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return utf16leSlice(this, start, end)
+
+ default:
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+ encoding = (encoding + '').toLowerCase()
+ loweredCase = true
+ }
+ }
+}
+
+// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
+// Buffer instances.
+Buffer.prototype._isBuffer = true
+
+function swap (b, n, m) {
+ var i = b[n]
+ b[n] = b[m]
+ b[m] = i
+}
+
+Buffer.prototype.swap16 = function swap16 () {
+ var len = this.length
+ if (len % 2 !== 0) {
+ throw new RangeError('Buffer size must be a multiple of 16-bits')
+ }
+ for (var i = 0; i < len; i += 2) {
+ swap(this, i, i + 1)
+ }
+ return this
+}
+
+Buffer.prototype.swap32 = function swap32 () {
+ var len = this.length
+ if (len % 4 !== 0) {
+ throw new RangeError('Buffer size must be a multiple of 32-bits')
+ }
+ for (var i = 0; i < len; i += 4) {
+ swap(this, i, i + 3)
+ swap(this, i + 1, i + 2)
+ }
+ return this
+}
+
+Buffer.prototype.swap64 = function swap64 () {
+ var len = this.length
+ if (len % 8 !== 0) {
+ throw new RangeError('Buffer size must be a multiple of 64-bits')
+ }
+ for (var i = 0; i < len; i += 8) {
+ swap(this, i, i + 7)
+ swap(this, i + 1, i + 6)
+ swap(this, i + 2, i + 5)
+ swap(this, i + 3, i + 4)
+ }
+ return this
+}
+
+Buffer.prototype.toString = function toString () {
+ var length = this.length | 0
+ if (length === 0) return ''
+ if (arguments.length === 0) return utf8Slice(this, 0, length)
+ return slowToString.apply(this, arguments)
+}
+
+Buffer.prototype.equals = function equals (b) {
+ if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
+ if (this === b) return true
+ return Buffer.compare(this, b) === 0
+}
+
+Buffer.prototype.inspect = function inspect () {
+ var str = ''
+ var max = exports.INSPECT_MAX_BYTES
+ if (this.length > 0) {
+ str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
+ if (this.length > max) str += ' ... '
+ }
+ return ''
+}
+
+Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
+ if (!Buffer.isBuffer(target)) {
+ throw new TypeError('Argument must be a Buffer')
+ }
+
+ if (start === undefined) {
+ start = 0
+ }
+ if (end === undefined) {
+ end = target ? target.length : 0
+ }
+ if (thisStart === undefined) {
+ thisStart = 0
+ }
+ if (thisEnd === undefined) {
+ thisEnd = this.length
+ }
+
+ if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
+ throw new RangeError('out of range index')
+ }
+
+ if (thisStart >= thisEnd && start >= end) {
+ return 0
+ }
+ if (thisStart >= thisEnd) {
+ return -1
+ }
+ if (start >= end) {
+ return 1
+ }
+
+ start >>>= 0
+ end >>>= 0
+ thisStart >>>= 0
+ thisEnd >>>= 0
+
+ if (this === target) return 0
+
+ var x = thisEnd - thisStart
+ var y = end - start
+ var len = Math.min(x, y)
+
+ var thisCopy = this.slice(thisStart, thisEnd)
+ var targetCopy = target.slice(start, end)
+
+ for (var i = 0; i < len; ++i) {
+ if (thisCopy[i] !== targetCopy[i]) {
+ x = thisCopy[i]
+ y = targetCopy[i]
+ break
+ }
+ }
+
+ if (x < y) return -1
+ if (y < x) return 1
+ return 0
+}
+
+// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
+// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
+//
+// Arguments:
+// - buffer - a Buffer to search
+// - val - a string, Buffer, or number
+// - byteOffset - an index into `buffer`; will be clamped to an int32
+// - encoding - an optional encoding, relevant is val is a string
+// - dir - true for indexOf, false for lastIndexOf
+function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
+ // Empty buffer means no match
+ if (buffer.length === 0) return -1
+
+ // Normalize byteOffset
+ if (typeof byteOffset === 'string') {
+ encoding = byteOffset
+ byteOffset = 0
+ } else if (byteOffset > 0x7fffffff) {
+ byteOffset = 0x7fffffff
+ } else if (byteOffset < -0x80000000) {
+ byteOffset = -0x80000000
+ }
+ byteOffset = +byteOffset // Coerce to Number.
+ if (isNaN(byteOffset)) {
+ // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
+ byteOffset = dir ? 0 : (buffer.length - 1)
+ }
+
+ // Normalize byteOffset: negative offsets start from the end of the buffer
+ if (byteOffset < 0) byteOffset = buffer.length + byteOffset
+ if (byteOffset >= buffer.length) {
+ if (dir) return -1
+ else byteOffset = buffer.length - 1
+ } else if (byteOffset < 0) {
+ if (dir) byteOffset = 0
+ else return -1
+ }
+
+ // Normalize val
+ if (typeof val === 'string') {
+ val = Buffer.from(val, encoding)
+ }
+
+ // Finally, search either indexOf (if dir is true) or lastIndexOf
+ if (Buffer.isBuffer(val)) {
+ // Special case: looking for empty string/buffer always fails
+ if (val.length === 0) {
+ return -1
+ }
+ return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
+ } else if (typeof val === 'number') {
+ val = val & 0xFF // Search for a byte value [0-255]
+ if (Buffer.TYPED_ARRAY_SUPPORT &&
+ typeof Uint8Array.prototype.indexOf === 'function') {
+ if (dir) {
+ return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
+ } else {
+ return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
+ }
+ }
+ return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
+ }
+
+ throw new TypeError('val must be string, number or Buffer')
+}
+
+function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
+ var indexSize = 1
+ var arrLength = arr.length
+ var valLength = val.length
+
+ if (encoding !== undefined) {
+ encoding = String(encoding).toLowerCase()
+ if (encoding === 'ucs2' || encoding === 'ucs-2' ||
+ encoding === 'utf16le' || encoding === 'utf-16le') {
+ if (arr.length < 2 || val.length < 2) {
+ return -1
+ }
+ indexSize = 2
+ arrLength /= 2
+ valLength /= 2
+ byteOffset /= 2
+ }
+ }
+
+ function read (buf, i) {
+ if (indexSize === 1) {
+ return buf[i]
+ } else {
+ return buf.readUInt16BE(i * indexSize)
+ }
+ }
+
+ var i
+ if (dir) {
+ var foundIndex = -1
+ for (i = byteOffset; i < arrLength; i++) {
+ if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
+ if (foundIndex === -1) foundIndex = i
+ if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
+ } else {
+ if (foundIndex !== -1) i -= i - foundIndex
+ foundIndex = -1
+ }
+ }
+ } else {
+ if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
+ for (i = byteOffset; i >= 0; i--) {
+ var found = true
+ for (var j = 0; j < valLength; j++) {
+ if (read(arr, i + j) !== read(val, j)) {
+ found = false
+ break
+ }
+ }
+ if (found) return i
+ }
+ }
+
+ return -1
+}
+
+Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
+ return this.indexOf(val, byteOffset, encoding) !== -1
+}
+
+Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
+}
+
+Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
+}
+
+function hexWrite (buf, string, offset, length) {
+ offset = Number(offset) || 0
+ var remaining = buf.length - offset
+ if (!length) {
+ length = remaining
+ } else {
+ length = Number(length)
+ if (length > remaining) {
+ length = remaining
+ }
+ }
+
+ // must be an even number of digits
+ var strLen = string.length
+ if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
+
+ if (length > strLen / 2) {
+ length = strLen / 2
+ }
+ for (var i = 0; i < length; ++i) {
+ var parsed = parseInt(string.substr(i * 2, 2), 16)
+ if (isNaN(parsed)) return i
+ buf[offset + i] = parsed
+ }
+ return i
+}
+
+function utf8Write (buf, string, offset, length) {
+ return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
+}
+
+function asciiWrite (buf, string, offset, length) {
+ return blitBuffer(asciiToBytes(string), buf, offset, length)
+}
+
+function latin1Write (buf, string, offset, length) {
+ return asciiWrite(buf, string, offset, length)
+}
+
+function base64Write (buf, string, offset, length) {
+ return blitBuffer(base64ToBytes(string), buf, offset, length)
+}
+
+function ucs2Write (buf, string, offset, length) {
+ return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
+}
+
+Buffer.prototype.write = function write (string, offset, length, encoding) {
+ // Buffer#write(string)
+ if (offset === undefined) {
+ encoding = 'utf8'
+ length = this.length
+ offset = 0
+ // Buffer#write(string, encoding)
+ } else if (length === undefined && typeof offset === 'string') {
+ encoding = offset
+ length = this.length
+ offset = 0
+ // Buffer#write(string, offset[, length][, encoding])
+ } else if (isFinite(offset)) {
+ offset = offset | 0
+ if (isFinite(length)) {
+ length = length | 0
+ if (encoding === undefined) encoding = 'utf8'
+ } else {
+ encoding = length
+ length = undefined
+ }
+ // legacy write(string, encoding, offset, length) - remove in v0.13
+ } else {
+ throw new Error(
+ 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
+ )
+ }
+
+ var remaining = this.length - offset
+ if (length === undefined || length > remaining) length = remaining
+
+ if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
+ throw new RangeError('Attempt to write outside buffer bounds')
+ }
+
+ if (!encoding) encoding = 'utf8'
+
+ var loweredCase = false
+ for (;;) {
+ switch (encoding) {
+ case 'hex':
+ return hexWrite(this, string, offset, length)
+
+ case 'utf8':
+ case 'utf-8':
+ return utf8Write(this, string, offset, length)
+
+ case 'ascii':
+ return asciiWrite(this, string, offset, length)
+
+ case 'latin1':
+ case 'binary':
+ return latin1Write(this, string, offset, length)
+
+ case 'base64':
+ // Warning: maxLength not taken into account in base64Write
+ return base64Write(this, string, offset, length)
+
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return ucs2Write(this, string, offset, length)
+
+ default:
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+ encoding = ('' + encoding).toLowerCase()
+ loweredCase = true
+ }
+ }
+}
+
+Buffer.prototype.toJSON = function toJSON () {
+ return {
+ type: 'Buffer',
+ data: Array.prototype.slice.call(this._arr || this, 0)
+ }
+}
+
+function base64Slice (buf, start, end) {
+ if (start === 0 && end === buf.length) {
+ return base64.fromByteArray(buf)
+ } else {
+ return base64.fromByteArray(buf.slice(start, end))
+ }
+}
+
+function utf8Slice (buf, start, end) {
+ end = Math.min(buf.length, end)
+ var res = []
+
+ var i = start
+ while (i < end) {
+ var firstByte = buf[i]
+ var codePoint = null
+ var bytesPerSequence = (firstByte > 0xEF) ? 4
+ : (firstByte > 0xDF) ? 3
+ : (firstByte > 0xBF) ? 2
+ : 1
+
+ if (i + bytesPerSequence <= end) {
+ var secondByte, thirdByte, fourthByte, tempCodePoint
+
+ switch (bytesPerSequence) {
+ case 1:
+ if (firstByte < 0x80) {
+ codePoint = firstByte
+ }
+ break
+ case 2:
+ secondByte = buf[i + 1]
+ if ((secondByte & 0xC0) === 0x80) {
+ tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
+ if (tempCodePoint > 0x7F) {
+ codePoint = tempCodePoint
+ }
+ }
+ break
+ case 3:
+ secondByte = buf[i + 1]
+ thirdByte = buf[i + 2]
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
+ tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
+ if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
+ codePoint = tempCodePoint
+ }
+ }
+ break
+ case 4:
+ secondByte = buf[i + 1]
+ thirdByte = buf[i + 2]
+ fourthByte = buf[i + 3]
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
+ tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
+ if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
+ codePoint = tempCodePoint
+ }
+ }
+ }
+ }
+
+ if (codePoint === null) {
+ // we did not generate a valid codePoint so insert a
+ // replacement char (U+FFFD) and advance only 1 byte
+ codePoint = 0xFFFD
+ bytesPerSequence = 1
+ } else if (codePoint > 0xFFFF) {
+ // encode to utf16 (surrogate pair dance)
+ codePoint -= 0x10000
+ res.push(codePoint >>> 10 & 0x3FF | 0xD800)
+ codePoint = 0xDC00 | codePoint & 0x3FF
+ }
+
+ res.push(codePoint)
+ i += bytesPerSequence
+ }
+
+ return decodeCodePointsArray(res)
+}
+
+// Based on http://stackoverflow.com/a/22747272/680742, the browser with
+// the lowest limit is Chrome, with 0x10000 args.
+// We go 1 magnitude less, for safety
+var MAX_ARGUMENTS_LENGTH = 0x1000
+
+function decodeCodePointsArray (codePoints) {
+ var len = codePoints.length
+ if (len <= MAX_ARGUMENTS_LENGTH) {
+ return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
+ }
+
+ // Decode in chunks to avoid "call stack size exceeded".
+ var res = ''
+ var i = 0
+ while (i < len) {
+ res += String.fromCharCode.apply(
+ String,
+ codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
+ )
+ }
+ return res
+}
+
+function asciiSlice (buf, start, end) {
+ var ret = ''
+ end = Math.min(buf.length, end)
+
+ for (var i = start; i < end; ++i) {
+ ret += String.fromCharCode(buf[i] & 0x7F)
+ }
+ return ret
+}
+
+function latin1Slice (buf, start, end) {
+ var ret = ''
+ end = Math.min(buf.length, end)
+
+ for (var i = start; i < end; ++i) {
+ ret += String.fromCharCode(buf[i])
+ }
+ return ret
+}
+
+function hexSlice (buf, start, end) {
+ var len = buf.length
+
+ if (!start || start < 0) start = 0
+ if (!end || end < 0 || end > len) end = len
+
+ var out = ''
+ for (var i = start; i < end; ++i) {
+ out += toHex(buf[i])
+ }
+ return out
+}
+
+function utf16leSlice (buf, start, end) {
+ var bytes = buf.slice(start, end)
+ var res = ''
+ for (var i = 0; i < bytes.length; i += 2) {
+ res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
+ }
+ return res
+}
+
+Buffer.prototype.slice = function slice (start, end) {
+ var len = this.length
+ start = ~~start
+ end = end === undefined ? len : ~~end
+
+ if (start < 0) {
+ start += len
+ if (start < 0) start = 0
+ } else if (start > len) {
+ start = len
+ }
+
+ if (end < 0) {
+ end += len
+ if (end < 0) end = 0
+ } else if (end > len) {
+ end = len
+ }
+
+ if (end < start) end = start
+
+ var newBuf
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ newBuf = this.subarray(start, end)
+ newBuf.__proto__ = Buffer.prototype
+ } else {
+ var sliceLen = end - start
+ newBuf = new Buffer(sliceLen, undefined)
+ for (var i = 0; i < sliceLen; ++i) {
+ newBuf[i] = this[i + start]
+ }
+ }
+
+ return newBuf
+}
+
+/*
+ * Need to make sure that buffer isn't trying to write out of bounds.
+ */
+function checkOffset (offset, ext, length) {
+ if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
+ if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
+}
+
+Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+ var val = this[offset]
+ var mul = 1
+ var i = 0
+ while (++i < byteLength && (mul *= 0x100)) {
+ val += this[offset + i] * mul
+ }
+
+ return val
+}
+
+Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) {
+ checkOffset(offset, byteLength, this.length)
+ }
+
+ var val = this[offset + --byteLength]
+ var mul = 1
+ while (byteLength > 0 && (mul *= 0x100)) {
+ val += this[offset + --byteLength] * mul
+ }
+
+ return val
+}
+
+Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 1, this.length)
+ return this[offset]
+}
+
+Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length)
+ return this[offset] | (this[offset + 1] << 8)
+}
+
+Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length)
+ return (this[offset] << 8) | this[offset + 1]
+}
+
+Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+
+ return ((this[offset]) |
+ (this[offset + 1] << 8) |
+ (this[offset + 2] << 16)) +
+ (this[offset + 3] * 0x1000000)
+}
+
+Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+
+ return (this[offset] * 0x1000000) +
+ ((this[offset + 1] << 16) |
+ (this[offset + 2] << 8) |
+ this[offset + 3])
+}
+
+Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+ var val = this[offset]
+ var mul = 1
+ var i = 0
+ while (++i < byteLength && (mul *= 0x100)) {
+ val += this[offset + i] * mul
+ }
+ mul *= 0x80
+
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+
+ return val
+}
+
+Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+ var i = byteLength
+ var mul = 1
+ var val = this[offset + --i]
+ while (i > 0 && (mul *= 0x100)) {
+ val += this[offset + --i] * mul
+ }
+ mul *= 0x80
+
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+
+ return val
+}
+
+Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 1, this.length)
+ if (!(this[offset] & 0x80)) return (this[offset])
+ return ((0xff - this[offset] + 1) * -1)
+}
+
+Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length)
+ var val = this[offset] | (this[offset + 1] << 8)
+ return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
+
+Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length)
+ var val = this[offset + 1] | (this[offset] << 8)
+ return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
+
+Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+
+ return (this[offset]) |
+ (this[offset + 1] << 8) |
+ (this[offset + 2] << 16) |
+ (this[offset + 3] << 24)
+}
+
+Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+
+ return (this[offset] << 24) |
+ (this[offset + 1] << 16) |
+ (this[offset + 2] << 8) |
+ (this[offset + 3])
+}
+
+Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+ return ieee754.read(this, offset, true, 23, 4)
+}
+
+Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+ return ieee754.read(this, offset, false, 23, 4)
+}
+
+Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 8, this.length)
+ return ieee754.read(this, offset, true, 52, 8)
+}
+
+Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 8, this.length)
+ return ieee754.read(this, offset, false, 52, 8)
+}
+
+function checkInt (buf, value, offset, ext, max, min) {
+ if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
+ if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
+ if (offset + ext > buf.length) throw new RangeError('Index out of range')
+}
+
+Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
+ value = +value
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) {
+ var maxBytes = Math.pow(2, 8 * byteLength) - 1
+ checkInt(this, value, offset, byteLength, maxBytes, 0)
+ }
+
+ var mul = 1
+ var i = 0
+ this[offset] = value & 0xFF
+ while (++i < byteLength && (mul *= 0x100)) {
+ this[offset + i] = (value / mul) & 0xFF
+ }
+
+ return offset + byteLength
+}
+
+Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
+ value = +value
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) {
+ var maxBytes = Math.pow(2, 8 * byteLength) - 1
+ checkInt(this, value, offset, byteLength, maxBytes, 0)
+ }
+
+ var i = byteLength - 1
+ var mul = 1
+ this[offset + i] = value & 0xFF
+ while (--i >= 0 && (mul *= 0x100)) {
+ this[offset + i] = (value / mul) & 0xFF
+ }
+
+ return offset + byteLength
+}
+
+Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
+ this[offset] = (value & 0xff)
+ return offset + 1
+}
+
+function objectWriteUInt16 (buf, value, offset, littleEndian) {
+ if (value < 0) value = 0xffff + value + 1
+ for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
+ buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
+ (littleEndian ? i : 1 - i) * 8
+ }
+}
+
+Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value & 0xff)
+ this[offset + 1] = (value >>> 8)
+ } else {
+ objectWriteUInt16(this, value, offset, true)
+ }
+ return offset + 2
+}
+
+Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value >>> 8)
+ this[offset + 1] = (value & 0xff)
+ } else {
+ objectWriteUInt16(this, value, offset, false)
+ }
+ return offset + 2
+}
+
+function objectWriteUInt32 (buf, value, offset, littleEndian) {
+ if (value < 0) value = 0xffffffff + value + 1
+ for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
+ buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
+ }
+}
+
+Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset + 3] = (value >>> 24)
+ this[offset + 2] = (value >>> 16)
+ this[offset + 1] = (value >>> 8)
+ this[offset] = (value & 0xff)
+ } else {
+ objectWriteUInt32(this, value, offset, true)
+ }
+ return offset + 4
+}
+
+Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value >>> 24)
+ this[offset + 1] = (value >>> 16)
+ this[offset + 2] = (value >>> 8)
+ this[offset + 3] = (value & 0xff)
+ } else {
+ objectWriteUInt32(this, value, offset, false)
+ }
+ return offset + 4
+}
+
+Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) {
+ var limit = Math.pow(2, 8 * byteLength - 1)
+
+ checkInt(this, value, offset, byteLength, limit - 1, -limit)
+ }
+
+ var i = 0
+ var mul = 1
+ var sub = 0
+ this[offset] = value & 0xFF
+ while (++i < byteLength && (mul *= 0x100)) {
+ if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
+ sub = 1
+ }
+ this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+ }
+
+ return offset + byteLength
+}
+
+Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) {
+ var limit = Math.pow(2, 8 * byteLength - 1)
+
+ checkInt(this, value, offset, byteLength, limit - 1, -limit)
+ }
+
+ var i = byteLength - 1
+ var mul = 1
+ var sub = 0
+ this[offset + i] = value & 0xFF
+ while (--i >= 0 && (mul *= 0x100)) {
+ if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
+ sub = 1
+ }
+ this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+ }
+
+ return offset + byteLength
+}
+
+Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
+ if (value < 0) value = 0xff + value + 1
+ this[offset] = (value & 0xff)
+ return offset + 1
+}
+
+Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value & 0xff)
+ this[offset + 1] = (value >>> 8)
+ } else {
+ objectWriteUInt16(this, value, offset, true)
+ }
+ return offset + 2
+}
+
+Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value >>> 8)
+ this[offset + 1] = (value & 0xff)
+ } else {
+ objectWriteUInt16(this, value, offset, false)
+ }
+ return offset + 2
+}
+
+Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value & 0xff)
+ this[offset + 1] = (value >>> 8)
+ this[offset + 2] = (value >>> 16)
+ this[offset + 3] = (value >>> 24)
+ } else {
+ objectWriteUInt32(this, value, offset, true)
+ }
+ return offset + 4
+}
+
+Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+ if (value < 0) value = 0xffffffff + value + 1
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value >>> 24)
+ this[offset + 1] = (value >>> 16)
+ this[offset + 2] = (value >>> 8)
+ this[offset + 3] = (value & 0xff)
+ } else {
+ objectWriteUInt32(this, value, offset, false)
+ }
+ return offset + 4
+}
+
+function checkIEEE754 (buf, value, offset, ext, max, min) {
+ if (offset + ext > buf.length) throw new RangeError('Index out of range')
+ if (offset < 0) throw new RangeError('Index out of range')
+}
+
+function writeFloat (buf, value, offset, littleEndian, noAssert) {
+ if (!noAssert) {
+ checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
+ }
+ ieee754.write(buf, value, offset, littleEndian, 23, 4)
+ return offset + 4
+}
+
+Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
+ return writeFloat(this, value, offset, true, noAssert)
+}
+
+Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
+ return writeFloat(this, value, offset, false, noAssert)
+}
+
+function writeDouble (buf, value, offset, littleEndian, noAssert) {
+ if (!noAssert) {
+ checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
+ }
+ ieee754.write(buf, value, offset, littleEndian, 52, 8)
+ return offset + 8
+}
+
+Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
+ return writeDouble(this, value, offset, true, noAssert)
+}
+
+Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
+ return writeDouble(this, value, offset, false, noAssert)
+}
+
+// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
+Buffer.prototype.copy = function copy (target, targetStart, start, end) {
+ if (!start) start = 0
+ if (!end && end !== 0) end = this.length
+ if (targetStart >= target.length) targetStart = target.length
+ if (!targetStart) targetStart = 0
+ if (end > 0 && end < start) end = start
+
+ // Copy 0 bytes; we're done
+ if (end === start) return 0
+ if (target.length === 0 || this.length === 0) return 0
+
+ // Fatal error conditions
+ if (targetStart < 0) {
+ throw new RangeError('targetStart out of bounds')
+ }
+ if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
+ if (end < 0) throw new RangeError('sourceEnd out of bounds')
+
+ // Are we oob?
+ if (end > this.length) end = this.length
+ if (target.length - targetStart < end - start) {
+ end = target.length - targetStart + start
+ }
+
+ var len = end - start
+ var i
+
+ if (this === target && start < targetStart && targetStart < end) {
+ // descending copy from end
+ for (i = len - 1; i >= 0; --i) {
+ target[i + targetStart] = this[i + start]
+ }
+ } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
+ // ascending copy from start
+ for (i = 0; i < len; ++i) {
+ target[i + targetStart] = this[i + start]
+ }
+ } else {
+ Uint8Array.prototype.set.call(
+ target,
+ this.subarray(start, start + len),
+ targetStart
+ )
+ }
+
+ return len
+}
+
+// Usage:
+// buffer.fill(number[, offset[, end]])
+// buffer.fill(buffer[, offset[, end]])
+// buffer.fill(string[, offset[, end]][, encoding])
+Buffer.prototype.fill = function fill (val, start, end, encoding) {
+ // Handle string cases:
+ if (typeof val === 'string') {
+ if (typeof start === 'string') {
+ encoding = start
+ start = 0
+ end = this.length
+ } else if (typeof end === 'string') {
+ encoding = end
+ end = this.length
+ }
+ if (val.length === 1) {
+ var code = val.charCodeAt(0)
+ if (code < 256) {
+ val = code
+ }
+ }
+ if (encoding !== undefined && typeof encoding !== 'string') {
+ throw new TypeError('encoding must be a string')
+ }
+ if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
+ throw new TypeError('Unknown encoding: ' + encoding)
+ }
+ } else if (typeof val === 'number') {
+ val = val & 255
+ }
+
+ // Invalid ranges are not set to a default, so can range check early.
+ if (start < 0 || this.length < start || this.length < end) {
+ throw new RangeError('Out of range index')
+ }
+
+ if (end <= start) {
+ return this
+ }
+
+ start = start >>> 0
+ end = end === undefined ? this.length : end >>> 0
+
+ if (!val) val = 0
+
+ var i
+ if (typeof val === 'number') {
+ for (i = start; i < end; ++i) {
+ this[i] = val
+ }
+ } else {
+ var bytes = Buffer.isBuffer(val)
+ ? val
+ : utf8ToBytes(new Buffer(val, encoding).toString())
+ var len = bytes.length
+ for (i = 0; i < end - start; ++i) {
+ this[i + start] = bytes[i % len]
+ }
+ }
+
+ return this
+}
+
+// HELPER FUNCTIONS
+// ================
+
+var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
+
+function base64clean (str) {
+ // Node strips out invalid characters like \n and \t from the string, base64-js does not
+ str = stringtrim(str).replace(INVALID_BASE64_RE, '')
+ // Node converts strings with length < 2 to ''
+ if (str.length < 2) return ''
+ // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
+ while (str.length % 4 !== 0) {
+ str = str + '='
+ }
+ return str
+}
+
+function stringtrim (str) {
+ if (str.trim) return str.trim()
+ return str.replace(/^\s+|\s+$/g, '')
+}
+
+function toHex (n) {
+ if (n < 16) return '0' + n.toString(16)
+ return n.toString(16)
+}
+
+function utf8ToBytes (string, units) {
+ units = units || Infinity
+ var codePoint
+ var length = string.length
+ var leadSurrogate = null
+ var bytes = []
+
+ for (var i = 0; i < length; ++i) {
+ codePoint = string.charCodeAt(i)
+
+ // is surrogate component
+ if (codePoint > 0xD7FF && codePoint < 0xE000) {
+ // last char was a lead
+ if (!leadSurrogate) {
+ // no lead yet
+ if (codePoint > 0xDBFF) {
+ // unexpected trail
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+ continue
+ } else if (i + 1 === length) {
+ // unpaired lead
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+ continue
+ }
+
+ // valid lead
+ leadSurrogate = codePoint
+
+ continue
+ }
+
+ // 2 leads in a row
+ if (codePoint < 0xDC00) {
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+ leadSurrogate = codePoint
+ continue
+ }
+
+ // valid surrogate pair
+ codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
+ } else if (leadSurrogate) {
+ // valid bmp char, but last char was a lead
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+ }
+
+ leadSurrogate = null
+
+ // encode utf8
+ if (codePoint < 0x80) {
+ if ((units -= 1) < 0) break
+ bytes.push(codePoint)
+ } else if (codePoint < 0x800) {
+ if ((units -= 2) < 0) break
+ bytes.push(
+ codePoint >> 0x6 | 0xC0,
+ codePoint & 0x3F | 0x80
+ )
+ } else if (codePoint < 0x10000) {
+ if ((units -= 3) < 0) break
+ bytes.push(
+ codePoint >> 0xC | 0xE0,
+ codePoint >> 0x6 & 0x3F | 0x80,
+ codePoint & 0x3F | 0x80
+ )
+ } else if (codePoint < 0x110000) {
+ if ((units -= 4) < 0) break
+ bytes.push(
+ codePoint >> 0x12 | 0xF0,
+ codePoint >> 0xC & 0x3F | 0x80,
+ codePoint >> 0x6 & 0x3F | 0x80,
+ codePoint & 0x3F | 0x80
+ )
+ } else {
+ throw new Error('Invalid code point')
+ }
+ }
+
+ return bytes
+}
+
+function asciiToBytes (str) {
+ var byteArray = []
+ for (var i = 0; i < str.length; ++i) {
+ // Node's code seems to be doing this and not & 0x7F..
+ byteArray.push(str.charCodeAt(i) & 0xFF)
+ }
+ return byteArray
+}
+
+function utf16leToBytes (str, units) {
+ var c, hi, lo
+ var byteArray = []
+ for (var i = 0; i < str.length; ++i) {
+ if ((units -= 2) < 0) break
+
+ c = str.charCodeAt(i)
+ hi = c >> 8
+ lo = c % 256
+ byteArray.push(lo)
+ byteArray.push(hi)
+ }
+
+ return byteArray
+}
+
+function base64ToBytes (str) {
+ return base64.toByteArray(base64clean(str))
+}
+
+function blitBuffer (src, dst, offset, length) {
+ for (var i = 0; i < length; ++i) {
+ if ((i + offset >= dst.length) || (i >= src.length)) break
+ dst[i + offset] = src[i]
+ }
+ return i
+}
+
+function isnan (val) {
+ return val !== val // eslint-disable-line no-self-compare
+}
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "../node_modules/buffer/node_modules/isarray/index.js":
+/*!************************************************************!*\
+ !*** ../node_modules/buffer/node_modules/isarray/index.js ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var toString = {}.toString;
+
+module.exports = Array.isArray || function (arr) {
+ return toString.call(arr) == '[object Array]';
+};
+
+
+/***/ }),
+
+/***/ "../node_modules/ieee754/index.js":
+/*!****************************************!*\
+ !*** ../node_modules/ieee754/index.js ***!
+ \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */
+exports.read = function (buffer, offset, isLE, mLen, nBytes) {
+ var e, m
+ var eLen = (nBytes * 8) - mLen - 1
+ var eMax = (1 << eLen) - 1
+ var eBias = eMax >> 1
+ var nBits = -7
+ var i = isLE ? (nBytes - 1) : 0
+ var d = isLE ? -1 : 1
+ var s = buffer[offset + i]
+
+ i += d
+
+ e = s & ((1 << (-nBits)) - 1)
+ s >>= (-nBits)
+ nBits += eLen
+ for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
+
+ m = e & ((1 << (-nBits)) - 1)
+ e >>= (-nBits)
+ nBits += mLen
+ for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
+
+ if (e === 0) {
+ e = 1 - eBias
+ } else if (e === eMax) {
+ return m ? NaN : ((s ? -1 : 1) * Infinity)
+ } else {
+ m = m + Math.pow(2, mLen)
+ e = e - eBias
+ }
+ return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
+}
+
+exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
+ var e, m, c
+ var eLen = (nBytes * 8) - mLen - 1
+ var eMax = (1 << eLen) - 1
+ var eBias = eMax >> 1
+ var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
+ var i = isLE ? 0 : (nBytes - 1)
+ var d = isLE ? 1 : -1
+ var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
+
+ value = Math.abs(value)
+
+ if (isNaN(value) || value === Infinity) {
+ m = isNaN(value) ? 1 : 0
+ e = eMax
+ } else {
+ e = Math.floor(Math.log(value) / Math.LN2)
+ if (value * (c = Math.pow(2, -e)) < 1) {
+ e--
+ c *= 2
+ }
+ if (e + eBias >= 1) {
+ value += rt / c
+ } else {
+ value += rt * Math.pow(2, 1 - eBias)
+ }
+ if (value * c >= 2) {
+ e++
+ c /= 2
+ }
+
+ if (e + eBias >= eMax) {
+ m = 0
+ e = eMax
+ } else if (e + eBias >= 1) {
+ m = ((value * c) - 1) * Math.pow(2, mLen)
+ e = e + eBias
+ } else {
+ m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
+ e = 0
+ }
+ }
+
+ for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
+
+ e = (e << mLen) | m
+ eLen += mLen
+ for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
+
+ buffer[offset + i - d] |= s * 128
+}
+
+
+/***/ }),
+
+/***/ "../node_modules/webpack/buildin/global.js":
+/*!*************************************************!*\
+ !*** ../node_modules/webpack/buildin/global.js ***!
+ \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var g;
+
+// This works in non-strict mode
+g = (function() {
+ return this;
+})();
+
+try {
+ // This works if eval is allowed (see CSP)
+ g = g || new Function("return this")();
+} catch (e) {
+ // This works if the window reference is available
+ if (typeof window === "object") g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+
+/***/ }),
+
+/***/ "./api/addAttachedSignature.ts":
+/*!*************************************!*\
+ !*** ./api/addAttachedSignature.ts ***!
+ \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer) {
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const constants_1 = __webpack_require__(/*! ../constants */ "./constants/index.ts");
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+const _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
+const _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts");
+/**
+ * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @param signedMessage - подписанное сообщение
+ * @returns подпись в формате PKCS#7
+ */
+exports.addAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, signedMessage) => __awaiter(void 0, void 0, void 0, function* () {
+ const { cadesplugin } = window;
+ const cadesCertificate = yield _getCadesCert_1._getCadesCert(thumbprint);
+ return eval(_generateCadesFn_1._generateCadesFn(function addAttachedSignature() {
+ let cadesAttrs;
+ let cadesSignedData;
+ let cadesSigner;
+ try {
+ cadesAttrs = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CADESCOM.CPAttribute');
+ cadesSignedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CadesSignedData');
+ cadesSigner = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CPSigner');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');
+ }
+ const currentTime = _getDateObj_1._getDateObj(new Date());
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');
+ }
+ let messageBase64;
+ try {
+ messageBase64 = Buffer.from(signedMessage).toString('base64');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error('Ошибка при преобразовании сообщения в Base64');
+ }
+ let cadesAuthAttrs;
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));
+ cadesAuthAttrs = _generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');
+ }
+ let signature;
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE));
+ signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');
+ }
+ return signature;
+ }));
+}));
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/buffer/index.js */ "../node_modules/buffer/index.js").Buffer))
+
+/***/ }),
+
+/***/ "./api/addDetachedSignature.ts":
+/*!*************************************!*\
+ !*** ./api/addDetachedSignature.ts ***!
+ \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const constants_1 = __webpack_require__(/*! ../constants */ "./constants/index.ts");
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+const _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
+const _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts");
+/**
+ * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @param signedMessage - подписанное сообщение
+ * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
+ * @returns подпись в формате PKCS#7
+ */
+exports.addDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, signedMessage, messageHash) => __awaiter(void 0, void 0, void 0, function* () {
+ const { cadesplugin } = window;
+ const cadesCertificate = yield _getCadesCert_1._getCadesCert(thumbprint);
+ return eval(_generateCadesFn_1._generateCadesFn(function addDetachedSignature() {
+ let cadesAttrs;
+ let cadesHashedData;
+ let cadesSignedData;
+ let cadesSigner;
+ try {
+ cadesAttrs = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CADESCOM.CPAttribute');
+ cadesHashedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.HashedData');
+ cadesSignedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CadesSignedData');
+ cadesSigner = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CPSigner');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');
+ }
+ const currentTime = _getDateObj_1._getDateObj(new Date());
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');
+ }
+ let cadesAuthAttrs;
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));
+ cadesAuthAttrs = _generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');
+ }
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ +
+ cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');
+ }
+ let signature;
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ +
+ cadesSignedData.VerifyHash(cadesHashedData, signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE));
+ signature =
+ _generateCadesFn_1.__cadesAsyncToken__ +
+ cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');
+ }
+ return signature;
+ }));
+}));
+
+
+/***/ }),
+
+/***/ "./api/certificate/certificate.ts":
+/*!****************************************!*\
+ !*** ./api/certificate/certificate.ts ***!
+ \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const constants_1 = __webpack_require__(/*! ../../constants */ "./constants/index.ts");
+const exportBase64_1 = __webpack_require__(/*! ./exportBase64 */ "./api/certificate/exportBase64.ts");
+const getAlgorithm_1 = __webpack_require__(/*! ./getAlgorithm */ "./api/certificate/getAlgorithm.ts");
+const getCadesProp_1 = __webpack_require__(/*! ./getCadesProp */ "./api/certificate/getCadesProp.ts");
+const getDecodedExtendedKeyUsage_1 = __webpack_require__(/*! ./getDecodedExtendedKeyUsage */ "./api/certificate/getDecodedExtendedKeyUsage.ts");
+const getExtendedKeyUsage_1 = __webpack_require__(/*! ./getExtendedKeyUsage */ "./api/certificate/getExtendedKeyUsage.ts");
+const getInfo_1 = __webpack_require__(/*! ./getInfo */ "./api/certificate/getInfo.ts");
+const hasExtendedKeyUsage_1 = __webpack_require__(/*! ./hasExtendedKeyUsage */ "./api/certificate/hasExtendedKeyUsage.ts");
+const isValid_1 = __webpack_require__(/*! ./isValid */ "./api/certificate/isValid.ts");
+class Certificate {
+ constructor(_cadesCertificate, name, issuerName, subjectName, thumbprint, validFrom, validTo) {
+ this._cadesCertificate = _cadesCertificate;
+ this.name = name;
+ this.issuerName = issuerName;
+ this.subjectName = subjectName;
+ this.thumbprint = thumbprint;
+ this.validFrom = validFrom;
+ this.validTo = validTo;
+ }
+ getOwnerInfo() {
+ return getInfo_1.getInfo.call(this, constants_1.SUBJECT_TAGS_TRANSLATIONS, 'SubjectName');
+ }
+ getIssuerInfo() {
+ return getInfo_1.getInfo.call(this, constants_1.ISSUER_TAGS_TRANSLATIONS, 'IssuerName');
+ }
+ getExtendedKeyUsage() {
+ return getExtendedKeyUsage_1.getExtendedKeyUsage.call(this);
+ }
+ getDecodedExtendedKeyUsage() {
+ return getDecodedExtendedKeyUsage_1.getDecodedExtendedKeyUsage.call(this);
+ }
+ getAlgorithm() {
+ return getAlgorithm_1.getAlgorithm.call(this);
+ }
+ getCadesProp(propName) {
+ return getCadesProp_1.getCadesProp.call(this, propName);
+ }
+ isValid() {
+ return isValid_1.isValid.call(this);
+ }
+ exportBase64() {
+ return exportBase64_1.exportBase64.call(this);
+ }
+ hasExtendedKeyUsage(oids) {
+ return hasExtendedKeyUsage_1.hasExtendedKeyUsage.call(this, oids);
+ }
+}
+exports.Certificate = Certificate;
+
+
+/***/ }),
+
+/***/ "./api/certificate/exportBase64.ts":
+/*!*****************************************!*\
+ !*** ./api/certificate/exportBase64.ts ***!
+ \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+/**
+ * Экспортирует сертификат в формате base64
+ *
+ * @returns сертификат в формате base64
+ */
+exports.exportBase64 = _afterPluginsLoaded_1._afterPluginsLoaded(function () {
+ const cadesCertificate = this._cadesCertificate;
+ return eval(_generateCadesFn_1._generateCadesFn(function exportBase64() {
+ let base64;
+ try {
+ base64 = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.Export(0);
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при экспорте сертификата');
+ }
+ return base64;
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./api/certificate/getAlgorithm.ts":
+/*!*****************************************!*\
+ !*** ./api/certificate/getAlgorithm.ts ***!
+ \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+/**
+ * Возвращает информацию об алгоритме сертификата
+ *
+ * @returns информацию об алгоритме и его OID'е
+ */
+exports.getAlgorithm = _afterPluginsLoaded_1._afterPluginsLoaded(function () {
+ const cadesCertificate = this._cadesCertificate;
+ return eval(_generateCadesFn_1._generateCadesFn(function getAlgorithm() {
+ const algorithmInfo = {
+ algorithm: null,
+ oid: null,
+ };
+ let cadesPublicKey;
+ try {
+ cadesPublicKey = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.PublicKey();
+ cadesPublicKey = _generateCadesFn_1.__cadesAsyncToken__ + cadesPublicKey.Algorithm;
+ algorithmInfo.algorithm = _generateCadesFn_1.__cadesAsyncToken__ + cadesPublicKey.FriendlyName;
+ algorithmInfo.oid = _generateCadesFn_1.__cadesAsyncToken__ + cadesPublicKey.Value;
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при получении алгоритма');
+ }
+ return algorithmInfo;
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./api/certificate/getCadesProp.ts":
+/*!*****************************************!*\
+ !*** ./api/certificate/getCadesProp.ts ***!
+ \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+/**
+ * Возвращает указанное внутренее свойство у сертификата в формате Cades
+ *
+ * @param propName = наименование свойства
+ * @returns значение запрошенного свойства
+ */
+exports.getCadesProp = _afterPluginsLoaded_1._afterPluginsLoaded(function (propName) {
+ const cadesCertificate = this._cadesCertificate;
+ return eval(_generateCadesFn_1._generateCadesFn(function getCadesProp() {
+ let propertyValue;
+ try {
+ propertyValue = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate[propName];
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при обращении к свойству сертификата');
+ }
+ return propertyValue;
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./api/certificate/getDecodedExtendedKeyUsage.ts":
+/*!*******************************************************!*\
+ !*** ./api/certificate/getDecodedExtendedKeyUsage.ts ***!
+ \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const constants_1 = __webpack_require__(/*! ../../constants */ "./constants/index.ts");
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+/**
+ * Возвращает расшифрованные ОИД'ы сертификата
+ *
+ * @returns словарь расшифрованных ОИД'ов
+ */
+exports.getDecodedExtendedKeyUsage = _afterPluginsLoaded_1._afterPluginsLoaded(function () {
+ return __awaiter(this, void 0, void 0, function* () {
+ const certificateOids = yield this.getExtendedKeyUsage();
+ return certificateOids.reduce((decodedOids, oidCode) => (Object.assign(Object.assign({}, decodedOids), { [oidCode]: constants_1.OIDS_DICTIONARY[oidCode] || null })), {});
+ });
+});
+
+
+/***/ }),
+
+/***/ "./api/certificate/getExtendedKeyUsage.ts":
+/*!************************************************!*\
+ !*** ./api/certificate/getExtendedKeyUsage.ts ***!
+ \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+/**
+ * Возвращает ОИД'ы сертификата
+ *
+ * @returns список ОИД'ов
+ */
+exports.getExtendedKeyUsage = _afterPluginsLoaded_1._afterPluginsLoaded(function () {
+ const cadesCertificate = this._cadesCertificate;
+ return eval(_generateCadesFn_1._generateCadesFn(function getExtendedKeyUsage() {
+ const OIDS = [];
+ let count;
+ try {
+ count = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();
+ count = _generateCadesFn_1.__cadesAsyncToken__ + count.EKUs;
+ count = _generateCadesFn_1.__cadesAsyncToken__ + count.Count;
+ if (count > 0) {
+ while (count > 0) {
+ let cadesExtendedKeyUsage;
+ cadesExtendedKeyUsage = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();
+ cadesExtendedKeyUsage = _generateCadesFn_1.__cadesAsyncToken__ + cadesExtendedKeyUsage.EKUs;
+ cadesExtendedKeyUsage = _generateCadesFn_1.__cadesAsyncToken__ + cadesExtendedKeyUsage.Item(count);
+ cadesExtendedKeyUsage = _generateCadesFn_1.__cadesAsyncToken__ + cadesExtendedKeyUsage.OID;
+ OIDS.push(cadesExtendedKeyUsage);
+ count--;
+ }
+ }
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || "Ошибка при получении ОИД'ов");
+ }
+ return OIDS;
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./api/certificate/getInfo.ts":
+/*!************************************!*\
+ !*** ./api/certificate/getInfo.ts ***!
+ \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _parseCertInfo_1 = __webpack_require__(/*! ../../helpers/_parseCertInfo */ "./helpers/_parseCertInfo.ts");
+const getCadesProp_1 = __webpack_require__(/*! ./getCadesProp */ "./api/certificate/getCadesProp.ts");
+/**
+ * Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам
+ *
+ * @param tags = словарь
+ * @param entitiesPath = путь к разбираемой сущности
+ * @returns расшифрованная информация по отдельным тэгам
+ */
+exports.getInfo = _afterPluginsLoaded_1._afterPluginsLoaded(function (tags, entitiesPath) {
+ return __awaiter(this, void 0, void 0, function* () {
+ let entities;
+ try {
+ entities = yield getCadesProp_1.getCadesProp.call(this, entitiesPath);
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при извлечении информации из сертификата');
+ }
+ return _parseCertInfo_1._parseCertInfo(tags, entities);
+ });
+});
+
+
+/***/ }),
+
+/***/ "./api/certificate/hasExtendedKeyUsage.ts":
+/*!************************************************!*\
+ !*** ./api/certificate/hasExtendedKeyUsage.ts ***!
+ \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+/**
+ * Проверяет наличие ОИД'а (ОИД'ов) у сертификата
+ *
+ * @param oids - ОИД'ы для проверки
+ * @returns флаг наличия ОИД'ов у сертификата
+ */
+exports.hasExtendedKeyUsage = _afterPluginsLoaded_1._afterPluginsLoaded(function (oids) {
+ return __awaiter(this, void 0, void 0, function* () {
+ const certOids = yield this.getExtendedKeyUsage();
+ let result;
+ if (Array.isArray(oids)) {
+ result = oids.every((oidToCheck) => certOids.some((certOid) => certOid === oidToCheck));
+ }
+ else {
+ result = certOids.some((certOid) => certOid === oids);
+ }
+ return result;
+ });
+});
+
+
+/***/ }),
+
+/***/ "./api/certificate/index.ts":
+/*!**********************************!*\
+ !*** ./api/certificate/index.ts ***!
+ \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+}
+Object.defineProperty(exports, "__esModule", { value: true });
+__export(__webpack_require__(/*! ./certificate */ "./api/certificate/certificate.ts"));
+
+
+/***/ }),
+
+/***/ "./api/certificate/isValid.ts":
+/*!************************************!*\
+ !*** ./api/certificate/isValid.ts ***!
+ \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+/**
+ * Проверяет действительность сертификата
+ *
+ * @returns флаг валидности
+ */
+exports.isValid = _afterPluginsLoaded_1._afterPluginsLoaded(function () {
+ const cadesCertificate = this._cadesCertificate;
+ return eval(_generateCadesFn_1._generateCadesFn(function isValid() {
+ let isValid;
+ try {
+ isValid = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.IsValid();
+ isValid = _generateCadesFn_1.__cadesAsyncToken__ + isValid.Result;
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при проверке сертификата');
+ }
+ return Boolean(isValid);
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./api/createAttachedSignature.ts":
+/*!****************************************!*\
+ !*** ./api/createAttachedSignature.ts ***!
+ \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer) {
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const constants_1 = __webpack_require__(/*! ../constants */ "./constants/index.ts");
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+const _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
+const _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts");
+/**
+ * Создает присоединенную подпись сообщения по отпечатку сертификата
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @param message - подписываемое сообщение
+ * @returns подпись в формате PKCS#7
+ */
+exports.createAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, unencryptedMessage) => __awaiter(void 0, void 0, void 0, function* () {
+ const { cadesplugin } = window;
+ const cadesCertificate = yield _getCadesCert_1._getCadesCert(thumbprint);
+ return eval(_generateCadesFn_1._generateCadesFn(function createAttachedSignature() {
+ let cadesAttrs;
+ let cadesSignedData;
+ let cadesSigner;
+ try {
+ cadesAttrs = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CADESCOM.CPAttribute');
+ cadesSignedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CadesSignedData');
+ cadesSigner = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CPSigner');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');
+ }
+ const currentTime = _getDateObj_1._getDateObj(new Date());
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');
+ }
+ let messageBase64;
+ try {
+ messageBase64 = Buffer.from(unencryptedMessage).toString('base64');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error('Ошибка при преобразовании сообщения в Base64');
+ }
+ let cadesAuthAttrs;
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));
+ cadesAuthAttrs = _generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');
+ }
+ let signature;
+ try {
+ signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');
+ }
+ return signature;
+ }));
+}));
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/buffer/index.js */ "../node_modules/buffer/index.js").Buffer))
+
+/***/ }),
+
+/***/ "./api/createDetachedSignature.ts":
+/*!****************************************!*\
+ !*** ./api/createDetachedSignature.ts ***!
+ \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const constants_1 = __webpack_require__(/*! ../constants */ "./constants/index.ts");
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+const _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
+const _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts");
+/**
+ * Создает отсоединенную подпись хеша по отпечатку сертификата
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
+ * @returns подпись в формате PKCS#7
+ */
+exports.createDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, messageHash) => __awaiter(void 0, void 0, void 0, function* () {
+ const { cadesplugin } = window;
+ const cadesCertificate = yield _getCadesCert_1._getCadesCert(thumbprint);
+ return eval(_generateCadesFn_1._generateCadesFn(function createDetachedSignature() {
+ let cadesAttrs;
+ let cadesHashedData;
+ let cadesSignedData;
+ let cadesSigner;
+ try {
+ cadesAttrs = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CADESCOM.CPAttribute');
+ cadesHashedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.HashedData');
+ cadesSignedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CadesSignedData');
+ cadesSigner = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CPSigner');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');
+ }
+ const currentTime = _getDateObj_1._getDateObj(new Date());
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');
+ }
+ let cadesAuthAttrs;
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));
+ cadesAuthAttrs = _generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');
+ }
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ +
+ cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');
+ }
+ let signature;
+ try {
+ signature =
+ _generateCadesFn_1.__cadesAsyncToken__ +
+ cadesSignedData.SignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');
+ }
+ return signature;
+ }));
+}));
+
+
+/***/ }),
+
+/***/ "./api/createHash.ts":
+/*!***************************!*\
+ !*** ./api/createHash.ts ***!
+ \***************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer) {
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+/**
+ * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит
+ * 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)
+ *
+ * @param unencryptedMessage - сообщение для хеширования
+ *
+ * @returns хеш
+ */
+exports.createHash = _afterPluginsLoaded_1._afterPluginsLoaded((unencryptedMessage) => __awaiter(void 0, void 0, void 0, function* () {
+ const { cadesplugin } = window;
+ return eval(_generateCadesFn_1._generateCadesFn(function createHash() {
+ const cadesHashedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.HashedData');
+ let messageBase64;
+ let hash;
+ try {
+ messageBase64 = Buffer.from(unencryptedMessage).toString('base64');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error('Ошибка при преобразовании сообщения в Base64');
+ }
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ +
+ cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesHashedData.Hash(messageBase64));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации хэширования');
+ }
+ try {
+ hash = _generateCadesFn_1.__cadesAsyncToken__ + cadesHashedData.Value;
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при создании хэша');
+ }
+ return hash;
+ }));
+}));
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/buffer/index.js */ "../node_modules/buffer/index.js").Buffer))
+
+/***/ }),
+
+/***/ "./api/createXMLSignature.ts":
+/*!***********************************!*\
+ !*** ./api/createXMLSignature.ts ***!
+ \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+const _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts");
+/**
+ * Создает XML подпись для документа в формате XML
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @param unencryptedMessage - подписываемое сообщение в формате XML
+ * @returns подпись
+ */
+exports.createXMLSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, unencryptedMessage) => __awaiter(void 0, void 0, void 0, function* () {
+ const { cadesplugin } = window;
+ const cadesCertificate = yield _getCadesCert_1._getCadesCert(thumbprint);
+ return eval(_generateCadesFn_1._generateCadesFn(function createXMLSignature() {
+ let cadesSigner;
+ let cadesSignedXML;
+ try {
+ cadesSigner = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CPSigner');
+ cadesSignedXML = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.SignedXML');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');
+ }
+ try {
+ const signatureMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';
+ const digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_CheckCertificate(true));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedXML.propset_Content(unencryptedMessage));
+ void (_generateCadesFn_1.__cadesAsyncToken__ +
+ cadesSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedXML.propset_SignatureMethod(signatureMethod));
+ void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedXML.propset_DigestMethod(digestMethod));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');
+ }
+ let signature;
+ try {
+ signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedXML.Sign(cadesSigner);
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');
+ }
+ return signature;
+ }));
+}));
+
+
+/***/ }),
+
+/***/ "./api/getAllContainerCertificates.ts":
+/*!********************************************!*\
+ !*** ./api/getAllContainerCertificates.ts ***!
+ \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const certificate_1 = __webpack_require__(/*! ./certificate */ "./api/certificate/index.ts");
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractCommonName_1 = __webpack_require__(/*! ../helpers/_extractCommonName */ "./helpers/_extractCommonName.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+let certificatesCache;
+/**
+ * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей
+ * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа
+ *
+ * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
+ * @returns список сертификатов
+ */
+exports.getAllContainerCertificates = _afterPluginsLoaded_1._afterPluginsLoaded((resetCache = false) => {
+ const { cadesplugin } = window;
+ if (!resetCache && certificatesCache) {
+ return certificatesCache;
+ }
+ return eval(_generateCadesFn_1._generateCadesFn(function getAllContainerCertificates() {
+ let cadesStore;
+ try {
+ cadesStore = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.Store');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');
+ }
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ +
+ cadesStore.Open(cadesplugin.CADESCOM_CONTAINER_STORE, cadesplugin.CAPICOM_MY_STORE, cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');
+ }
+ let cadesCertificates;
+ let cadesCertificatesCount;
+ try {
+ cadesCertificates = _generateCadesFn_1.__cadesAsyncToken__ + cadesStore.Certificates;
+ cadesCertificatesCount = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Count;
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');
+ }
+ if (!cadesCertificatesCount) {
+ throw new Error('Нет доступных сертификатов');
+ }
+ const certificateList = [];
+ try {
+ while (cadesCertificatesCount) {
+ const cadesCertificate = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);
+ certificateList.push(new certificate_1.Certificate(cadesCertificate, _extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.SubjectName), _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.IssuerName, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.SubjectName, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.Thumbprint, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ValidFromDate, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ValidToDate));
+ cadesCertificatesCount--;
+ }
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');
+ }
+ cadesStore.Close();
+ certificatesCache = certificateList;
+ return certificatesCache;
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./api/getAllUserCertificates.ts":
+/*!***************************************!*\
+ !*** ./api/getAllUserCertificates.ts ***!
+ \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const certificate_1 = __webpack_require__(/*! ./certificate */ "./api/certificate/index.ts");
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractCommonName_1 = __webpack_require__(/*! ../helpers/_extractCommonName */ "./helpers/_extractCommonName.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+let certificatesCache;
+/**
+ * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа
+ *
+ * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
+ * @returns список сертификатов
+ */
+exports.getAllUserCertificates = _afterPluginsLoaded_1._afterPluginsLoaded((resetCache = false) => {
+ const { cadesplugin } = window;
+ if (!resetCache && certificatesCache) {
+ return certificatesCache;
+ }
+ return eval(_generateCadesFn_1._generateCadesFn(function getAllUserCertificates() {
+ let cadesStore;
+ try {
+ cadesStore = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.Store');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');
+ }
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ +
+ cadesStore.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE, cadesplugin.CAPICOM_MY_STORE, cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');
+ }
+ let cadesCertificates;
+ let cadesCertificatesCount;
+ try {
+ cadesCertificates = _generateCadesFn_1.__cadesAsyncToken__ + cadesStore.Certificates;
+ cadesCertificatesCount = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Count;
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');
+ }
+ if (!cadesCertificatesCount) {
+ throw new Error('Нет доступных сертификатов');
+ }
+ const certificateList = [];
+ try {
+ while (cadesCertificatesCount) {
+ const cadesCertificate = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);
+ certificateList.push(new certificate_1.Certificate(cadesCertificate, _extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.SubjectName), _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.IssuerName, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.SubjectName, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.Thumbprint, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ValidFromDate, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ValidToDate));
+ cadesCertificatesCount--;
+ }
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');
+ }
+ cadesStore.Close();
+ certificatesCache = certificateList;
+ return certificatesCache;
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./api/getCertificate.ts":
+/*!*******************************!*\
+ !*** ./api/getCertificate.ts ***!
+ \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const getUserCertificates_1 = __webpack_require__(/*! ./getUserCertificates */ "./api/getUserCertificates.ts");
+/**
+ * Возвращает сертификат по отпечатку
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @returns сертификат
+ */
+exports.getCertificate = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint) => __awaiter(void 0, void 0, void 0, function* () {
+ if (!thumbprint) {
+ throw new Error('Отпечаток не указан');
+ }
+ const availableCertificates = yield getUserCertificates_1.getUserCertificates();
+ const foundCertificate = availableCertificates.find((cert) => cert.thumbprint === thumbprint);
+ if (!foundCertificate) {
+ throw new Error(`Сертификат с отпечатком: "${thumbprint}" не найден`);
+ }
+ return foundCertificate;
+}));
+
+
+/***/ }),
+
+/***/ "./api/getContainerCertificates.ts":
+/*!*****************************************!*\
+ !*** ./api/getContainerCertificates.ts ***!
+ \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const certificate_1 = __webpack_require__(/*! ./certificate */ "./api/certificate/index.ts");
+const constants_1 = __webpack_require__(/*! ../constants */ "./constants/index.ts");
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractCommonName_1 = __webpack_require__(/*! ../helpers/_extractCommonName */ "./helpers/_extractCommonName.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+let certificatesCache;
+/**
+ * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей
+ * Возвращает список сертификатов, доступных пользователю в системе
+ *
+ * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
+ * @returns список сертификатов
+ */
+exports.getContainerCertificates = _afterPluginsLoaded_1._afterPluginsLoaded((resetCache = false) => {
+ const { cadesplugin } = window;
+ if (!resetCache && certificatesCache) {
+ return certificatesCache;
+ }
+ return eval(_generateCadesFn_1._generateCadesFn(function getContainerCertificates() {
+ let cadesStore;
+ try {
+ cadesStore = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.Store');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');
+ }
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ +
+ cadesStore.Open(cadesplugin.CADESCOM_CONTAINER_STORE, cadesplugin.CAPICOM_MY_STORE, cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');
+ }
+ let cadesCertificates;
+ let cadesCertificatesCount;
+ try {
+ cadesCertificates = _generateCadesFn_1.__cadesAsyncToken__ + cadesStore.Certificates;
+ if (cadesCertificates) {
+ cadesCertificates =
+ _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);
+ /**
+ * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ
+ * или не действительны на данный момент
+ */
+ cadesCertificates =
+ _generateCadesFn_1.__cadesAsyncToken__ +
+ cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY, constants_1.CAPICOM_PROPID_KEY_PROV_INFO);
+ cadesCertificatesCount = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Count;
+ }
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');
+ }
+ if (!cadesCertificatesCount) {
+ throw new Error('Нет доступных сертификатов');
+ }
+ const certificateList = [];
+ try {
+ while (cadesCertificatesCount) {
+ const cadesCertificate = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);
+ certificateList.push(new certificate_1.Certificate(cadesCertificate, _extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.SubjectName), _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.IssuerName, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.SubjectName, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.Thumbprint, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ValidFromDate, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ValidToDate));
+ cadesCertificatesCount--;
+ }
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');
+ }
+ cadesStore.Close();
+ certificatesCache = certificateList;
+ return certificatesCache;
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./api/getCspVersion.ts":
+/*!******************************!*\
+ !*** ./api/getCspVersion.ts ***!
+ \******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+/**
+ * Предоставляет информацию о системе
+ *
+ * @returns информацию о CSP
+ */
+exports.getCspVersion = _afterPluginsLoaded_1._afterPluginsLoaded(() => {
+ let cspVersion = null;
+ return eval(_generateCadesFn_1._generateCadesFn(function getCspVersion() {
+ let cadesAbout;
+ try {
+ cadesAbout = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.About');
+ cspVersion = _generateCadesFn_1.__cadesAsyncToken__ + cadesAbout.CSPVersion();
+ cspVersion = _generateCadesFn_1.__cadesAsyncToken__ + cspVersion.toString();
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при получении версии системы');
+ }
+ return cspVersion;
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./api/getPluginVersion.ts":
+/*!*********************************!*\
+ !*** ./api/getPluginVersion.ts ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+/**
+ * Предоставляет информацию о системе
+ *
+ * @returns информацию о плагине
+ */
+exports.getPluginVersion = _afterPluginsLoaded_1._afterPluginsLoaded(() => {
+ let cadesVersion = null;
+ return eval(_generateCadesFn_1._generateCadesFn(function getPluginVersion() {
+ let cadesAbout;
+ try {
+ cadesAbout = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.About');
+ cadesVersion = _generateCadesFn_1.__cadesAsyncToken__ + cadesAbout.PluginVersion;
+ if (!cadesVersion) {
+ cadesVersion = _generateCadesFn_1.__cadesAsyncToken__ + cadesAbout.Version;
+ }
+ cadesVersion = _generateCadesFn_1.__cadesAsyncToken__ + cadesVersion.toString();
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о плагине');
+ }
+ return cadesVersion;
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./api/getSystemInfo.ts":
+/*!******************************!*\
+ !*** ./api/getSystemInfo.ts ***!
+ \******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+/**
+ * Предоставляет информацию о системе
+ *
+ * @returns информацию о CSP и плагине
+ */
+exports.getSystemInfo = _afterPluginsLoaded_1._afterPluginsLoaded(() => {
+ const sysInfo = {
+ cadesVersion: null,
+ cspVersion: null,
+ };
+ return eval(_generateCadesFn_1._generateCadesFn(function getSystemInfo() {
+ let cadesAbout;
+ try {
+ cadesAbout = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.About');
+ sysInfo.cadesVersion = _generateCadesFn_1.__cadesAsyncToken__ + cadesAbout.PluginVersion;
+ sysInfo.cspVersion = _generateCadesFn_1.__cadesAsyncToken__ + cadesAbout.CSPVersion();
+ if (!sysInfo.cadesVersion) {
+ sysInfo.cadesVersion = _generateCadesFn_1.__cadesAsyncToken__ + cadesAbout.Version;
+ }
+ sysInfo.cadesVersion = _generateCadesFn_1.__cadesAsyncToken__ + sysInfo.cadesVersion.toString();
+ sysInfo.cspVersion = _generateCadesFn_1.__cadesAsyncToken__ + sysInfo.cspVersion.toString();
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о системе');
+ }
+ return sysInfo;
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./api/getUserCertificates.ts":
+/*!************************************!*\
+ !*** ./api/getUserCertificates.ts ***!
+ \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const certificate_1 = __webpack_require__(/*! ./certificate */ "./api/certificate/index.ts");
+const constants_1 = __webpack_require__(/*! ../constants */ "./constants/index.ts");
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractCommonName_1 = __webpack_require__(/*! ../helpers/_extractCommonName */ "./helpers/_extractCommonName.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+let certificatesCache;
+/**
+ * Возвращает список сертификатов, доступных пользователю в системе
+ *
+ * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
+ * @returns список сертификатов
+ */
+exports.getUserCertificates = _afterPluginsLoaded_1._afterPluginsLoaded((resetCache = false) => {
+ const { cadesplugin } = window;
+ if (!resetCache && certificatesCache) {
+ return certificatesCache;
+ }
+ return eval(_generateCadesFn_1._generateCadesFn(function getUserCertificates() {
+ let cadesStore;
+ try {
+ cadesStore = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.Store');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');
+ }
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ +
+ cadesStore.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE, cadesplugin.CAPICOM_MY_STORE, cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');
+ }
+ let cadesCertificates;
+ let cadesCertificatesCount;
+ try {
+ cadesCertificates = _generateCadesFn_1.__cadesAsyncToken__ + cadesStore.Certificates;
+ if (cadesCertificates) {
+ cadesCertificates =
+ _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);
+ /**
+ * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ
+ * или не действительны на данный момент
+ */
+ cadesCertificates =
+ _generateCadesFn_1.__cadesAsyncToken__ +
+ cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY, constants_1.CAPICOM_PROPID_KEY_PROV_INFO);
+ cadesCertificatesCount = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Count;
+ }
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');
+ }
+ if (!cadesCertificatesCount) {
+ throw new Error('Нет доступных сертификатов');
+ }
+ const certificateList = [];
+ try {
+ while (cadesCertificatesCount) {
+ const cadesCertificate = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);
+ certificateList.push(new certificate_1.Certificate(cadesCertificate, _extractCommonName_1._extractCommonName(_generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.SubjectName), _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.IssuerName, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.SubjectName, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.Thumbprint, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ValidFromDate, _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificate.ValidToDate));
+ cadesCertificatesCount--;
+ }
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');
+ }
+ cadesStore.Close();
+ certificatesCache = certificateList;
+ return certificatesCache;
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./api/index.ts":
+/*!**********************!*\
+ !*** ./api/index.ts ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+}
+Object.defineProperty(exports, "__esModule", { value: true });
+__export(__webpack_require__(/*! ./getCertificate */ "./api/getCertificate.ts"));
+__export(__webpack_require__(/*! ./getUserCertificates */ "./api/getUserCertificates.ts"));
+__export(__webpack_require__(/*! ./getAllUserCertificates */ "./api/getAllUserCertificates.ts"));
+__export(__webpack_require__(/*! ./getContainerCertificates */ "./api/getContainerCertificates.ts"));
+__export(__webpack_require__(/*! ./getAllContainerCertificates */ "./api/getAllContainerCertificates.ts"));
+__export(__webpack_require__(/*! ./getSystemInfo */ "./api/getSystemInfo.ts"));
+__export(__webpack_require__(/*! ./isValidSystemSetup */ "./api/isValidSystemSetup.ts"));
+__export(__webpack_require__(/*! ./createXMLSignature */ "./api/createXMLSignature.ts"));
+__export(__webpack_require__(/*! ./createDetachedSignature */ "./api/createDetachedSignature.ts"));
+__export(__webpack_require__(/*! ./addDetachedSignature */ "./api/addDetachedSignature.ts"));
+__export(__webpack_require__(/*! ./createAttachedSignature */ "./api/createAttachedSignature.ts"));
+__export(__webpack_require__(/*! ./addAttachedSignature */ "./api/addAttachedSignature.ts"));
+__export(__webpack_require__(/*! ./createHash */ "./api/createHash.ts"));
+__export(__webpack_require__(/*! ./certificate */ "./api/certificate/index.ts"));
+__export(__webpack_require__(/*! ./getCspVersion */ "./api/getCspVersion.ts"));
+__export(__webpack_require__(/*! ./getPluginVersion */ "./api/getPluginVersion.ts"));
+
+
+/***/ }),
+
+/***/ "./api/isValidSystemSetup.ts":
+/*!***********************************!*\
+ !*** ./api/isValidSystemSetup.ts ***!
+ \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _isSupportedCadesVersion_1 = __webpack_require__(/*! ../helpers/_isSupportedCadesVersion */ "./helpers/_isSupportedCadesVersion.ts");
+const _isSupportedCSPVersion_1 = __webpack_require__(/*! ../helpers/_isSupportedCSPVersion */ "./helpers/_isSupportedCSPVersion.ts");
+const getSystemInfo_1 = __webpack_require__(/*! ./getSystemInfo */ "./api/getSystemInfo.ts");
+/**
+ * Проверяет корректность настроек ЭП на машине
+ *
+ * @returns флаг корректности настроек
+ */
+exports.isValidSystemSetup = _afterPluginsLoaded_1._afterPluginsLoaded(() => __awaiter(void 0, void 0, void 0, function* () {
+ let systemInfo;
+ try {
+ systemInfo = yield getSystemInfo_1.getSystemInfo();
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Настройки ЭП на данной машине не верны');
+ }
+ if (!_isSupportedCadesVersion_1._isSupportedCadesVersion(systemInfo.cadesVersion)) {
+ throw new Error('Не поддерживаемая версия плагина');
+ }
+ if (!_isSupportedCSPVersion_1._isSupportedCSPVersion(systemInfo.cspVersion)) {
+ throw new Error('Не поддерживаемая версия CSP');
+ }
+ return true;
+}));
+
+
+/***/ }),
+
+/***/ "./constants/cades-constants.ts":
+/*!**************************************!*\
+ !*** ./constants/cades-constants.ts ***!
+ \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CADESCOM_ATTRIBUTE_OTHER = -1;
+exports.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;
+exports.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;
+exports.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;
+exports.CADESCOM_AllowNoOutstandingRequest = 1;
+exports.CADESCOM_AllowNone = 0;
+exports.CADESCOM_AllowUntrustedCertificate = 2;
+exports.CADESCOM_AllowUntrustedRoot = 4;
+exports.CADESCOM_BASE64_TO_BINARY = 0x01;
+exports.CADESCOM_CADES_BES = 1;
+exports.CADESCOM_CADES_DEFAULT = 0;
+exports.CADESCOM_CADES_T = 5;
+exports.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;
+exports.CADESCOM_CONTAINER_STORE = 100;
+exports.CADESCOM_CURRENT_USER_STORE = 2;
+exports.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;
+exports.CADESCOM_DISPLAY_DATA_CONTENT = 1;
+exports.CADESCOM_DISPLAY_DATA_NONE = 0;
+exports.CADESCOM_ENCODE_ANY = -1;
+exports.CADESCOM_ENCODE_BASE64 = 0;
+exports.CADESCOM_ENCODE_BINARY = 1;
+exports.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;
+exports.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;
+exports.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;
+exports.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;
+exports.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;
+exports.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;
+exports.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;
+exports.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;
+exports.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;
+exports.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;
+exports.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;
+exports.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;
+exports.CADESCOM_HASH_ALGORITHM_MD2 = 1;
+exports.CADESCOM_HASH_ALGORITHM_MD4 = 2;
+exports.CADESCOM_HASH_ALGORITHM_MD5 = 3;
+exports.CADESCOM_HASH_ALGORITHM_SHA1 = 0;
+exports.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;
+exports.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;
+exports.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;
+exports.CADESCOM_LOCAL_MACHINE_STORE = 1;
+exports.CADESCOM_PKCS7_TYPE = 65535;
+exports.CADESCOM_STRING_TO_UCS2LE = 0x00;
+exports.CADESCOM_SkipInstallToStore = 268435456;
+exports.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;
+exports.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;
+exports.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;
+exports.CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;
+exports.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;
+exports.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;
+exports.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;
+exports.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;
+exports.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;
+exports.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;
+exports.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;
+exports.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;
+exports.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;
+exports.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;
+exports.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
+exports.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
+exports.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;
+exports.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;
+exports.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;
+exports.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;
+exports.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;
+exports.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;
+exports.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;
+exports.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;
+exports.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;
+exports.CAPICOM_CURRENT_USER_STORE = 2;
+exports.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;
+exports.CAPICOM_EKU_CLIENT_AUTH = 2;
+exports.CAPICOM_EKU_OTHER = 0;
+exports.CAPICOM_EKU_SMARTCARD_LOGON = 5;
+exports.CAPICOM_LOCAL_MACHINE_STORE = 1;
+exports.CAPICOM_MEMORY_STORE = 0;
+exports.CAPICOM_MY_STORE = 'My';
+exports.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;
+exports.CAPICOM_OID_OTHER = 0;
+exports.CAPICOM_PROPID_ACCESS_STATE = 14;
+exports.CAPICOM_PROPID_ARCHIVED = 19;
+exports.CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;
+exports.CAPICOM_PROPID_AUTO_ENROLL = 21;
+exports.CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;
+exports.CAPICOM_PROPID_CTL_USAGE = 9;
+exports.CAPICOM_PROPID_DATE_STAMP = 27;
+exports.CAPICOM_PROPID_DESCRIPTION = 13;
+exports.CAPICOM_PROPID_EFS = 17;
+exports.CAPICOM_PROPID_ENHKEY_USAGE = 9;
+exports.CAPICOM_PROPID_ENROLLMENT = 26;
+exports.CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;
+exports.CAPICOM_PROPID_FIRST_RESERVED = 66;
+exports.CAPICOM_PROPID_FIRST_USER = 0x00008000;
+exports.CAPICOM_PROPID_FORTEZZA_DATA = 18;
+exports.CAPICOM_PROPID_FRIENDLY_NAME = 11;
+exports.CAPICOM_PROPID_HASH_PROP = 3;
+exports.CAPICOM_PROPID_IE30_RESERVED = 7;
+exports.CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;
+exports.CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;
+exports.CAPICOM_PROPID_KEY_CONTEXT = 5;
+exports.CAPICOM_PROPID_KEY_IDENTIFIER = 20;
+exports.CAPICOM_PROPID_KEY_PROV_HANDLE = 1;
+exports.CAPICOM_PROPID_KEY_PROV_INFO = 2;
+exports.CAPICOM_PROPID_KEY_SPEC = 6;
+exports.CAPICOM_PROPID_LAST_RESERVED = 0x00007fff;
+exports.CAPICOM_PROPID_LAST_USER = 0x0000ffff;
+exports.CAPICOM_PROPID_MD5_HASH = 4;
+exports.CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;
+exports.CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;
+exports.CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;
+exports.CAPICOM_PROPID_PVK_FILE = 12;
+exports.CAPICOM_PROPID_RENEWAL = 64;
+exports.CAPICOM_PROPID_SHA1_HASH = 3;
+exports.CAPICOM_PROPID_SIGNATURE_HASH = 15;
+exports.CAPICOM_PROPID_SMART_CARD_DATA = 16;
+exports.CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;
+exports.CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;
+exports.CAPICOM_PROPID_UNKNOWN = 0;
+exports.CAPICOM_SMART_CARD_USER_STORE = 4;
+exports.CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;
+exports.CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;
+exports.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
+exports.CAPICOM_STORE_OPEN_READ_ONLY = 0;
+exports.CAPICOM_STORE_OPEN_READ_WRITE = 1;
+exports.CHECK_NONE = 0;
+exports.CHECK_OFFLINE_REVOCATION_STATUS = 16;
+exports.CHECK_ONLINE_REVOCATION_STATUS = 8;
+exports.CHECK_SIGNATURE_VALIDITY = 4;
+exports.CHECK_TIME_VALIDITY = 2;
+exports.CHECK_TRUSTED_ROOT = 1;
+exports.LOG_LEVEL_DEBUG = 4;
+exports.LOG_LEVEL_ERROR = 1;
+exports.LOG_LEVEL_INFO = 2;
+exports.TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;
+exports.TRUST_CTL_IS_NOT_TIME_VALID = 131072;
+exports.TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;
+exports.TRUST_IS_CYCLIC = 128;
+exports.TRUST_IS_NOT_SIGNATURE_VALID = 8;
+exports.TRUST_IS_NOT_TIME_NESTED = 2;
+exports.TRUST_IS_NOT_TIME_VALID = 1;
+exports.TRUST_IS_NOT_VALID_FOR_USAGE = 16;
+exports.TRUST_IS_PARTIAL_CHAIN = 65536;
+exports.TRUST_IS_REVOKED = 4;
+exports.TRUST_IS_UNTRUSTED_ROOT = 32;
+exports.TRUST_REVOCATION_STATUS_UNKNOWN = 64;
+exports.XmlDsigGost3410Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';
+exports.XmlDsigGost3410UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411';
+exports.XmlDsigGost3411Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';
+exports.XmlDsigGost3411UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr3411';
+
+
+/***/ }),
+
+/***/ "./constants/index.ts":
+/*!****************************!*\
+ !*** ./constants/index.ts ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+}
+Object.defineProperty(exports, "__esModule", { value: true });
+__export(__webpack_require__(/*! ./cades-constants */ "./constants/cades-constants.ts"));
+__export(__webpack_require__(/*! ./issuer-tags-translations */ "./constants/issuer-tags-translations.ts"));
+__export(__webpack_require__(/*! ./oids-dictionary */ "./constants/oids-dictionary.ts"));
+__export(__webpack_require__(/*! ./subject-tags-translations */ "./constants/subject-tags-translations.ts"));
+
+
+/***/ }),
+
+/***/ "./constants/issuer-tags-translations.ts":
+/*!***********************************************!*\
+ !*** ./constants/issuer-tags-translations.ts ***!
+ \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ISSUER_TAGS_TRANSLATIONS = [
+ { possibleNames: ['UnstructuredName'], translation: 'Неструктурированное имя' },
+ { possibleNames: ['CN'], translation: 'Удостоверяющий центр' },
+ { possibleNames: ['C'], translation: 'Страна' },
+ { possibleNames: ['S'], translation: 'Регион' },
+ { possibleNames: ['STREET'], translation: 'Адрес' },
+ { possibleNames: ['O'], translation: 'Компания' },
+ { possibleNames: ['OU'], translation: 'Тип' },
+ { possibleNames: ['T'], translation: 'Должность' },
+ { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },
+ { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },
+ { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },
+ { possibleNames: ['ИНН', 'INN', 'ИНН организации'], translation: 'ИНН' },
+ { possibleNames: ['E'], translation: 'Email' },
+ { possibleNames: ['L'], translation: 'Город' },
+];
+
+
+/***/ }),
+
+/***/ "./constants/oids-dictionary.ts":
+/*!**************************************!*\
+ !*** ./constants/oids-dictionary.ts ***!
+ \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.OIDS_DICTIONARY = {
+ '1.2.643.2.2.34.6': 'Пользователь Центра Регистрации',
+ '1.2.643.2.39.1.1': 'Использование в программных продуктах системы "1С:Предприятие 8"',
+ '1.2.643.3.131.1.1': 'ИНН',
+ '1.2.643.3.141.1.1': 'РНС ФСС',
+ '1.2.643.3.141.1.2': 'КП ФСС',
+ '1.2.643.3.2.100.65.13.11': 'Использование в системе АИС "Госзакупки" Сахалинской области.',
+ '1.2.643.3.8.100.1': 'Сертификат типа "ekey-ГОСТ"',
+ '1.2.643.3.8.100.1.1': 'Общее использование в системах ИОК без права заверения финансовых документов',
+ '1.2.643.3.8.100.1.10': 'Для участия в электронных торгах и подписания государственного контракта в информационных системах Тендерного комитета города Москвы уполномоченными лицами участников размещения государственного заказа города Москвы',
+ '1.2.643.3.8.100.1.11': 'Подписание электронных документов в автоматизированной информационной системе размещения государственного и муниципального заказа Саратовской области',
+ '1.2.643.3.8.100.1.12': 'Использование в системе государственного заказа Иркутской области',
+ '1.2.643.3.8.100.1.13': 'Использование в электронной торговой площадке агентства государственного заказа Красноярского края',
+ '1.2.643.3.8.100.1.14': 'Использование в электронной торговой площадке "Тендер"',
+ '1.2.643.3.8.100.1.2': 'Передача отчетности по ТКС',
+ '1.2.643.3.8.100.1.3': 'Оформление взаимных обязательств, соглашений, договоров, актов и т.п.',
+ '1.2.643.3.8.100.1.4': 'Внутрикорпоративный документооборот',
+ '1.2.643.3.8.100.1.5': 'Использование в системах электронной торговли',
+ '1.2.643.3.8.100.1.6': 'Использование в торгово-закупочной системе "ЭЛЕКТРА"',
+ '1.2.643.3.8.100.1.7': 'Использование в системе Портал государственных закупок Ставропольского края.',
+ '1.2.643.3.8.100.1.8': 'Использование в Единой системе электронной торговли B2B-Center и B2G.',
+ '1.2.643.3.8.100.1.9': 'Для участия в электронных торгах и подписания государственного контракта в электронной площадке ОАО «ЕЭТП» уполномоченными лицами участников размещения государственного или муниципального заказа',
+ '1.2.643.5.1.24.2.1.3': 'Формирование документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',
+ '1.2.643.5.1.24.2.1.3.1': 'Формирование кадастровым инженером документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',
+ '1.2.643.5.1.24.2.2.2': 'Формирование документов как результата оказания услуги со стороны органов регистрации прав',
+ '1.2.643.5.1.24.2.2.3': 'Формирование документов для получения государственных услуг в сфере государственной регистрации прав на недвижимое имущество и сделок с ним со стороны заявителя',
+ '1.2.643.6.2.1.7.1': 'Использование единоличным исполнительным органом юридического лица или уполномоченными представителями юридического лица в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских и иных прав и обязанностей в сфере негосударственного пенсионного обеспечения, негосударственного пенсионного страхования, в сфере деятельности паевых инвестиционных фондов, акционерных инвестиционных фондов, профессиональных участников рынка ценных бумаг, а также связанной с обслуживанием указанной деятельности услуг кредитных и иных организаций',
+ '1.2.643.6.2.1.7.2': 'Использование физическим лицом в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских прав и обязанностей в отношении инвестиционных паев паевых инвестиционных фондов, в том числе отношения, связанные с учетом и/или фиксацией прав на инвестиционные паи паевых инвестиционных фондов',
+ '1.2.643.6.3': 'Использование в электронных торговых системах и в программном обеспечении, связанным с обменом электронных сообщений',
+ '1.2.643.6.3.1.1': 'Использование на электронных площадок отобранных для проведения аукционах в электронной форме',
+ '1.2.643.6.3.1.2.1': 'Тип участника - Юридическое лицо',
+ '1.2.643.6.3.1.2.2': 'Тип участника - Физическое лицо',
+ '1.2.643.6.3.1.2.3': 'Тип участника - Индивидуальный предприниматель',
+ '1.2.643.6.3.1.3.1': 'Участник размещения заказа',
+ '1.2.643.6.3.1.4.1': 'Администратор организации',
+ '1.2.643.6.3.1.4.2': 'Уполномоченный специалист',
+ '1.2.643.6.3.1.4.3': 'Специалист с правом подписи контракта',
+ '1.2.840.113549.1.9.2': 'Неструктурированное имя',
+ '1.3.6.1.4.1.24138.1.1.8.1': 'Обеспечение юридической значимости в Системе "Электронная Торговая Площадка"',
+ '1.3.6.1.4.1.29919.21': 'Использование в системе Портал государственных закупок Ростовской области "Рефери".',
+ '1.3.6.1.5.5.7.3.2': 'Проверка подлинности клиента',
+ '1.3.6.1.5.5.7.3.4': 'Защищенная электронная почта',
+ '1.3.643.3.8.100.15': 'Использование в ЭТП "uTender"',
+};
+
+
+/***/ }),
+
+/***/ "./constants/subject-tags-translations.ts":
+/*!************************************************!*\
+ !*** ./constants/subject-tags-translations.ts ***!
+ \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SUBJECT_TAGS_TRANSLATIONS = [
+ { possibleNames: ['UnstructuredName'], translation: 'Неструктурированное имя' },
+ { possibleNames: ['CN'], translation: 'Владелец' },
+ { possibleNames: ['SN'], translation: 'Фамилия' },
+ { possibleNames: ['G'], translation: 'Имя Отчество' },
+ { possibleNames: ['C'], translation: 'Страна' },
+ { possibleNames: ['S'], translation: 'Регион' },
+ { possibleNames: ['STREET'], translation: 'Адрес' },
+ { possibleNames: ['O'], translation: 'Компания' },
+ { possibleNames: ['OU'], translation: 'Отдел/подразделение' },
+ { possibleNames: ['T'], translation: 'Должность' },
+ { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },
+ { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },
+ { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },
+ { possibleNames: ['ИНН', 'INN', 'ИНН организации'], translation: 'ИНН' },
+ { possibleNames: ['E'], translation: 'Email' },
+ { possibleNames: ['L'], translation: 'Город' },
+];
+
+
+/***/ }),
+
+/***/ "./crypto-pro-js.ts":
+/*!**************************!*\
+ !*** ./crypto-pro-js.ts ***!
+ \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+}
+Object.defineProperty(exports, "__esModule", { value: true });
+__export(__webpack_require__(/*! ./api */ "./api/index.ts"));
+
+
+/***/ }),
+
+/***/ "./helpers/_afterPluginsLoaded.ts":
+/*!****************************************!*\
+ !*** ./helpers/_afterPluginsLoaded.ts ***!
+ \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ./_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+let isSetLogLevel = false;
+let isPluginLoaded = false;
+exports._afterPluginsLoaded = (fn) => {
+ const canPromise = Boolean(window.Promise);
+ return function (...args) {
+ return __awaiter(this, void 0, void 0, function* () {
+ if (!isPluginLoaded) {
+ try {
+ __webpack_require__(/*! ../vendor/cadesplugin_api */ "./vendor/cadesplugin_api.js");
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при подключении модуля для работы с Cades plugin');
+ }
+ isPluginLoaded = true;
+ }
+ const { cadesplugin } = window;
+ if (!canPromise) {
+ throw new Error('Необходим полифилл для Promise');
+ }
+ if (!cadesplugin) {
+ throw new Error('Не подключен модуль для работы с Cades plugin');
+ }
+ if (!isSetLogLevel) {
+ cadesplugin.set_log_level(cadesplugin.LOG_LEVEL_ERROR);
+ isSetLogLevel = true;
+ }
+ try {
+ yield cadesplugin;
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации модуля для работы с Cades plugin');
+ }
+ return yield fn.apply(this, args);
+ });
+ };
+};
+
+
+/***/ }),
+
+/***/ "./helpers/_extractCommonName.ts":
+/*!***************************************!*\
+ !*** ./helpers/_extractCommonName.ts ***!
+ \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+exports._extractCommonName = (subjectName) => { var _a, _b; return (_b = (_a = subjectName.match(/CN="?(.+?)"?(?:,|$)/)) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.replace(/"{2}/g, '"'); };
+
+
+/***/ }),
+
+/***/ "./helpers/_extractMeaningfulErrorMessage.ts":
+/*!***************************************************!*\
+ !*** ./helpers/_extractMeaningfulErrorMessage.ts ***!
+ \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+exports._extractMeaningfulErrorMessage = (error) => {
+ var _a;
+ let errorContainer = ((_a = window.cadesplugin) === null || _a === void 0 ? void 0 : _a.getLastError) && window.cadesplugin.getLastError(error);
+ if (!(errorContainer === null || errorContainer === void 0 ? void 0 : errorContainer.message)) {
+ if (!error.message) {
+ return null;
+ }
+ errorContainer = error;
+ }
+ const containsRussianLetters = /[а-яА-Я]/.test(errorContainer.message);
+ if (!containsRussianLetters) {
+ return null;
+ }
+ const searchResult = errorContainer.message.match(/^(.*?)(?:(?:\.?\s?\(?(0x[0-9a-zA-Z]{1,8})\)?)|(?:\.?$))/);
+ return searchResult ? searchResult[1] + (searchResult[2] ? ' (Код ошибки: ' + searchResult[2] + ')' : '') : null;
+};
+
+
+/***/ }),
+
+/***/ "./helpers/_generateCadesFn.ts":
+/*!*************************************!*\
+ !*** ./helpers/_generateCadesFn.ts ***!
+ \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+// синтетические переменные, которые подменяются в рантайме
+exports.__cadesAsyncToken__ = {};
+exports.__createCadesPluginObject__ = (...args) => ({});
+function getGeneratorConstructor() {
+ return new Function('', 'return Object.getPrototypeOf(function*(){}).constructor')();
+}
+exports._generateCadesFn = (callback) => {
+ var _a;
+ const { cadesplugin } = window;
+ const cadesGeneratorsAPI = Boolean(cadesplugin.CreateObjectAsync);
+ const callbackName = callback.name || 'dynamicFn';
+ const callbackLiteral = String(callback);
+ const callbackArguments = ((_a = callbackLiteral.match(/^function[\s\w]*?\((.*?)\)/)) === null || _a === void 0 ? void 0 : _a[1]) || '';
+ const callbackBody = callbackLiteral.replace(/^.*?{([\s\S]*?)}$/, '$1');
+ let crossEnvCallbackLiteral = String(new (cadesGeneratorsAPI ? getGeneratorConstructor() : Function)(callbackArguments, callbackBody));
+ crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/\w+?\.__createCadesPluginObject__(\([\s\S]*?\))/gm, `cadesplugin.CreateObject${cadesGeneratorsAPI ? 'Async' : ''}$1`);
+ crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/\w+?\.__cadesAsyncToken__\s*?\+\s*?\b/gm, cadesGeneratorsAPI ? 'yield ' : '');
+ if (!cadesGeneratorsAPI) {
+ crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/propset_(.*?)\((.*?)\)/gm, '$1 = $2');
+ }
+ return [
+ cadesGeneratorsAPI ? `cadesplugin.async_spawn(${crossEnvCallbackLiteral});` : `(${crossEnvCallbackLiteral})();`,
+ `//# sourceURL=crypto-pro_${callbackName}.js`,
+ ].join('');
+};
+
+
+/***/ }),
+
+/***/ "./helpers/_getCadesCert.ts":
+/*!**********************************!*\
+ !*** ./helpers/_getCadesCert.ts ***!
+ \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const _afterPluginsLoaded_1 = __webpack_require__(/*! ./_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts");
+const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ./_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts");
+const _generateCadesFn_1 = __webpack_require__(/*! ./_generateCadesFn */ "./helpers/_generateCadesFn.ts");
+/**
+ * Возвращает сертификат в формате Cades по отпечатку
+ *
+ * @param thumbprint - отпечаток сертификата
+ * @returns сертификат в формате Cades
+ */
+exports._getCadesCert = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint) => {
+ const { cadesplugin } = window;
+ return eval(_generateCadesFn_1._generateCadesFn(function _getCadesCert() {
+ let cadesStore;
+ try {
+ cadesStore = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.Store');
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');
+ }
+ if (!cadesStore) {
+ throw new Error('Не удалось получить доступ к хранилищу сертификатов');
+ }
+ try {
+ void (_generateCadesFn_1.__cadesAsyncToken__ +
+ cadesStore.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE, cadesplugin.CAPICOM_MY_STORE, cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED));
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');
+ }
+ let cadesCertificateList;
+ let certificatesCount;
+ try {
+ cadesCertificateList = _generateCadesFn_1.__cadesAsyncToken__ + cadesStore.Certificates;
+ certificatesCount = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificateList.Count;
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');
+ }
+ if (!certificatesCount) {
+ throw new Error('Нет доступных сертификатов');
+ }
+ let cadesCertificate;
+ try {
+ cadesCertificateList =
+ _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);
+ const count = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificateList.Count;
+ if (!count) {
+ throw new Error(`Сертификат с отпечатком: "${thumbprint}" не найден`);
+ }
+ cadesCertificate = _generateCadesFn_1.__cadesAsyncToken__ + cadesCertificateList.Item(1);
+ }
+ catch (error) {
+ console.error(error);
+ throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата');
+ }
+ cadesStore.Close();
+ return cadesCertificate;
+ }));
+});
+
+
+/***/ }),
+
+/***/ "./helpers/_getDateObj.ts":
+/*!********************************!*\
+ !*** ./helpers/_getDateObj.ts ***!
+ \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+/**
+ * Возвращает объект даты, совместимый с Cades plugin'ом, зависящий от браузера.
+ *
+ * В IE необходимо использовать специфичный формат "VT_DATE"
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Microsoft_Extensions/Date.getVarDate
+ */
+exports._getDateObj = (dateObj) => (dateObj.getVarDate ? dateObj.getVarDate() : dateObj);
+
+
+/***/ }),
+
+/***/ "./helpers/_isSupportedCSPVersion.ts":
+/*!*******************************************!*\
+ !*** ./helpers/_isSupportedCSPVersion.ts ***!
+ \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const oldestSupportedCSPVersion = 4.0;
+exports._isSupportedCSPVersion = (version) => {
+ var _a;
+ version = (_a = version.match(/\d+?\b(?:\.\d+)?/)) === null || _a === void 0 ? void 0 : _a[0];
+ return Number(version) >= oldestSupportedCSPVersion;
+};
+
+
+/***/ }),
+
+/***/ "./helpers/_isSupportedCadesVersion.ts":
+/*!*********************************************!*\
+ !*** ./helpers/_isSupportedCadesVersion.ts ***!
+ \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+exports._isSupportedCadesVersion = (version) => {
+ const match = version.match(/(\d+)\.(\d+)\.(\d+)/);
+ if (!match) {
+ return false;
+ }
+ const [, major, minor, patch] = match;
+ if (Number(major) < 2) {
+ return false;
+ }
+ if (Number(major) === 2 && Number(patch) < 12438) {
+ return false;
+ }
+ return true;
+};
+
+
+/***/ }),
+
+/***/ "./helpers/_parseCertInfo.ts":
+/*!***********************************!*\
+ !*** ./helpers/_parseCertInfo.ts ***!
+ \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const constants_1 = __webpack_require__(/*! ../constants */ "./constants/index.ts");
+/**
+ * Парсит информацию из строки с информацией о сертификате
+ *
+ * @param tagsTranslations - словарь с расшифровками тэгов
+ * @param rawInfo - данные для парсинга
+ * @returns расшифрованная информация по отдельным тэгам
+ */
+exports._parseCertInfo = (tagsTranslations, rawInfo) => {
+ const extractedEntities = rawInfo.match(/([а-яА-Яa-zA-Z0-9\s.]+)=(?:("[^"]+?")|(.+?))(?:,|$)/g);
+ if (extractedEntities) {
+ return extractedEntities.map((group) => {
+ var _a, _b, _c;
+ const segmentsMatch = group.trim().match(/^([а-яА-Яa-zA-Z0-9\s.]+)=(.+?),?$/);
+ let title = segmentsMatch === null || segmentsMatch === void 0 ? void 0 : segmentsMatch[1];
+ // Вырезаем лишние кавычки
+ const description = (_b = (_a = segmentsMatch === null || segmentsMatch === void 0 ? void 0 : segmentsMatch[2]) === null || _a === void 0 ? void 0 : _a.replace(/^"(.*)"/, '$1')) === null || _b === void 0 ? void 0 : _b.replace(/"{2}/g, '"');
+ const oidIdentifierMatch = title === null || title === void 0 ? void 0 : title.match(/^OID\.(.*)/);
+ const oidIdentifier = oidIdentifierMatch === null || oidIdentifierMatch === void 0 ? void 0 : oidIdentifierMatch[1];
+ let isTranslated = false;
+ // Если нашли в тайтле ОИД, пытаемся его расшифровать
+ if (oidIdentifier) {
+ const oidTranslation = constants_1.OIDS_DICTIONARY[oidIdentifier];
+ if (oidTranslation) {
+ title = oidTranslation;
+ isTranslated = true;
+ }
+ }
+ const tagTranslation = (_c = tagsTranslations.find((tag) => tag.possibleNames.find((name) => name === title))) === null || _c === void 0 ? void 0 : _c.translation;
+ if (tagTranslation) {
+ title = tagTranslation;
+ isTranslated = true;
+ }
+ return { description, title, isTranslated };
+ });
+ }
+};
+
+
+/***/ }),
+
+/***/ "./vendor/cadesplugin_api.js":
+/*!***********************************!*\
+ !*** ./vendor/cadesplugin_api.js ***!
+ \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+;(function () {
+ //already loaded
+ if(window.cadesplugin)
+ return;
+
+ var pluginObject;
+ var plugin_resolved = 0;
+ var plugin_reject;
+ var plugin_resolve;
+ var isOpera = 0;
+ var isFireFox = 0;
+ var isSafari = 0;
+ var isYandex = 0;
+ var canPromise = !!window.Promise;
+ var cadesplugin_loaded_event_recieved = false;
+ var cadesplugin;
+
+ if(canPromise)
+ {
+ cadesplugin = new Promise(function(resolve, reject)
+ {
+ plugin_resolve = resolve;
+ plugin_reject = reject;
+ });
+ } else
+ {
+ cadesplugin = {};
+ }
+
+ function check_browser() {
+ var ua= navigator.userAgent, tem, M= ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
+ if(/trident/i.test(M[1])){
+ tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
+ return { name:'IE', version:(tem[1] || '')};
+ }
+ if(M[1] === 'Chrome'){
+ tem = ua.match(/\b(OPR|Edg|YaBrowser)\/(\d+)/);
+ if (tem != null)
+ return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };
+ }
+ M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
+ if ((tem = ua.match(/version\/(\d+)/i)) != null)
+ M.splice(1, 1, tem[1]);
+ return {name:M[0],version:M[1]};
+ }
+ var browserSpecs = check_browser();
+
+ function cpcsp_console_log(level, msg){
+ //IE9 не может писать в консоль если не открыта вкладка developer tools
+ if(typeof(console) === 'undefined')
+ return;
+ if (level <= cadesplugin.current_log_level ){
+ if (level === cadesplugin.LOG_LEVEL_DEBUG)
+ console.log("DEBUG: %s", msg);
+ if (level === cadesplugin.LOG_LEVEL_INFO)
+ console.info("INFO: %s", msg);
+ if (level === cadesplugin.LOG_LEVEL_ERROR)
+ console.error("ERROR: %s", msg);
+ return;
+ }
+ }
+
+ function set_log_level(level){
+ if (!((level === cadesplugin.LOG_LEVEL_DEBUG) ||
+ (level === cadesplugin.LOG_LEVEL_INFO) ||
+ (level === cadesplugin.LOG_LEVEL_ERROR))){
+ cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "cadesplugin_api.js: Incorrect log_level: " + level);
+ return;
+ }
+ cadesplugin.current_log_level = level;
+ if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)
+ cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = DEBUG");
+ if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)
+ cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = INFO");
+ if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)
+ cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, "cadesplugin_api.js: log_level = ERROR");
+ if(isNativeMessageSupported())
+ {
+ if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)
+ window.postMessage("set_log_level=debug", "*");
+ if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)
+ window.postMessage("set_log_level=info", "*");
+ if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)
+ window.postMessage("set_log_level=error", "*");
+ }
+ }
+
+ function set_constantValues()
+ {
+ cadesplugin.CAPICOM_MEMORY_STORE = 0;
+ cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;
+ cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;
+ cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4;
+ cadesplugin.CADESCOM_MEMORY_STORE = 0;
+ cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;
+ cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;
+ cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4;
+ cadesplugin.CADESCOM_CONTAINER_STORE = 100;
+
+ cadesplugin.CAPICOM_MY_STORE = "My";
+
+ cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
+
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
+
+ cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;
+ cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;
+ cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;
+
+ cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010;
+ cadesplugin.CADESCOM_XADES_BES = 0x00000020;
+ cadesplugin.CADESCOM_XADES_T = 0x00000050;
+ cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0;
+ cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000;
+
+ cadesplugin.XmlDsigGost3410UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";
+ cadesplugin.XmlDsigGost3411UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
+ cadesplugin.XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411";
+ cadesplugin.XmlDsigGost3411Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411";
+
+ cadesplugin.XmlDsigGost3411Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256";
+ cadesplugin.XmlDsigGost3410Url2012256 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256";
+ cadesplugin.XmlDsigGost3411Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512";
+ cadesplugin.XmlDsigGost3410Url2012512 = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512";
+
+ cadesplugin.CADESCOM_CADES_DEFAULT = 0;
+ cadesplugin.CADESCOM_CADES_BES = 1;
+ cadesplugin.CADESCOM_CADES_T = 0x5;
+ cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;
+ cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff;
+
+ cadesplugin.CADESCOM_ENCODE_BASE64 = 0;
+ cadesplugin.CADESCOM_ENCODE_BINARY = 1;
+ cadesplugin.CADESCOM_ENCODE_ANY = -1;
+
+ cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;
+ cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;
+ cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;
+
+ cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;
+ cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;
+
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;
+ cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;
+
+ cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;
+
+ cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9;
+
+ cadesplugin.CAPICOM_OID_OTHER = 0;
+ cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;
+
+ cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2;
+ cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5;
+ cadesplugin.CAPICOM_EKU_OTHER = 0;
+
+ cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;
+ cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;
+ cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;
+ cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;
+ cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;
+ cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;
+ cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100;
+ cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1;
+
+ cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0;
+ cadesplugin.CADESCOM_BASE64_TO_BINARY = 1;
+
+ cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0;
+ cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1;
+ cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;
+
+ cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;
+ cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;
+ cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;
+ cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;
+ cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;
+ cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;
+
+ cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0;
+ cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1;
+ cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2;
+ cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3;
+ cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;
+ cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;
+ cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;
+ cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;
+ cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;
+ cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;
+ cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;
+ cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;
+ cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;
+
+ cadesplugin.LOG_LEVEL_DEBUG = 4;
+ cadesplugin.LOG_LEVEL_INFO = 2;
+ cadesplugin.LOG_LEVEL_ERROR = 1;
+
+ cadesplugin.CADESCOM_AllowNone = 0;
+ cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1;
+ cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2;
+ cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4;
+ cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000;
+ cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000;
+ cadesplugin.CADESCOM_UseContainerStore = 0x40000000;
+
+ cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01;
+ cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02;
+ cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04;
+ cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07;
+
+ cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00;
+ cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01;
+ cadesplugin.ENABLE_CARRIER_CREATE = 0x02;
+ cadesplugin.ENABLE_ANY_OPERATION = 0x03;
+
+ cadesplugin.CADESCOM_PRODUCT_CSP = 0;
+ cadesplugin.CADESCOM_PRODUCT_OCSP = 1;
+ cadesplugin.CADESCOM_PRODUCT_TSP = 2;
+
+ cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001;
+ cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002;
+ cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004;
+ cadesplugin.MEDIA_TYPE_SCARD = 0x00000008;
+
+ cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0;
+ cadesplugin.AT_KEYEXCHANGE = 1;
+ cadesplugin.AT_SIGNATURE = 2;
+ }
+
+ function async_spawn(generatorFunc) {
+ function continuer(verb, arg) {
+ var result;
+ try {
+ result = generator[verb](arg);
+ } catch (err) {
+ return Promise.reject(err);
+ }
+ if (result.done) {
+ return result.value;
+ } else {
+ return Promise.resolve(result.value).then(onFulfilled, onRejected);
+ }
+ }
+ var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));
+ var onFulfilled = continuer.bind(continuer, "next");
+ var onRejected = continuer.bind(continuer, "throw");
+ return onFulfilled();
+ }
+
+ function isIE() {
+ // var retVal = (("Microsoft Internet Explorer" == navigator.appName) || // IE < 11
+ // navigator.userAgent.match(/Trident\/./i)); // IE 11
+ return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE');
+ }
+
+ function isIOS() {
+ return (navigator.userAgent.match(/ipod/i) ||
+ navigator.userAgent.match(/ipad/i) ||
+ navigator.userAgent.match(/iphone/i));
+ }
+
+ function isNativeMessageSupported()
+ {
+ // В IE работаем через NPAPI
+ if(isIE())
+ return false;
+ // В Edge работаем через NativeMessage
+ if (browserSpecs.name === 'Edg') {
+ return true;
+ }
+ if (browserSpecs.name === 'YaBrowser') {
+ isYandex = true;
+ return true;
+ }
+ // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии
+ if(browserSpecs.name === 'Opera') {
+ isOpera = true;
+ if(browserSpecs.version >= 33){
+ return true;
+ }
+ else{
+ return false;
+ }
+ }
+ if(browserSpecs.name === 'Firefox') {
+ isFireFox = true;
+ if(browserSpecs.version >= 52){
+ return true;
+ }
+ else{
+ return false;
+ }
+ }
+ if(browserSpecs.name === 'Chrome') {
+ if(browserSpecs.version >= 42){
+ return true;
+ }
+ else{
+ return false;
+ }
+ }
+ //В Сафари начиная с 12 версии нет NPAPI
+ if(browserSpecs.name === 'Safari') {
+ isSafari = true;
+ if(browserSpecs.version >= 12) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
+
+ // Функция активации объектов КриптоПро ЭЦП Browser plug-in
+ function CreateObject(name) {
+ if (isIOS()) {
+ // На iOS для создания объектов используется функция
+ // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js
+ return call_ru_cryptopro_npcades_10_native_bridge("CreateObject", [name]);
+ }
+ if (isIE()) {
+ // В Internet Explorer создаются COM-объекты
+ if (name.match(/X509Enrollment/i)) {
+ try {
+ // Объекты CertEnroll пробуем создавать через нашу фабрику,
+ // если не получилось то через CX509EnrollmentWebClassFactory
+ var objCertEnrollClassFactory = document.getElementById("webClassFactory");
+ return objCertEnrollClassFactory.CreateObject(name);
+ }
+ catch (e) {
+ try {
+ var objWebClassFactory = document.getElementById("certEnrollClassFactory");
+ return objWebClassFactory.CreateObject(name);
+ }
+ catch (err) {
+ throw ("Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS");
+ }
+ }
+ }
+ // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory
+ try {
+ var objWebClassFactory = document.getElementById("webClassFactory");
+ return objWebClassFactory.CreateObject(name);
+ }
+ catch (e) {
+ // Для версий плагина ниже 2.0.12538
+ return new ActiveXObject(name);
+ }
+ }
+ // создаются объекты NPAPI
+ return pluginObject.CreateObject(name);
+ }
+
+ function decimalToHexString(number) {
+ if (number < 0) {
+ number = 0xFFFFFFFF + number + 1;
+ }
+
+ return number.toString(16).toUpperCase();
+ }
+
+ function GetMessageFromException(e) {
+ var err = e.message;
+ if (!err) {
+ err = e;
+ } else if (e.number) {
+ err += " (0x" + decimalToHexString(e.number) + ")";
+ }
+ return err;
+ }
+
+ function getLastError(exception) {
+ if(isNativeMessageSupported() || isIE() || isIOS() ) {
+ return GetMessageFromException(exception);
+ }
+
+ try {
+ return pluginObject.getLastError();
+ } catch(e) {
+ return GetMessageFromException(exception);
+ }
+ }
+
+ // Функция для удаления созданных объектов
+ function ReleasePluginObjects() {
+ return cpcsp_chrome_nmcades.ReleasePluginObjects();
+ }
+
+ // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in
+ function CreateObjectAsync(name) {
+ return pluginObject.CreateObjectAsync(name);
+ }
+
+ //Функции для IOS
+ var ru_cryptopro_npcades_10_native_bridge = {
+ callbacksCount : 1,
+ callbacks : {},
+
+ // Automatically called by native layer when a result is available
+ resultForCallback : function resultForCallback(callbackId, resultArray) {
+ var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId];
+ if (!callback) return;
+ callback.apply(null,resultArray);
+ },
+
+ // Use this in javascript to request native objective-c code
+ // functionName : string (I think the name is explicit :p)
+ // args : array of arguments
+ // callback : function with n-arguments that is going to be called when the native code returned
+ call : function call(functionName, args, callback) {
+ var hasCallback = callback && typeof callback === "function";
+ var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0;
+
+ if (hasCallback)
+ ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback;
+
+ var iframe = document.createElement("IFRAME");
+ var arrObjs = new Array("_CPNP_handle");
+ try{
+ iframe.setAttribute("src", "cpnp-js-call:" + functionName + ":" + callbackId+ ":" + encodeURIComponent(JSON.stringify(args, arrObjs)));
+ } catch(e){
+ alert(e);
+ }
+ document.documentElement.appendChild(iframe);
+ iframe.parentNode.removeChild(iframe);
+ iframe = null;
+ }
+ };
+
+ function call_ru_cryptopro_npcades_10_native_bridge(functionName, array){
+ var tmpobj;
+ var ex;
+ ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function(e, response){
+ ex = e;
+ var str='tmpobj='+response;
+ eval(str);
+ if (typeof (tmpobj) === "string"){
+ tmpobj = tmpobj.replace(/\\\n/gm, "\n");
+ tmpobj = tmpobj.replace(/\\\r/gm, "\r");
+ }
+ });
+ if(ex)
+ throw ex;
+ return tmpobj;
+ }
+
+ function show_firefox_missing_extension_dialog()
+ {
+ if (!window.cadesplugin_skip_extension_install)
+ {
+ var ovr = document.createElement('div');
+ ovr.id = "cadesplugin_ovr";
+ ovr.style = "visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)";
+ ovr.innerHTML = "
" +
+ "" +
+ "
Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его." +
+ "
";
+ document.getElementsByTagName("Body")[0].appendChild(ovr);
+ document.getElementById("cadesplugin_close_install").addEventListener('click',function()
+ {
+ plugin_loaded_error("Плагин недоступен");
+ document.getElementById("cadesplugin_ovr").style.visibility = 'hidden';
+ });
+
+ ovr.addEventListener('click',function()
+ {
+ plugin_loaded_error("Плагин недоступен");
+ document.getElementById("cadesplugin_ovr").style.visibility = 'hidden';
+ });
+ ovr.style.visibility="visible";
+ }
+ }
+ function firefox_or_safari_nmcades_onload() {
+ cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);
+ }
+
+ function nmcades_api_onload () {
+ window.postMessage("cadesplugin_echo_request", "*");
+ window.addEventListener("message", function (event){
+ if (typeof(event.data) !== "string" || !event.data.match("cadesplugin_loaded"))
+ return;
+ if (cadesplugin_loaded_event_recieved)
+ return;
+ if(isFireFox || isSafari)
+ {
+ // Для Firefox, Сафари вместе с сообщением cadesplugin_loaded прилетает url для загрузки nmcades_plugin_api.js
+ var url = event.data.substring(event.data.indexOf("url:") + 4);
+ if (!url.match("^moz-extension://[a-zA-Z0-9-]+/nmcades_plugin_api.js$")
+ && !url.match("^safari-extension://[a-zA-Z0-9-]+/[a-zA-Z0-9]+/nmcades_plugin_api.js$"))
+ {
+ cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, "Bad url \"" + url + "\" for load CryptoPro Extension for CAdES Browser plug-in");
+ plugin_loaded_error();
+ return;
+ }
+ var fileref = document.createElement('script');
+ fileref.setAttribute("type", "text/javascript");
+ fileref.setAttribute("src", url);
+ fileref.onerror = plugin_loaded_error;
+ fileref.onload = firefox_or_safari_nmcades_onload;
+ document.getElementsByTagName("head")[0].appendChild(fileref);
+ }else {
+ cpcsp_chrome_nmcades.check_chrome_plugin(plugin_loaded, plugin_loaded_error);
+ }
+ cadesplugin_loaded_event_recieved = true;
+ }, false);
+ }
+
+ //Загружаем расширения для Chrome, Opera, YaBrowser, FireFox, Edge, Safari
+ function load_extension()
+ {
+ if(isFireFox || isSafari){
+ // вызываем callback руками т.к. нам нужно узнать ID расширения. Он уникальный для браузера.
+ nmcades_api_onload();
+ } else {
+ // в асинхронном варианте для Yandex и Opera подключаем расширение из Opera store.
+ if (isOpera || isYandex) {
+ var fileref = document.createElement('script');
+ fileref.setAttribute("type", "text/javascript");
+ fileref.setAttribute("src", "chrome-extension://epebfcehmdedogndhlcacafjaacknbcm/nmcades_plugin_api.js");
+ fileref.onerror = plugin_loaded_error;
+ fileref.onload = nmcades_api_onload;
+ document.getElementsByTagName("head")[0].appendChild(fileref);
+ } else {
+ // для Chrome, Chromium, Chromium Edge расширение из Chrome store
+ var fileref = document.createElement('script');
+ fileref.setAttribute("type", "text/javascript");
+ fileref.setAttribute("src", "chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/nmcades_plugin_api.js");
+ fileref.onerror = plugin_loaded_error;
+ fileref.onload = nmcades_api_onload;
+ document.getElementsByTagName("head")[0].appendChild(fileref);
+ }
+ }
+ }
+
+ //Загружаем плагин для NPAPI
+ function load_npapi_plugin()
+ {
+ var elem = document.createElement('object');
+ elem.setAttribute("id", "cadesplugin_object");
+ elem.setAttribute("type", "application/x-cades");
+ elem.setAttribute("style", "visibility: hidden");
+ document.getElementsByTagName("body")[0].appendChild(elem);
+ pluginObject = document.getElementById("cadesplugin_object");
+ if(isIE())
+ {
+ var elem1 = document.createElement('object');
+ elem1.setAttribute("id", "certEnrollClassFactory");
+ elem1.setAttribute("classid", "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09");
+ elem1.setAttribute("style", "visibility: hidden");
+ document.getElementsByTagName("body")[0].appendChild(elem1);
+ var elem2 = document.createElement('object');
+ elem2.setAttribute("id", "webClassFactory");
+ elem2.setAttribute("classid", "clsid:B04C8637-10BD-484E-B0DA-B8A039F60024");
+ elem2.setAttribute("style", "visibility: hidden");
+ document.getElementsByTagName("body")[0].appendChild(elem2);
+ }
+ }
+
+ //Отправляем событие что все ок.
+ function plugin_loaded()
+ {
+ plugin_resolved = 1;
+ if(canPromise)
+ {
+ plugin_resolve();
+ }else {
+ window.postMessage("cadesplugin_loaded", "*");
+ }
+ }
+
+ //Отправляем событие что сломались.
+ function plugin_loaded_error(msg)
+ {
+ if(typeof(msg) === 'undefined' || typeof(msg) === 'object')
+ msg = "Плагин недоступен";
+ plugin_resolved = 1;
+ if(canPromise)
+ {
+ plugin_reject(msg);
+ } else {
+ window.postMessage("cadesplugin_load_error", "*");
+ }
+ }
+
+ //проверяем что у нас хоть какое то событие ушло, и если не уходило кидаем еще раз ошибку
+ function check_load_timeout()
+ {
+ if(plugin_resolved === 1)
+ return;
+ if(isFireFox)
+ {
+ show_firefox_missing_extension_dialog();
+ }
+ plugin_resolved = 1;
+ if(canPromise)
+ {
+ plugin_reject("Истекло время ожидания загрузки плагина");
+ } else {
+ window.postMessage("cadesplugin_load_error", "*");
+ }
+
+ }
+
+ //Вспомогательная функция для NPAPI
+ function createPromise(arg)
+ {
+ return new Promise(arg);
+ }
+
+ function check_npapi_plugin (){
+ try {
+ var oAbout = CreateObject("CAdESCOM.About");
+ plugin_loaded();
+ }
+ catch (err) {
+ document.getElementById("cadesplugin_object").style.display = 'none';
+ // Объект создать не удалось, проверим, установлен ли
+ // вообще плагин. Такая возможность есть не во всех браузерах
+ var mimetype = navigator.mimeTypes["application/x-cades"];
+ if (mimetype) {
+ var plugin = mimetype.enabledPlugin;
+ if (plugin) {
+ plugin_loaded_error("Плагин загружен, но не создаются обьекты");
+ }else
+ {
+ plugin_loaded_error("Ошибка при загрузке плагина");
+ }
+ }else
+ {
+ plugin_loaded_error("Плагин недоступен");
+ }
+ }
+ }
+
+ //Проверяем работает ли плагин
+ function check_plugin_working()
+ {
+ var div = document.createElement("div");
+ div.innerHTML = "";
+ var isIeLessThan9 = (div.getElementsByTagName("i").length === 1);
+ if (isIeLessThan9) {
+ plugin_loaded_error("Internet Explorer версии 8 и ниже не поддерживается");
+ return;
+ }
+
+ if(isNativeMessageSupported())
+ {
+ load_extension();
+ }else if(!canPromise) {
+ window.addEventListener("message", function (event){
+ if (event.data !== "cadesplugin_echo_request")
+ return;
+ load_npapi_plugin();
+ check_npapi_plugin();
+ },
+ false);
+ }else
+ {
+ if(document.readyState === "complete"){
+ load_npapi_plugin();
+ check_npapi_plugin();
+ } else {
+ window.addEventListener("load", function (event) {
+ load_npapi_plugin();
+ check_npapi_plugin();
+ }, false);
+ }
+ }
+ }
+
+ function set_pluginObject(obj)
+ {
+ pluginObject = obj;
+ }
+
+ function is_capilite_enabled()
+ {
+ if ((typeof (cadesplugin.EnableInternalCSP) !== 'undefined') && cadesplugin.EnableInternalCSP)
+ return true;
+ return false;
+ };
+
+ //Export
+ cadesplugin.JSModuleVersion = "2.3.1";
+ cadesplugin.async_spawn = async_spawn;
+ cadesplugin.set = set_pluginObject;
+ cadesplugin.set_log_level = set_log_level;
+ cadesplugin.getLastError = getLastError;
+ cadesplugin.is_capilite_enabled = is_capilite_enabled;
+
+ if(isNativeMessageSupported())
+ {
+ cadesplugin.CreateObjectAsync = CreateObjectAsync;
+ cadesplugin.ReleasePluginObjects = ReleasePluginObjects;
+ }
+
+ if(!isNativeMessageSupported())
+ {
+ cadesplugin.CreateObject = CreateObject;
+ }
+
+ if(window.cadesplugin_load_timeout)
+ {
+ setTimeout(check_load_timeout, window.cadesplugin_load_timeout);
+ }
+ else
+ {
+ setTimeout(check_load_timeout, 20000);
+ }
+
+ set_constantValues();
+
+ cadesplugin.current_log_level = cadesplugin.LOG_LEVEL_ERROR;
+ window.cadesplugin = cadesplugin;
+ check_plugin_working();
+}());
+
+
+/***/ })
+
+/******/ });
+});
+//# sourceMappingURL=crypto-pro-js.js.map
\ No newline at end of file
diff --git a/lib/crypto-pro-js.js.map b/lib/crypto-pro-js.js.map
new file mode 100644
index 0000000..7ea7bb5
--- /dev/null
+++ b/lib/crypto-pro-js.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://cryptoPro/webpack/universalModuleDefinition","webpack://cryptoPro/webpack/bootstrap","webpack://cryptoPro/../node_modules/base64-js/index.js","webpack://cryptoPro/../node_modules/buffer/index.js","webpack://cryptoPro/../node_modules/buffer/node_modules/isarray/index.js","webpack://cryptoPro/../node_modules/ieee754/index.js","webpack://cryptoPro/../node_modules/webpack/buildin/global.js","webpack://cryptoPro/./api/addAttachedSignature.ts","webpack://cryptoPro/./api/addDetachedSignature.ts","webpack://cryptoPro/./api/certificate/certificate.ts","webpack://cryptoPro/./api/certificate/exportBase64.ts","webpack://cryptoPro/./api/certificate/getAlgorithm.ts","webpack://cryptoPro/./api/certificate/getCadesProp.ts","webpack://cryptoPro/./api/certificate/getDecodedExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/getInfo.ts","webpack://cryptoPro/./api/certificate/hasExtendedKeyUsage.ts","webpack://cryptoPro/./api/certificate/index.ts","webpack://cryptoPro/./api/certificate/isValid.ts","webpack://cryptoPro/./api/createAttachedSignature.ts","webpack://cryptoPro/./api/createDetachedSignature.ts","webpack://cryptoPro/./api/createHash.ts","webpack://cryptoPro/./api/createXMLSignature.ts","webpack://cryptoPro/./api/getAllContainerCertificates.ts","webpack://cryptoPro/./api/getAllUserCertificates.ts","webpack://cryptoPro/./api/getCertificate.ts","webpack://cryptoPro/./api/getContainerCertificates.ts","webpack://cryptoPro/./api/getCspVersion.ts","webpack://cryptoPro/./api/getPluginVersion.ts","webpack://cryptoPro/./api/getSystemInfo.ts","webpack://cryptoPro/./api/getUserCertificates.ts","webpack://cryptoPro/./api/index.ts","webpack://cryptoPro/./api/isValidSystemSetup.ts","webpack://cryptoPro/./constants/cades-constants.ts","webpack://cryptoPro/./constants/index.ts","webpack://cryptoPro/./constants/issuer-tags-translations.ts","webpack://cryptoPro/./constants/oids-dictionary.ts","webpack://cryptoPro/./constants/subject-tags-translations.ts","webpack://cryptoPro/./crypto-pro-js.ts","webpack://cryptoPro/./helpers/_afterPluginsLoaded.ts","webpack://cryptoPro/./helpers/_extractCommonName.ts","webpack://cryptoPro/./helpers/_extractMeaningfulErrorMessage.ts","webpack://cryptoPro/./helpers/_generateCadesFn.ts","webpack://cryptoPro/./helpers/_getCadesCert.ts","webpack://cryptoPro/./helpers/_getDateObj.ts","webpack://cryptoPro/./helpers/_isSupportedCSPVersion.ts","webpack://cryptoPro/./helpers/_isSupportedCadesVersion.ts","webpack://cryptoPro/./helpers/_parseCertInfo.ts","webpack://cryptoPro/./vendor/cadesplugin_api.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,qDAAW;AAChC,cAAc,mBAAO,CAAC,iDAAS;AAC/B,cAAc,mBAAO,CAAC,qEAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5vDA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;;;;;ACpFA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;ACnBA,oFAA6E;AAC7E,4HAAqE;AACrE,6JAA2F;AAC3F,mHAAiH;AACjH,0GAAyD;AACzD,oGAAqD;AAErD;;;;;;GAMG;AACU,4BAAoB,GAAG,yCAAmB,CACrD,CAAO,UAAkB,EAAE,aAAmC,EAAmB,EAAE;IACjF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAC/B,MAAM,gBAAgB,GAAG,MAAM,6BAAa,CAAC,UAA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A;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB,WAAW,UAAU,YAAY,aAAa;AACrG,+EAA+E,aAAa,mBAAmB,uBAAuB,uBAAuB,cAAc,mBAAmB,YAAY;AAC1M,oEAAoE,iBAAiB,yBAAyB,WAAW;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC","file":"crypto-pro-js.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 = \"./crypto-pro-js.ts\");\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\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 toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","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","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\nimport { _getDateObj } from '../helpers/_getDateObj';\r\n\r\n/**\r\n * Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param signedMessage - подписанное сообщение\r\n * @returns подпись в формате PKCS#7\r\n */\r\nexport const addAttachedSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, signedMessage: string | ArrayBuffer): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function addAttachedSignature(): string {\r\n let cadesAttrs;\r\n let cadesSignedData;\r\n let cadesSigner;\r\n\r\n try {\r\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\r\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n const currentTime = _getDateObj(new Date());\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\r\n }\r\n\r\n let messageBase64;\r\n\r\n try {\r\n messageBase64 = Buffer.from(signedMessage).toString('base64');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error('Ошибка при преобразовании сообщения в Base64');\r\n }\r\n\r\n let cadesAuthAttrs;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\r\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\r\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\r\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSignedData.VerifyCades(signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE));\r\n signature = __cadesAsyncToken__ + cadesSignedData.CoSignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\nimport { _getDateObj } from '../helpers/_getDateObj';\r\n\r\n/**\r\n * Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param signedMessage - подписанное сообщение\r\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\r\n * @returns подпись в формате PKCS#7\r\n */\r\nexport const addDetachedSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, signedMessage: string | ArrayBuffer, messageHash: string): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function addDetachedSignature(): string {\r\n let cadesAttrs;\r\n let cadesHashedData;\r\n let cadesSignedData;\r\n let cadesSigner;\r\n\r\n try {\r\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\r\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\r\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n const currentTime = _getDateObj(new Date());\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\r\n }\r\n\r\n let cadesAuthAttrs;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\r\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\r\n );\r\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesSignedData.VerifyHash(cadesHashedData, signedMessage, cadesplugin.CADESCOM_PKCS7_TYPE)\r\n );\r\n signature =\r\n __cadesAsyncToken__ +\r\n cadesSignedData.CoSignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { ISSUER_TAGS_TRANSLATIONS, SUBJECT_TAGS_TRANSLATIONS } from '../../constants';\r\nimport { TagTranslation } from '../../helpers/_parseCertInfo';\r\nimport { exportBase64 } from './exportBase64';\r\nimport { getAlgorithm } from './getAlgorithm';\r\nimport { getCadesProp } from './getCadesProp';\r\nimport { getDecodedExtendedKeyUsage, ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';\r\nimport { getExtendedKeyUsage } from './getExtendedKeyUsage';\r\nimport { getInfo } from './getInfo';\r\nimport { hasExtendedKeyUsage } from './hasExtendedKeyUsage';\r\nimport { isValid } from './isValid';\r\n\r\nexport type CadesCertificate = any;\r\n\r\nexport class Certificate {\r\n constructor(\r\n public _cadesCertificate: CadesCertificate,\r\n public name: string,\r\n public issuerName: string,\r\n public subjectName: string,\r\n public thumbprint: string,\r\n public validFrom: string,\r\n public validTo: string,\r\n ) {}\r\n\r\n public getOwnerInfo(): Promise {\r\n return getInfo.call(this, SUBJECT_TAGS_TRANSLATIONS, 'SubjectName');\r\n }\r\n\r\n public getIssuerInfo(): Promise {\r\n return getInfo.call(this, ISSUER_TAGS_TRANSLATIONS, 'IssuerName');\r\n }\r\n\r\n public getExtendedKeyUsage(): Promise {\r\n return getExtendedKeyUsage.call(this);\r\n }\r\n\r\n public getDecodedExtendedKeyUsage(): Promise {\r\n return getDecodedExtendedKeyUsage.call(this);\r\n }\r\n\r\n public getAlgorithm(): Promise {\r\n return getAlgorithm.call(this);\r\n }\r\n\r\n public getCadesProp(propName): Promise {\r\n return getCadesProp.call(this, propName);\r\n }\r\n\r\n public isValid(): Promise {\r\n return isValid.call(this);\r\n }\r\n\r\n public exportBase64(): Promise {\r\n return exportBase64.call(this);\r\n }\r\n\r\n public hasExtendedKeyUsage(oids): Promise {\r\n return hasExtendedKeyUsage.call(this, oids);\r\n }\r\n}\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Экспортирует сертификат в формате base64\r\n *\r\n * @returns сертификат в формате base64\r\n */\r\nexport const exportBase64 = _afterPluginsLoaded(function (): string {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function exportBase64(): string {\r\n let base64: string;\r\n\r\n try {\r\n base64 = __cadesAsyncToken__ + cadesCertificate.Export(0);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при экспорте сертификата');\r\n }\r\n\r\n return base64;\r\n }),\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\ninterface AlgorithmInfo {\r\n algorithm: string;\r\n oid: string;\r\n}\r\n\r\n/**\r\n * Возвращает информацию об алгоритме сертификата\r\n *\r\n * @returns информацию об алгоритме и его OID'е\r\n */\r\nexport const getAlgorithm = _afterPluginsLoaded(function (): AlgorithmInfo {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function getAlgorithm(): AlgorithmInfo {\r\n const algorithmInfo: AlgorithmInfo = {\r\n algorithm: null,\r\n oid: null,\r\n };\r\n let cadesPublicKey;\r\n\r\n try {\r\n cadesPublicKey = __cadesAsyncToken__ + cadesCertificate.PublicKey();\r\n cadesPublicKey = __cadesAsyncToken__ + cadesPublicKey.Algorithm;\r\n algorithmInfo.algorithm = __cadesAsyncToken__ + cadesPublicKey.FriendlyName;\r\n algorithmInfo.oid = __cadesAsyncToken__ + cadesPublicKey.Value;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении алгоритма');\r\n }\r\n\r\n return algorithmInfo;\r\n }),\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Возвращает указанное внутренее свойство у сертификата в формате Cades\r\n *\r\n * @param propName = наименование свойства\r\n * @returns значение запрошенного свойства\r\n */\r\nexport const getCadesProp = _afterPluginsLoaded(function (propName: string): any {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function getCadesProp() {\r\n let propertyValue;\r\n\r\n try {\r\n propertyValue = __cadesAsyncToken__ + cadesCertificate[propName];\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при обращении к свойству сертификата');\r\n }\r\n\r\n return propertyValue;\r\n }),\r\n );\r\n});\r\n","import { OIDS_DICTIONARY } from '../../constants';\r\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { Certificate } from './certificate';\r\n\r\nexport interface ExtendedKeysTranslations {\r\n [key: string]: string | null;\r\n}\r\n\r\n/**\r\n * Возвращает расшифрованные ОИД'ы сертификата\r\n *\r\n * @returns словарь расшифрованных ОИД'ов\r\n */\r\nexport const getDecodedExtendedKeyUsage = _afterPluginsLoaded(async function (): Promise {\r\n const certificateOids = await (this as Certificate).getExtendedKeyUsage();\r\n\r\n return certificateOids.reduce(\r\n (decodedOids, oidCode) => ({\r\n ...decodedOids,\r\n [oidCode]: OIDS_DICTIONARY[oidCode] || null,\r\n }),\r\n {},\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Возвращает ОИД'ы сертификата\r\n *\r\n * @returns список ОИД'ов\r\n */\r\nexport const getExtendedKeyUsage = _afterPluginsLoaded(function (): string[] {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function getExtendedKeyUsage(): string[] {\r\n const OIDS: string[] = [];\r\n let count: any;\r\n\r\n try {\r\n count = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\r\n count = __cadesAsyncToken__ + count.EKUs;\r\n count = __cadesAsyncToken__ + count.Count;\r\n\r\n if (count > 0) {\r\n while (count > 0) {\r\n let cadesExtendedKeyUsage;\r\n\r\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesCertificate.ExtendedKeyUsage();\r\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.EKUs;\r\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.Item(count);\r\n cadesExtendedKeyUsage = __cadesAsyncToken__ + cadesExtendedKeyUsage.OID;\r\n\r\n OIDS.push(cadesExtendedKeyUsage);\r\n\r\n count--;\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || \"Ошибка при получении ОИД'ов\");\r\n }\r\n\r\n return OIDS;\r\n }),\r\n );\r\n});\r\n","import { TagsTranslations } from '../../constants/tags-translations';\r\nimport { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { _parseCertInfo, TagTranslation } from '../../helpers/_parseCertInfo';\r\nimport { getCadesProp } from './getCadesProp';\r\n\r\n/**\r\n * Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам\r\n *\r\n * @param tags = словарь\r\n * @param entitiesPath = путь к разбираемой сущности\r\n * @returns расшифрованная информация по отдельным тэгам\r\n */\r\nexport const getInfo = _afterPluginsLoaded(async function (\r\n tags: TagsTranslations[],\r\n entitiesPath: string,\r\n): Promise {\r\n let entities: string;\r\n\r\n try {\r\n entities = await getCadesProp.call(this, entitiesPath);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при извлечении информации из сертификата');\r\n }\r\n\r\n return _parseCertInfo(tags, entities);\r\n});\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Проверяет наличие ОИД'а (ОИД'ов) у сертификата\r\n *\r\n * @param oids - ОИД'ы для проверки\r\n * @returns флаг наличия ОИД'ов у сертификата\r\n */\r\nexport const hasExtendedKeyUsage = _afterPluginsLoaded(async function (oids: string | string[]): Promise {\r\n const certOids = await (this as Certificate).getExtendedKeyUsage();\r\n\r\n let result: boolean;\r\n\r\n if (Array.isArray(oids)) {\r\n result = oids.every((oidToCheck) => certOids.some((certOid) => certOid === oidToCheck));\r\n } else {\r\n result = certOids.some((certOid) => certOid === oids);\r\n }\r\n\r\n return result;\r\n});\r\n","export * from './certificate';\r\n","import { _afterPluginsLoaded } from '../../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, _generateCadesFn } from '../../helpers/_generateCadesFn';\r\nimport { Certificate } from './certificate';\r\n\r\n/**\r\n * Проверяет действительность сертификата\r\n *\r\n * @returns флаг валидности\r\n */\r\nexport const isValid = _afterPluginsLoaded(function (): boolean {\r\n const cadesCertificate = (this as Certificate)._cadesCertificate;\r\n\r\n return eval(\r\n _generateCadesFn(function isValid() {\r\n let isValid;\r\n\r\n try {\r\n isValid = __cadesAsyncToken__ + cadesCertificate.IsValid();\r\n isValid = __cadesAsyncToken__ + isValid.Result;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при проверке сертификата');\r\n }\r\n\r\n return Boolean(isValid);\r\n }),\r\n );\r\n});\r\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\nimport { _getDateObj } from '../helpers/_getDateObj';\r\n\r\n/**\r\n * Создает присоединенную подпись сообщения по отпечатку сертификата\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param message - подписываемое сообщение\r\n * @returns подпись в формате PKCS#7\r\n */\r\nexport const createAttachedSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, unencryptedMessage: string | ArrayBuffer): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function createAttachedSignature(): string {\r\n let cadesAttrs;\r\n let cadesSignedData;\r\n let cadesSigner;\r\n\r\n try {\r\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\r\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n const currentTime = _getDateObj(new Date());\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\r\n }\r\n\r\n let messageBase64;\r\n\r\n try {\r\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error('Ошибка при преобразовании сообщения в Base64');\r\n }\r\n\r\n let cadesAuthAttrs;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\r\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\r\n void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\r\n void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n signature = __cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\nimport { _getDateObj } from '../helpers/_getDateObj';\r\n\r\n/**\r\n * Создает отсоединенную подпись хеша по отпечатку сертификата\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит\r\n * @returns подпись в формате PKCS#7\r\n */\r\nexport const createDetachedSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, messageHash: string): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function createDetachedSignature(): string {\r\n let cadesAttrs;\r\n let cadesHashedData;\r\n let cadesSignedData;\r\n let cadesSigner;\r\n\r\n try {\r\n cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute');\r\n cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\r\n cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData');\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n const currentTime = _getDateObj(new Date());\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));\r\n void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи');\r\n }\r\n\r\n let cadesAuthAttrs;\r\n\r\n try {\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2;\r\n void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\r\n );\r\n void (__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n signature =\r\n __cadesAsyncToken__ +\r\n cadesSignedData.SignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\n/**\r\n * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит\r\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)\r\n *\r\n * @param unencryptedMessage - сообщение для хеширования\r\n *\r\n * @returns хеш\r\n */\r\nexport const createHash = _afterPluginsLoaded(\r\n async (unencryptedMessage: string | ArrayBuffer): Promise => {\r\n const { cadesplugin } = window;\r\n\r\n return eval(\r\n _generateCadesFn(function createHash(): string {\r\n const cadesHashedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.HashedData');\r\n let messageBase64;\r\n let hash;\r\n\r\n try {\r\n messageBase64 = Buffer.from(unencryptedMessage).toString('base64');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error('Ошибка при преобразовании сообщения в Base64');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)\r\n );\r\n void (__cadesAsyncToken__ + cadesHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY));\r\n void (__cadesAsyncToken__ + cadesHashedData.Hash(messageBase64));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации хэширования');\r\n }\r\n\r\n try {\r\n hash = __cadesAsyncToken__ + cadesHashedData.Value;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при создании хэша');\r\n }\r\n\r\n return hash;\r\n }),\r\n );\r\n },\r\n);\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _getCadesCert } from '../helpers/_getCadesCert';\r\n\r\n/**\r\n * Создает XML подпись для документа в формате XML\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @param unencryptedMessage - подписываемое сообщение в формате XML\r\n * @returns подпись\r\n */\r\nexport const createXMLSignature = _afterPluginsLoaded(\r\n async (thumbprint: string, unencryptedMessage: string): Promise => {\r\n const { cadesplugin } = window;\r\n const cadesCertificate = await _getCadesCert(thumbprint);\r\n\r\n return eval(\r\n _generateCadesFn(function createXMLSignature(): string {\r\n let cadesSigner;\r\n let cadesSignedXML;\r\n\r\n try {\r\n cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner');\r\n cadesSignedXML = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.SignedXML');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи');\r\n }\r\n\r\n try {\r\n const signatureMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\r\n const digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\r\n\r\n void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate));\r\n void (__cadesAsyncToken__ + cadesSigner.propset_CheckCertificate(true));\r\n void (__cadesAsyncToken__ + cadesSignedXML.propset_Content(unencryptedMessage));\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED)\r\n );\r\n void (__cadesAsyncToken__ + cadesSignedXML.propset_SignatureMethod(signatureMethod));\r\n void (__cadesAsyncToken__ + cadesSignedXML.propset_DigestMethod(digestMethod));\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи');\r\n }\r\n\r\n let signature: string;\r\n\r\n try {\r\n signature = __cadesAsyncToken__ + cadesSignedXML.Sign(cadesSigner);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных');\r\n }\r\n\r\n return signature;\r\n }),\r\n );\r\n },\r\n);\r\n","import { CadesCertificate, Certificate } from './certificate';\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 * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getAllContainerCertificates = _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 getAllContainerCertificates(): 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.CADESCOM_CONTAINER_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 cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\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","import { CadesCertificate, Certificate } from './certificate';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractCommonName } from '../helpers/_extractCommonName';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\nlet certificatesCache: Certificate[];\r\n\r\n/**\r\n * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа\r\n *\r\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\r\n * @returns список сертификатов\r\n */\r\nexport const getAllUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\r\n const { cadesplugin } = window;\r\n\r\n if (!resetCache && certificatesCache) {\r\n return certificatesCache;\r\n }\r\n\r\n return eval(\r\n _generateCadesFn(function getAllUserCertificates(): Certificate[] {\r\n let cadesStore;\r\n\r\n try {\r\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesStore.Open(\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\r\n cadesplugin.CAPICOM_MY_STORE,\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\r\n )\r\n );\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\r\n }\r\n\r\n let cadesCertificates;\r\n let cadesCertificatesCount;\r\n\r\n try {\r\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\r\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\r\n }\r\n\r\n if (!cadesCertificatesCount) {\r\n throw new Error('Нет доступных сертификатов');\r\n }\r\n\r\n const certificateList: Certificate[] = [];\r\n\r\n try {\r\n while (cadesCertificatesCount) {\r\n const cadesCertificate: CadesCertificate =\r\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\r\n\r\n certificateList.push(\r\n new Certificate(\r\n cadesCertificate,\r\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\r\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\r\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\r\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\r\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\r\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\r\n ),\r\n );\r\n\r\n cadesCertificatesCount--;\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\r\n }\r\n\r\n cadesStore.Close();\r\n\r\n certificatesCache = certificateList;\r\n\r\n return certificatesCache;\r\n }),\r\n );\r\n});\r\n","import { Certificate } from './certificate';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { getUserCertificates } from './getUserCertificates';\r\n\r\n/**\r\n * Возвращает сертификат по отпечатку\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @returns сертификат\r\n */\r\nexport const getCertificate = _afterPluginsLoaded(\r\n async (thumbprint: string): Promise => {\r\n if (!thumbprint) {\r\n throw new Error('Отпечаток не указан');\r\n }\r\n\r\n const availableCertificates: Certificate[] = await getUserCertificates();\r\n const foundCertificate: Certificate = availableCertificates.find((cert) => cert.thumbprint === thumbprint);\r\n\r\n if (!foundCertificate) {\r\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\r\n }\r\n\r\n return foundCertificate;\r\n },\r\n);\r\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 * Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей\n * Возвращает список сертификатов, доступных пользователю в системе\n *\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\n * @returns список сертификатов\n */\nexport const getContainerCertificates = _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 getContainerCertificates(): 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.CADESCOM_CONTAINER_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","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\n/**\r\n * Предоставляет информацию о системе\r\n *\r\n * @returns информацию о CSP\r\n */\r\nexport const getCspVersion = _afterPluginsLoaded((): string => {\r\n let cspVersion = null;\r\n\r\n return eval(\r\n _generateCadesFn(function getCspVersion(): string {\r\n let cadesAbout;\r\n\r\n try {\r\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\r\n\r\n cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\r\n\r\n cspVersion = __cadesAsyncToken__ + cspVersion.toString();\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении версии системы');\r\n }\r\n\r\n return cspVersion;\r\n }),\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\n\r\n/**\r\n * Предоставляет информацию о системе\r\n *\r\n * @returns информацию о плагине\r\n */\r\nexport const getPluginVersion = _afterPluginsLoaded((): string => {\r\n let cadesVersion = null;\r\n\r\n return eval(\r\n _generateCadesFn(function getPluginVersion(): string {\r\n let cadesAbout;\r\n\r\n try {\r\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\r\n\r\n cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\r\n\r\n if (!cadesVersion) {\r\n cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\r\n }\r\n\r\n cadesVersion = __cadesAsyncToken__ + cadesVersion.toString();\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о плагине');\r\n }\r\n\r\n return cadesVersion;\r\n }),\r\n );\r\n});\r\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\nexport interface SystemInfo {\r\n cadesVersion: string;\r\n cspVersion: string;\r\n}\r\n\r\n/**\r\n * Предоставляет информацию о системе\r\n *\r\n * @returns информацию о CSP и плагине\r\n */\r\nexport const getSystemInfo = _afterPluginsLoaded(\r\n (): SystemInfo => {\r\n const sysInfo = {\r\n cadesVersion: null,\r\n cspVersion: null,\r\n };\r\n\r\n return eval(\r\n _generateCadesFn(function getSystemInfo(): SystemInfo {\r\n let cadesAbout;\r\n\r\n try {\r\n cadesAbout = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.About');\r\n\r\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.PluginVersion;\r\n sysInfo.cspVersion = __cadesAsyncToken__ + cadesAbout.CSPVersion();\r\n\r\n if (!sysInfo.cadesVersion) {\r\n sysInfo.cadesVersion = __cadesAsyncToken__ + cadesAbout.Version;\r\n }\r\n\r\n sysInfo.cadesVersion = __cadesAsyncToken__ + sysInfo.cadesVersion.toString();\r\n sysInfo.cspVersion = __cadesAsyncToken__ + sysInfo.cspVersion.toString();\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении информации о системе');\r\n }\r\n\r\n return sysInfo;\r\n }),\r\n );\r\n },\r\n);\r\n","import { CadesCertificate, Certificate } from './certificate';\r\nimport { CAPICOM_PROPID_KEY_PROV_INFO } from '../constants';\r\nimport { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractCommonName } from '../helpers/_extractCommonName';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';\r\n\r\nlet certificatesCache: Certificate[];\r\n\r\n/**\r\n * Возвращает список сертификатов, доступных пользователю в системе\r\n *\r\n * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов\r\n * @returns список сертификатов\r\n */\r\nexport const getUserCertificates = _afterPluginsLoaded((resetCache: boolean = false): Certificate[] => {\r\n const { cadesplugin } = window;\r\n\r\n if (!resetCache && certificatesCache) {\r\n return certificatesCache;\r\n }\r\n\r\n return eval(\r\n _generateCadesFn(function getUserCertificates(): Certificate[] {\r\n let cadesStore;\r\n\r\n try {\r\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesStore.Open(\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\r\n cadesplugin.CAPICOM_MY_STORE,\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\r\n )\r\n );\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\r\n }\r\n\r\n let cadesCertificates;\r\n let cadesCertificatesCount;\r\n\r\n try {\r\n cadesCertificates = __cadesAsyncToken__ + cadesStore.Certificates;\r\n\r\n if (cadesCertificates) {\r\n cadesCertificates =\r\n __cadesAsyncToken__ + cadesCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID);\r\n\r\n /**\r\n * Не рассматриваются сертификаты, в которых отсутствует закрытый ключ\r\n * или не действительны на данный момент\r\n */\r\n cadesCertificates =\r\n __cadesAsyncToken__ +\r\n cadesCertificates.Find(\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,\r\n CAPICOM_PROPID_KEY_PROV_INFO,\r\n );\r\n\r\n cadesCertificatesCount = __cadesAsyncToken__ + cadesCertificates.Count;\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\r\n }\r\n\r\n if (!cadesCertificatesCount) {\r\n throw new Error('Нет доступных сертификатов');\r\n }\r\n\r\n const certificateList: Certificate[] = [];\r\n\r\n try {\r\n while (cadesCertificatesCount) {\r\n const cadesCertificate: CadesCertificate =\r\n __cadesAsyncToken__ + cadesCertificates.Item(cadesCertificatesCount);\r\n\r\n certificateList.push(\r\n new Certificate(\r\n cadesCertificate,\r\n _extractCommonName(__cadesAsyncToken__ + cadesCertificate.SubjectName),\r\n __cadesAsyncToken__ + cadesCertificate.IssuerName,\r\n __cadesAsyncToken__ + cadesCertificate.SubjectName,\r\n __cadesAsyncToken__ + cadesCertificate.Thumbprint,\r\n __cadesAsyncToken__ + cadesCertificate.ValidFromDate,\r\n __cadesAsyncToken__ + cadesCertificate.ValidToDate,\r\n ),\r\n );\r\n\r\n cadesCertificatesCount--;\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка обработки сертификатов');\r\n }\r\n\r\n cadesStore.Close();\r\n\r\n certificatesCache = certificateList;\r\n\r\n return certificatesCache;\r\n }),\r\n );\r\n});\r\n","export * from './getCertificate';\nexport * from './getUserCertificates';\nexport * from './getAllUserCertificates';\nexport * from './getContainerCertificates';\nexport * from './getAllContainerCertificates';\nexport * from './getSystemInfo';\nexport * from './isValidSystemSetup';\nexport * from './createXMLSignature';\nexport * from './createDetachedSignature';\nexport * from './addDetachedSignature';\nexport * from './createAttachedSignature';\nexport * from './addAttachedSignature';\nexport * from './createHash';\nexport * from './certificate';\nexport * from './getCspVersion';\nexport * from './getPluginVersion';\n","import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';\r\nimport { _isSupportedCadesVersion } from '../helpers/_isSupportedCadesVersion';\r\nimport { _isSupportedCSPVersion } from '../helpers/_isSupportedCSPVersion';\r\nimport { getSystemInfo, SystemInfo } from './getSystemInfo';\r\n\r\n/**\r\n * Проверяет корректность настроек ЭП на машине\r\n *\r\n * @returns флаг корректности настроек\r\n */\r\nexport const isValidSystemSetup = _afterPluginsLoaded(\r\n async (): Promise => {\r\n let systemInfo: SystemInfo;\r\n\r\n try {\r\n systemInfo = await getSystemInfo();\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Настройки ЭП на данной машине не верны');\r\n }\r\n\r\n if (!_isSupportedCadesVersion(systemInfo.cadesVersion)) {\r\n throw new Error('Не поддерживаемая версия плагина');\r\n }\r\n\r\n if (!_isSupportedCSPVersion(systemInfo.cspVersion)) {\r\n throw new Error('Не поддерживаемая версия CSP');\r\n }\r\n\r\n return true;\r\n },\r\n);\r\n","export const CADESCOM_ATTRIBUTE_OTHER = -1;\r\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\nexport const CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\nexport const CADESCOM_AllowNoOutstandingRequest = 1;\r\nexport const CADESCOM_AllowNone = 0;\r\nexport const CADESCOM_AllowUntrustedCertificate = 2;\r\nexport const CADESCOM_AllowUntrustedRoot = 4;\r\nexport const CADESCOM_BASE64_TO_BINARY = 0x01;\r\nexport const CADESCOM_CADES_BES = 1;\r\nexport const CADESCOM_CADES_DEFAULT = 0;\r\nexport const CADESCOM_CADES_T = 5;\r\nexport const CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\r\nexport const CADESCOM_CONTAINER_STORE = 100;\r\nexport const CADESCOM_CURRENT_USER_STORE = 2;\r\nexport const CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\r\nexport const CADESCOM_DISPLAY_DATA_CONTENT = 1;\r\nexport const CADESCOM_DISPLAY_DATA_NONE = 0;\r\nexport const CADESCOM_ENCODE_ANY = -1;\r\nexport const CADESCOM_ENCODE_BASE64 = 0;\r\nexport const CADESCOM_ENCODE_BINARY = 1;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\r\nexport const CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\r\nexport const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\r\nexport const CADESCOM_HASH_ALGORITHM_MD2 = 1;\r\nexport const CADESCOM_HASH_ALGORITHM_MD4 = 2;\r\nexport const CADESCOM_HASH_ALGORITHM_MD5 = 3;\r\nexport const CADESCOM_HASH_ALGORITHM_SHA1 = 0;\r\nexport const CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\r\nexport const CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\r\nexport const CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\r\nexport const CADESCOM_LOCAL_MACHINE_STORE = 1;\r\nexport const CADESCOM_PKCS7_TYPE = 65535;\r\nexport const CADESCOM_STRING_TO_UCS2LE = 0x00;\r\nexport const CADESCOM_SkipInstallToStore = 268435456;\r\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\r\nexport const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\r\nexport const CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\r\nexport const CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;\r\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\nexport const CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\nexport const CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\r\nexport const CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\r\nexport const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\r\nexport const CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\r\nexport const CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\r\nexport const CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\r\nexport const CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\r\nexport const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\r\nexport const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\nexport const CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\r\nexport const CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\r\nexport const CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\r\nexport const CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\r\nexport const CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\r\nexport const CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\r\nexport const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\r\nexport const CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\r\nexport const CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\r\nexport const CAPICOM_CURRENT_USER_STORE = 2;\r\nexport const CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\r\nexport const CAPICOM_EKU_CLIENT_AUTH = 2;\r\nexport const CAPICOM_EKU_OTHER = 0;\r\nexport const CAPICOM_EKU_SMARTCARD_LOGON = 5;\r\nexport const CAPICOM_LOCAL_MACHINE_STORE = 1;\r\nexport const CAPICOM_MEMORY_STORE = 0;\r\nexport const CAPICOM_MY_STORE = 'My';\r\nexport const CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\r\nexport const CAPICOM_OID_OTHER = 0;\r\nexport const CAPICOM_PROPID_ACCESS_STATE = 14;\r\nexport const CAPICOM_PROPID_ARCHIVED = 19;\r\nexport const CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;\r\nexport const CAPICOM_PROPID_AUTO_ENROLL = 21;\r\nexport const CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;\r\nexport const CAPICOM_PROPID_CTL_USAGE = 9;\r\nexport const CAPICOM_PROPID_DATE_STAMP = 27;\r\nexport const CAPICOM_PROPID_DESCRIPTION = 13;\r\nexport const CAPICOM_PROPID_EFS = 17;\r\nexport const CAPICOM_PROPID_ENHKEY_USAGE = 9;\r\nexport const CAPICOM_PROPID_ENROLLMENT = 26;\r\nexport const CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;\r\nexport const CAPICOM_PROPID_FIRST_RESERVED = 66;\r\nexport const CAPICOM_PROPID_FIRST_USER = 0x00008000;\r\nexport const CAPICOM_PROPID_FORTEZZA_DATA = 18;\r\nexport const CAPICOM_PROPID_FRIENDLY_NAME = 11;\r\nexport const CAPICOM_PROPID_HASH_PROP = 3;\r\nexport const CAPICOM_PROPID_IE30_RESERVED = 7;\r\nexport const CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;\r\nexport const CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;\r\nexport const CAPICOM_PROPID_KEY_CONTEXT = 5;\r\nexport const CAPICOM_PROPID_KEY_IDENTIFIER = 20;\r\nexport const CAPICOM_PROPID_KEY_PROV_HANDLE = 1;\r\nexport const CAPICOM_PROPID_KEY_PROV_INFO = 2;\r\nexport const CAPICOM_PROPID_KEY_SPEC = 6;\r\nexport const CAPICOM_PROPID_LAST_RESERVED = 0x00007fff;\r\nexport const CAPICOM_PROPID_LAST_USER = 0x0000ffff;\r\nexport const CAPICOM_PROPID_MD5_HASH = 4;\r\nexport const CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;\r\nexport const CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;\r\nexport const CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;\r\nexport const CAPICOM_PROPID_PVK_FILE = 12;\r\nexport const CAPICOM_PROPID_RENEWAL = 64;\r\nexport const CAPICOM_PROPID_SHA1_HASH = 3;\r\nexport const CAPICOM_PROPID_SIGNATURE_HASH = 15;\r\nexport const CAPICOM_PROPID_SMART_CARD_DATA = 16;\r\nexport const CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;\r\nexport const CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;\r\nexport const CAPICOM_PROPID_UNKNOWN = 0;\r\nexport const CAPICOM_SMART_CARD_USER_STORE = 4;\r\nexport const CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;\r\nexport const CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;\r\nexport const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\r\nexport const CAPICOM_STORE_OPEN_READ_ONLY = 0;\r\nexport const CAPICOM_STORE_OPEN_READ_WRITE = 1;\r\nexport const CHECK_NONE = 0;\r\nexport const CHECK_OFFLINE_REVOCATION_STATUS = 16;\r\nexport const CHECK_ONLINE_REVOCATION_STATUS = 8;\r\nexport const CHECK_SIGNATURE_VALIDITY = 4;\r\nexport const CHECK_TIME_VALIDITY = 2;\r\nexport const CHECK_TRUSTED_ROOT = 1;\r\nexport const LOG_LEVEL_DEBUG = 4;\r\nexport const LOG_LEVEL_ERROR = 1;\r\nexport const LOG_LEVEL_INFO = 2;\r\nexport const TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;\r\nexport const TRUST_CTL_IS_NOT_TIME_VALID = 131072;\r\nexport const TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;\r\nexport const TRUST_IS_CYCLIC = 128;\r\nexport const TRUST_IS_NOT_SIGNATURE_VALID = 8;\r\nexport const TRUST_IS_NOT_TIME_NESTED = 2;\r\nexport const TRUST_IS_NOT_TIME_VALID = 1;\r\nexport const TRUST_IS_NOT_VALID_FOR_USAGE = 16;\r\nexport const TRUST_IS_PARTIAL_CHAIN = 65536;\r\nexport const TRUST_IS_REVOKED = 4;\r\nexport const TRUST_IS_UNTRUSTED_ROOT = 32;\r\nexport const TRUST_REVOCATION_STATUS_UNKNOWN = 64;\r\nexport const XmlDsigGost3410Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\r\nexport const XmlDsigGost3410UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411';\r\nexport const XmlDsigGost3411Url = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\r\nexport const XmlDsigGost3411UrlObsolete = 'http://www.w3.org/2001/04/xmldsig-more#gostr3411';\r\n","export * from './cades-constants';\r\nexport * from './issuer-tags-translations';\r\nexport * from './oids-dictionary';\r\nexport * from './subject-tags-translations';\r\n","import { TagsTranslations } from './tags-translations';\r\n\r\nexport const ISSUER_TAGS_TRANSLATIONS: TagsTranslations[] = [\r\n { possibleNames: ['UnstructuredName'], translation: 'Неструктурированное имя' },\r\n { possibleNames: ['CN'], translation: 'Удостоверяющий центр' },\r\n { possibleNames: ['C'], translation: 'Страна' },\r\n { possibleNames: ['S'], translation: 'Регион' },\r\n { possibleNames: ['STREET'], translation: 'Адрес' },\r\n { possibleNames: ['O'], translation: 'Компания' },\r\n { possibleNames: ['OU'], translation: 'Тип' },\r\n { possibleNames: ['T'], translation: 'Должность' },\r\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\r\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\r\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\r\n { possibleNames: ['ИНН', 'INN', 'ИНН организации'], translation: 'ИНН' },\r\n { possibleNames: ['E'], translation: 'Email' },\r\n { possibleNames: ['L'], translation: 'Город' },\r\n];\r\n","export const OIDS_DICTIONARY = {\r\n '1.2.643.2.2.34.6': 'Пользователь Центра Регистрации',\r\n '1.2.643.2.39.1.1': 'Использование в программных продуктах системы \"1С:Предприятие 8\"',\r\n '1.2.643.3.131.1.1': 'ИНН',\r\n '1.2.643.3.141.1.1': 'РНС ФСС',\r\n '1.2.643.3.141.1.2': 'КП ФСС',\r\n '1.2.643.3.2.100.65.13.11': 'Использование в системе АИС \"Госзакупки\" Сахалинской области.',\r\n '1.2.643.3.8.100.1': 'Сертификат типа \"ekey-ГОСТ\"',\r\n '1.2.643.3.8.100.1.1': 'Общее использование в системах ИОК без права заверения финансовых документов',\r\n '1.2.643.3.8.100.1.10':\r\n 'Для участия в электронных торгах и подписания государственного контракта в информационных системах Тендерного комитета города Москвы уполномоченными лицами участников размещения государственного заказа города Москвы',\r\n '1.2.643.3.8.100.1.11':\r\n 'Подписание электронных документов в автоматизированной информационной системе размещения государственного и муниципального заказа Саратовской области',\r\n '1.2.643.3.8.100.1.12': 'Использование в системе государственного заказа Иркутской области',\r\n '1.2.643.3.8.100.1.13':\r\n 'Использование в электронной торговой площадке агентства государственного заказа Красноярского края',\r\n '1.2.643.3.8.100.1.14': 'Использование в электронной торговой площадке \"Тендер\"',\r\n '1.2.643.3.8.100.1.2': 'Передача отчетности по ТКС',\r\n '1.2.643.3.8.100.1.3': 'Оформление взаимных обязательств, соглашений, договоров, актов и т.п.',\r\n '1.2.643.3.8.100.1.4': 'Внутрикорпоративный документооборот',\r\n '1.2.643.3.8.100.1.5': 'Использование в системах электронной торговли',\r\n '1.2.643.3.8.100.1.6': 'Использование в торгово-закупочной системе \"ЭЛЕКТРА\"',\r\n '1.2.643.3.8.100.1.7': 'Использование в системе Портал государственных закупок Ставропольского края.',\r\n '1.2.643.3.8.100.1.8': 'Использование в Единой системе электронной торговли B2B-Center и B2G.',\r\n '1.2.643.3.8.100.1.9':\r\n 'Для участия в электронных торгах и подписания государственного контракта в электронной площадке ОАО «ЕЭТП» уполномоченными лицами участников размещения государственного или муниципального заказа',\r\n '1.2.643.5.1.24.2.1.3':\r\n 'Формирование документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\r\n '1.2.643.5.1.24.2.1.3.1':\r\n 'Формирование кадастровым инженером документов для получения государственных услуг в сфере ведения государственного кадастра недвижимости со стороны заявителя',\r\n '1.2.643.5.1.24.2.2.2': 'Формирование документов как результата оказания услуги со стороны органов регистрации прав',\r\n '1.2.643.5.1.24.2.2.3':\r\n 'Формирование документов для получения государственных услуг в сфере государственной регистрации прав на недвижимое имущество и сделок с ним со стороны заявителя',\r\n '1.2.643.6.2.1.7.1':\r\n 'Использование единоличным исполнительным органом юридического лица или уполномоченными представителями юридического лица в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских и иных прав и обязанностей в сфере негосударственного пенсионного обеспечения, негосударственного пенсионного страхования, в сфере деятельности паевых инвестиционных фондов, акционерных инвестиционных фондов, профессиональных участников рынка ценных бумаг, а также связанной с обслуживанием указанной деятельности услуг кредитных и иных организаций',\r\n '1.2.643.6.2.1.7.2':\r\n 'Использование физическим лицом в отношениях, связанных с возникновением, исполнением (осуществлением) и прекращением гражданских прав и обязанностей в отношении инвестиционных паев паевых инвестиционных фондов, в том числе отношения, связанные с учетом и/или фиксацией прав на инвестиционные паи паевых инвестиционных фондов',\r\n '1.2.643.6.3':\r\n 'Использование в электронных торговых системах и в программном обеспечении, связанным с обменом электронных сообщений',\r\n '1.2.643.6.3.1.1': 'Использование на электронных площадок отобранных для проведения аукционах в электронной форме',\r\n '1.2.643.6.3.1.2.1': 'Тип участника - Юридическое лицо',\r\n '1.2.643.6.3.1.2.2': 'Тип участника - Физическое лицо',\r\n '1.2.643.6.3.1.2.3': 'Тип участника - Индивидуальный предприниматель',\r\n '1.2.643.6.3.1.3.1': 'Участник размещения заказа',\r\n '1.2.643.6.3.1.4.1': 'Администратор организации',\r\n '1.2.643.6.3.1.4.2': 'Уполномоченный специалист',\r\n '1.2.643.6.3.1.4.3': 'Специалист с правом подписи контракта',\r\n '1.2.840.113549.1.9.2': 'Неструктурированное имя',\r\n '1.3.6.1.4.1.24138.1.1.8.1': 'Обеспечение юридической значимости в Системе \"Электронная Торговая Площадка\"',\r\n '1.3.6.1.4.1.29919.21': 'Использование в системе Портал государственных закупок Ростовской области \"Рефери\".',\r\n '1.3.6.1.5.5.7.3.2': 'Проверка подлинности клиента',\r\n '1.3.6.1.5.5.7.3.4': 'Защищенная электронная почта',\r\n '1.3.643.3.8.100.15': 'Использование в ЭТП \"uTender\"',\r\n};\r\n","import { TagsTranslations } from './tags-translations';\r\n\r\nexport const SUBJECT_TAGS_TRANSLATIONS: TagsTranslations[] = [\r\n { possibleNames: ['UnstructuredName'], translation: 'Неструктурированное имя' },\r\n { possibleNames: ['CN'], translation: 'Владелец' },\r\n { possibleNames: ['SN'], translation: 'Фамилия' },\r\n { possibleNames: ['G'], translation: 'Имя Отчество' },\r\n { possibleNames: ['C'], translation: 'Страна' },\r\n { possibleNames: ['S'], translation: 'Регион' },\r\n { possibleNames: ['STREET'], translation: 'Адрес' },\r\n { possibleNames: ['O'], translation: 'Компания' },\r\n { possibleNames: ['OU'], translation: 'Отдел/подразделение' },\r\n { possibleNames: ['T'], translation: 'Должность' },\r\n { possibleNames: ['ОГРН', 'OGRN'], translation: 'ОГРН' },\r\n { possibleNames: ['ОГРНИП', 'OGRNIP'], translation: 'ОГРНИП' },\r\n { possibleNames: ['СНИЛС', 'SNILS'], translation: 'СНИЛС' },\r\n { possibleNames: ['ИНН', 'INN', 'ИНН организации'], translation: 'ИНН' },\r\n { possibleNames: ['E'], translation: 'Email' },\r\n { possibleNames: ['L'], translation: 'Город' },\r\n];\r\n","export * from './api';\r\n","import { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\r\n\r\ntype Unpromisify = T extends Promise ? R : T;\r\n\r\nlet isSetLogLevel = false;\r\nlet isPluginLoaded = false;\r\n\r\nexport const _afterPluginsLoaded = any>(\r\n fn: T,\r\n): ((...args: Parameters) => Promise>>) => {\r\n const canPromise = Boolean(window.Promise);\r\n\r\n return async function (...args: Parameters): Promise>> {\r\n if (!isPluginLoaded) {\r\n try {\r\n require('../vendor/cadesplugin_api');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(\r\n _extractMeaningfulErrorMessage(error) || 'Ошибка при подключении модуля для работы с Cades plugin',\r\n );\r\n }\r\n\r\n isPluginLoaded = true;\r\n }\r\n\r\n const { cadesplugin } = window;\r\n\r\n if (!canPromise) {\r\n throw new Error('Необходим полифилл для Promise');\r\n }\r\n\r\n if (!cadesplugin) {\r\n throw new Error('Не подключен модуль для работы с Cades plugin');\r\n }\r\n\r\n if (!isSetLogLevel) {\r\n cadesplugin.set_log_level(cadesplugin.LOG_LEVEL_ERROR);\r\n\r\n isSetLogLevel = true;\r\n }\r\n\r\n try {\r\n await cadesplugin;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(\r\n _extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации модуля для работы с Cades plugin',\r\n );\r\n }\r\n\r\n return await fn.apply(this, args);\r\n };\r\n};\r\n","export const _extractCommonName = (subjectName: string): string | undefined =>\r\n subjectName.match(/CN=\"?(.+?)\"?(?:,|$)/)?.[1]?.replace(/\"{2}/g, '\"');\r\n","export const _extractMeaningfulErrorMessage = (error: Error): string | null => {\r\n let errorContainer = window.cadesplugin?.getLastError && window.cadesplugin.getLastError(error);\r\n\r\n if (!errorContainer?.message) {\r\n if (!error.message) {\r\n return null;\r\n }\r\n\r\n errorContainer = error;\r\n }\r\n\r\n const containsRussianLetters = /[а-яА-Я]/.test(errorContainer.message);\r\n\r\n if (!containsRussianLetters) {\r\n return null;\r\n }\r\n\r\n const searchResult = errorContainer.message.match(/^(.*?)(?:(?:\\.?\\s?\\(?(0x[0-9a-zA-Z]{1,8})\\)?)|(?:\\.?$))/);\r\n\r\n return searchResult ? searchResult[1] + (searchResult[2] ? ' (Код ошибки: ' + searchResult[2] + ')' : '') : null;\r\n};\r\n","// синтетические переменные, которые подменяются в рантайме\r\nexport const __cadesAsyncToken__ = {};\r\nexport const __createCadesPluginObject__ = (...args): any => ({});\r\n\r\nfunction getGeneratorConstructor(): GeneratorFunction {\r\n return new Function('', 'return Object.getPrototypeOf(function*(){}).constructor')();\r\n}\r\n\r\nexport const _generateCadesFn = (callback: Function): string => {\r\n const { cadesplugin } = window;\r\n const cadesGeneratorsAPI = Boolean(cadesplugin.CreateObjectAsync);\r\n const callbackName = callback.name || 'dynamicFn';\r\n const callbackLiteral = String(callback);\r\n const callbackArguments = callbackLiteral.match(/^function[\\s\\w]*?\\((.*?)\\)/)?.[1] || '';\r\n const callbackBody = callbackLiteral.replace(/^.*?{([\\s\\S]*?)}$/, '$1');\r\n let crossEnvCallbackLiteral = String(\r\n new (cadesGeneratorsAPI ? getGeneratorConstructor() : Function)(callbackArguments, callbackBody),\r\n );\r\n\r\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\r\n /\\w+?\\.__createCadesPluginObject__(\\([\\s\\S]*?\\))/gm,\r\n `cadesplugin.CreateObject${cadesGeneratorsAPI ? 'Async' : ''}$1`,\r\n );\r\n\r\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(\r\n /\\w+?\\.__cadesAsyncToken__\\s*?\\+\\s*?\\b/gm,\r\n cadesGeneratorsAPI ? 'yield ' : '',\r\n );\r\n\r\n if (!cadesGeneratorsAPI) {\r\n crossEnvCallbackLiteral = crossEnvCallbackLiteral.replace(/propset_(.*?)\\((.*?)\\)/gm, '$1 = $2');\r\n }\r\n\r\n return [\r\n cadesGeneratorsAPI ? `cadesplugin.async_spawn(${crossEnvCallbackLiteral});` : `(${crossEnvCallbackLiteral})();`,\r\n `//# sourceURL=crypto-pro_${callbackName}.js`,\r\n ].join('');\r\n};\r\n","import { CadesCertificate } from '../api/certificate';\r\nimport { _afterPluginsLoaded } from './_afterPluginsLoaded';\r\nimport { _extractMeaningfulErrorMessage } from './_extractMeaningfulErrorMessage';\r\nimport { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from './_generateCadesFn';\r\n\r\n/**\r\n * Возвращает сертификат в формате Cades по отпечатку\r\n *\r\n * @param thumbprint - отпечаток сертификата\r\n * @returns сертификат в формате Cades\r\n */\r\nexport const _getCadesCert = _afterPluginsLoaded(\r\n (thumbprint: string): CadesCertificate => {\r\n const { cadesplugin } = window;\r\n\r\n return eval(\r\n _generateCadesFn(function _getCadesCert() {\r\n let cadesStore;\r\n\r\n try {\r\n cadesStore = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.Store');\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при попытке доступа к хранилищу');\r\n }\r\n\r\n if (!cadesStore) {\r\n throw new Error('Не удалось получить доступ к хранилищу сертификатов');\r\n }\r\n\r\n try {\r\n void (\r\n __cadesAsyncToken__ +\r\n cadesStore.Open(\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE,\r\n cadesplugin.CAPICOM_MY_STORE,\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,\r\n )\r\n );\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при открытии хранилища');\r\n }\r\n\r\n let cadesCertificateList;\r\n let certificatesCount;\r\n\r\n try {\r\n cadesCertificateList = __cadesAsyncToken__ + cadesStore.Certificates;\r\n certificatesCount = __cadesAsyncToken__ + cadesCertificateList.Count;\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка получения списка сертификатов');\r\n }\r\n\r\n if (!certificatesCount) {\r\n throw new Error('Нет доступных сертификатов');\r\n }\r\n\r\n let cadesCertificate: CadesCertificate;\r\n\r\n try {\r\n cadesCertificateList =\r\n __cadesAsyncToken__ + cadesCertificateList.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);\r\n\r\n const count = __cadesAsyncToken__ + cadesCertificateList.Count;\r\n\r\n if (!count) {\r\n throw new Error(`Сертификат с отпечатком: \"${thumbprint}\" не найден`);\r\n }\r\n\r\n cadesCertificate = __cadesAsyncToken__ + cadesCertificateList.Item(1);\r\n } catch (error) {\r\n console.error(error);\r\n\r\n throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при получении сертификата');\r\n }\r\n\r\n cadesStore.Close();\r\n\r\n return cadesCertificate;\r\n }),\r\n );\r\n },\r\n);\r\n","/**\r\n * Возвращает объект даты, совместимый с Cades plugin'ом, зависящий от браузера.\r\n *\r\n * В IE необходимо использовать специфичный формат \"VT_DATE\"\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Microsoft_Extensions/Date.getVarDate\r\n */\r\nexport const _getDateObj = (dateObj): Date => (dateObj.getVarDate ? dateObj.getVarDate() : dateObj);\r\n","const oldestSupportedCSPVersion = 4.0;\r\n\r\nexport const _isSupportedCSPVersion = (version: string): boolean => {\r\n version = version.match(/\\d+?\\b(?:\\.\\d+)?/)?.[0];\r\n\r\n return Number(version) >= oldestSupportedCSPVersion;\r\n};\r\n","export const _isSupportedCadesVersion = (version: string): boolean => {\r\n const match = version.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\r\n\r\n if (!match) {\r\n return false;\r\n }\r\n\r\n const [, major, minor, patch] = match;\r\n\r\n if (Number(major) < 2) {\r\n return false;\r\n }\r\n\r\n if (Number(major) === 2 && Number(patch) < 12438) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n","import { OIDS_DICTIONARY } from '../constants';\r\nimport { TagsTranslations } from '../constants/tags-translations';\r\n\r\nexport interface TagTranslation {\r\n description: string;\r\n title: string;\r\n isTranslated: boolean;\r\n}\r\n\r\n/**\r\n * Парсит информацию из строки с информацией о сертификате\r\n *\r\n * @param tagsTranslations - словарь с расшифровками тэгов\r\n * @param rawInfo - данные для парсинга\r\n * @returns расшифрованная информация по отдельным тэгам\r\n */\r\nexport const _parseCertInfo = (tagsTranslations: TagsTranslations[], rawInfo: string): TagTranslation[] => {\r\n const extractedEntities: string[] = rawInfo.match(/([а-яА-Яa-zA-Z0-9\\s.]+)=(?:(\"[^\"]+?\")|(.+?))(?:,|$)/g);\r\n\r\n if (extractedEntities) {\r\n return extractedEntities.map((group) => {\r\n const segmentsMatch = group.trim().match(/^([а-яА-Яa-zA-Z0-9\\s.]+)=(.+?),?$/);\r\n let title = segmentsMatch?.[1];\r\n // Вырезаем лишние кавычки\r\n const description = segmentsMatch?.[2]?.replace(/^\"(.*)\"/, '$1')?.replace(/\"{2}/g, '\"');\r\n const oidIdentifierMatch = title?.match(/^OID\\.(.*)/);\r\n const oidIdentifier = oidIdentifierMatch?.[1];\r\n let isTranslated = false;\r\n\r\n // Если нашли в тайтле ОИД, пытаемся его расшифровать\r\n if (oidIdentifier) {\r\n const oidTranslation = OIDS_DICTIONARY[oidIdentifier];\r\n\r\n if (oidTranslation) {\r\n title = oidTranslation;\r\n isTranslated = true;\r\n }\r\n }\r\n\r\n const tagTranslation = tagsTranslations.find((tag) => tag.possibleNames.find((name) => name === title))\r\n ?.translation;\r\n\r\n if (tagTranslation) {\r\n title = tagTranslation;\r\n isTranslated = true;\r\n }\r\n\r\n return { description, title, isTranslated };\r\n });\r\n }\r\n};\r\n",";(function () {\r\n //already loaded\r\n if(window.cadesplugin)\r\n return;\r\n\r\n var pluginObject;\r\n var plugin_resolved = 0;\r\n var plugin_reject;\r\n var plugin_resolve;\r\n var isOpera = 0;\r\n var isFireFox = 0;\r\n var isSafari = 0;\r\n var isYandex = 0;\r\n var canPromise = !!window.Promise;\r\n var cadesplugin_loaded_event_recieved = false;\r\n var cadesplugin;\r\n\r\n if(canPromise)\r\n {\r\n cadesplugin = new Promise(function(resolve, reject)\r\n {\r\n plugin_resolve = resolve;\r\n plugin_reject = reject;\r\n });\r\n } else\r\n {\r\n cadesplugin = {};\r\n }\r\n\r\n function check_browser() {\r\n var ua= navigator.userAgent, tem, M= ua.match(/(opera|yabrowser|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n if(/trident/i.test(M[1])){\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name:'IE', version:(tem[1] || '')};\r\n }\r\n if(M[1] === 'Chrome'){\r\n tem = ua.match(/\\b(OPR|Edg|YaBrowser)\\/(\\d+)/);\r\n if (tem != null)\r\n return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\r\n }\r\n M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null)\r\n M.splice(1, 1, tem[1]);\r\n return {name:M[0],version:M[1]};\r\n }\r\n var browserSpecs = check_browser();\r\n\r\n function cpcsp_console_log(level, msg){\r\n //IE9 не может писать в консоль если не открыта вкладка developer tools\r\n if(typeof(console) === 'undefined')\r\n return;\r\n if (level <= cadesplugin.current_log_level ){\r\n if (level === cadesplugin.LOG_LEVEL_DEBUG)\r\n console.log(\"DEBUG: %s\", msg);\r\n if (level === cadesplugin.LOG_LEVEL_INFO)\r\n console.info(\"INFO: %s\", msg);\r\n if (level === cadesplugin.LOG_LEVEL_ERROR)\r\n console.error(\"ERROR: %s\", msg);\r\n return;\r\n }\r\n }\r\n\r\n function set_log_level(level){\r\n if (!((level === cadesplugin.LOG_LEVEL_DEBUG) ||\r\n (level === cadesplugin.LOG_LEVEL_INFO) ||\r\n (level === cadesplugin.LOG_LEVEL_ERROR))){\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_ERROR, \"cadesplugin_api.js: Incorrect log_level: \" + level);\r\n return;\r\n }\r\n cadesplugin.current_log_level = level;\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = DEBUG\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = INFO\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\r\n cpcsp_console_log(cadesplugin.LOG_LEVEL_INFO, \"cadesplugin_api.js: log_level = ERROR\");\r\n if(isNativeMessageSupported())\r\n {\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_DEBUG)\r\n window.postMessage(\"set_log_level=debug\", \"*\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_INFO)\r\n window.postMessage(\"set_log_level=info\", \"*\");\r\n if (cadesplugin.current_log_level === cadesplugin.LOG_LEVEL_ERROR)\r\n window.postMessage(\"set_log_level=error\", \"*\");\r\n }\r\n }\r\n\r\n function set_constantValues()\r\n {\r\n cadesplugin.CAPICOM_MEMORY_STORE = 0;\r\n cadesplugin.CAPICOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CAPICOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CAPICOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_MEMORY_STORE = 0;\r\n cadesplugin.CADESCOM_LOCAL_MACHINE_STORE = 1;\r\n cadesplugin.CADESCOM_CURRENT_USER_STORE = 2;\r\n cadesplugin.CADESCOM_SMART_CARD_USER_STORE = 4;\r\n cadesplugin.CADESCOM_CONTAINER_STORE = 100;\r\n\r\n cadesplugin.CAPICOM_MY_STORE = \"My\";\r\n\r\n cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;\r\n cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;\r\n\r\n cadesplugin.CADESCOM_XADES_DEFAULT = 0x00000010;\r\n cadesplugin.CADESCOM_XADES_BES = 0x00000020;\r\n cadesplugin.CADESCOM_XADES_T = 0x00000050;\r\n cadesplugin.CADESCOM_XADES_X_LONG_TYPE_1 = 0x000005d0;\r\n cadesplugin.CADESCOM_XMLDSIG_TYPE = 0x00000000;\r\n\r\n cadesplugin.XmlDsigGost3410UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411UrlObsolete = \"http://www.w3.org/2001/04/xmldsig-more#gostr3411\";\r\n cadesplugin.XmlDsigGost3410Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411\";\r\n cadesplugin.XmlDsigGost3411Url = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411\";\r\n\r\n cadesplugin.XmlDsigGost3411Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3410Url2012256 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256\";\r\n cadesplugin.XmlDsigGost3411Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512\";\r\n cadesplugin.XmlDsigGost3410Url2012512 = \"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512\";\r\n\r\n cadesplugin.CADESCOM_CADES_DEFAULT = 0;\r\n cadesplugin.CADESCOM_CADES_BES = 1;\r\n cadesplugin.CADESCOM_CADES_T = 0x5;\r\n cadesplugin.CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;\r\n cadesplugin.CADESCOM_PKCS7_TYPE = 0xffff;\r\n\r\n cadesplugin.CADESCOM_ENCODE_BASE64 = 0;\r\n cadesplugin.CADESCOM_ENCODE_BINARY = 1;\r\n cadesplugin.CADESCOM_ENCODE_ANY = -1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;\r\n\r\n cadesplugin.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;\r\n cadesplugin.CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;\r\n\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;\r\n cadesplugin.CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;\r\n\r\n cadesplugin.CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;\r\n\r\n cadesplugin.CAPICOM_PROPID_ENHKEY_USAGE = 9;\r\n\r\n cadesplugin.CAPICOM_OID_OTHER = 0;\r\n cadesplugin.CAPICOM_OID_KEY_USAGE_EXTENSION = 10;\r\n\r\n cadesplugin.CAPICOM_EKU_CLIENT_AUTH = 2;\r\n cadesplugin.CAPICOM_EKU_SMARTCARD_LOGON = 5;\r\n cadesplugin.CAPICOM_EKU_OTHER = 0;\r\n\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;\r\n cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO = 0x100;\r\n cadesplugin.CADESCOM_ATTRIBUTE_OTHER = -1;\r\n\r\n cadesplugin.CADESCOM_STRING_TO_UCS2LE = 0;\r\n cadesplugin.CADESCOM_BASE64_TO_BINARY = 1;\r\n\r\n cadesplugin.CADESCOM_DISPLAY_DATA_NONE = 0;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_CONTENT = 1;\r\n cadesplugin.CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;\r\n\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;\r\n cadesplugin.CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;\r\n\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA1 = 0;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD2 = 1;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD4 = 2;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_MD5 = 3;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_256 = 4;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_384 = 5;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_SHA_512 = 6;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;\r\n cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;\r\n\r\n cadesplugin.LOG_LEVEL_DEBUG = 4;\r\n cadesplugin.LOG_LEVEL_INFO = 2;\r\n cadesplugin.LOG_LEVEL_ERROR = 1;\r\n\r\n cadesplugin.CADESCOM_AllowNone = 0;\r\n cadesplugin.CADESCOM_AllowNoOutstandingRequest = 0x1;\r\n cadesplugin.CADESCOM_AllowUntrustedCertificate = 0x2;\r\n cadesplugin.CADESCOM_AllowUntrustedRoot = 0x4;\r\n cadesplugin.CADESCOM_SkipInstallToStore = 0x10000000;\r\n cadesplugin.CADESCOM_InstallCertChainToContainer = 0x20000000;\r\n cadesplugin.CADESCOM_UseContainerStore = 0x40000000;\r\n\r\n cadesplugin.ENABLE_CARRIER_TYPE_CSP = 0x01;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_NO_SM = 0x02;\r\n cadesplugin.ENABLE_CARRIER_TYPE_FKC_SM = 0x04;\r\n cadesplugin.ENABLE_ANY_CARRIER_TYPE = 0x07;\r\n\r\n cadesplugin.DISABLE_EVERY_CARRIER_OPERATION = 0x00;\r\n cadesplugin.ENABLE_CARRIER_OPEN_ENUM = 0x01;\r\n cadesplugin.ENABLE_CARRIER_CREATE = 0x02;\r\n cadesplugin.ENABLE_ANY_OPERATION = 0x03;\r\n\r\n cadesplugin.CADESCOM_PRODUCT_CSP = 0;\r\n cadesplugin.CADESCOM_PRODUCT_OCSP = 1;\r\n cadesplugin.CADESCOM_PRODUCT_TSP = 2;\r\n\r\n cadesplugin.MEDIA_TYPE_REGISTRY = 0x00000001;\r\n cadesplugin.MEDIA_TYPE_HDIMAGE = 0x00000002;\r\n cadesplugin.MEDIA_TYPE_CLOUD = 0x00000004;\r\n cadesplugin.MEDIA_TYPE_SCARD = 0x00000008;\r\n\r\n cadesplugin.XCN_CRYPT_STRING_BASE64HEADER = 0;\r\n cadesplugin.AT_KEYEXCHANGE = 1;\r\n cadesplugin.AT_SIGNATURE = 2;\r\n }\r\n\r\n function async_spawn(generatorFunc) {\r\n function continuer(verb, arg) {\r\n var result;\r\n try {\r\n result = generator[verb](arg);\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n if (result.done) {\r\n return result.value;\r\n } else {\r\n return Promise.resolve(result.value).then(onFulfilled, onRejected);\r\n }\r\n }\r\n var generator = generatorFunc(Array.prototype.slice.call(arguments, 1));\r\n var onFulfilled = continuer.bind(continuer, \"next\");\r\n var onRejected = continuer.bind(continuer, \"throw\");\r\n return onFulfilled();\r\n }\r\n\r\n function isIE() {\r\n // var retVal = ((\"Microsoft Internet Explorer\" == navigator.appName) || // IE < 11\r\n // navigator.userAgent.match(/Trident\\/./i)); // IE 11\r\n return (browserSpecs.name === 'IE' || browserSpecs.name === 'MSIE');\r\n }\r\n\r\n function isIOS() {\r\n return (navigator.userAgent.match(/ipod/i) ||\r\n navigator.userAgent.match(/ipad/i) ||\r\n navigator.userAgent.match(/iphone/i));\r\n }\r\n\r\n function isNativeMessageSupported()\r\n {\r\n // В IE работаем через NPAPI\r\n if(isIE())\r\n return false;\r\n // В Edge работаем через NativeMessage\r\n if (browserSpecs.name === 'Edg') {\r\n return true;\r\n }\r\n if (browserSpecs.name === 'YaBrowser') {\r\n isYandex = true;\r\n return true;\r\n }\r\n // В Chrome, Firefox, Safari и Opera работаем через асинхронную версию в зависимости от версии\r\n if(browserSpecs.name === 'Opera') {\r\n isOpera = true;\r\n if(browserSpecs.version >= 33){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n if(browserSpecs.name === 'Firefox') {\r\n isFireFox = true;\r\n if(browserSpecs.version >= 52){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n if(browserSpecs.name === 'Chrome') {\r\n if(browserSpecs.version >= 42){\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n //В Сафари начиная с 12 версии нет NPAPI\r\n if(browserSpecs.name === 'Safari') {\r\n isSafari = true;\r\n if(browserSpecs.version >= 12) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // Функция активации объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObject(name) {\r\n if (isIOS()) {\r\n // На iOS для создания объектов используется функция\r\n // call_ru_cryptopro_npcades_10_native_bridge, определенная в IOS_npcades_supp.js\r\n return call_ru_cryptopro_npcades_10_native_bridge(\"CreateObject\", [name]);\r\n }\r\n if (isIE()) {\r\n // В Internet Explorer создаются COM-объекты\r\n if (name.match(/X509Enrollment/i)) {\r\n try {\r\n // Объекты CertEnroll пробуем создавать через нашу фабрику,\r\n // если не получилось то через CX509EnrollmentWebClassFactory\r\n var objCertEnrollClassFactory = document.getElementById(\"webClassFactory\");\r\n return objCertEnrollClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n try {\r\n var objWebClassFactory = document.getElementById(\"certEnrollClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (err) {\r\n throw (\"Для создания обьектов X509Enrollment следует настроить веб-узел на использование проверки подлинности по протоколу HTTPS\");\r\n }\r\n }\r\n }\r\n // Объекты CAPICOM и CAdESCOM создаются через CAdESCOM.WebClassFactory\r\n try {\r\n var objWebClassFactory = document.getElementById(\"webClassFactory\");\r\n return objWebClassFactory.CreateObject(name);\r\n }\r\n catch (e) {\r\n // Для версий плагина ниже 2.0.12538\r\n return new ActiveXObject(name);\r\n }\r\n }\r\n // создаются объекты NPAPI\r\n return pluginObject.CreateObject(name);\r\n }\r\n\r\n function decimalToHexString(number) {\r\n if (number < 0) {\r\n number = 0xFFFFFFFF + number + 1;\r\n }\r\n\r\n return number.toString(16).toUpperCase();\r\n }\r\n\r\n function GetMessageFromException(e) {\r\n var err = e.message;\r\n if (!err) {\r\n err = e;\r\n } else if (e.number) {\r\n err += \" (0x\" + decimalToHexString(e.number) + \")\";\r\n }\r\n return err;\r\n }\r\n\r\n function getLastError(exception) {\r\n if(isNativeMessageSupported() || isIE() || isIOS() ) {\r\n return GetMessageFromException(exception);\r\n }\r\n\r\n try {\r\n return pluginObject.getLastError();\r\n } catch(e) {\r\n return GetMessageFromException(exception);\r\n }\r\n }\r\n\r\n // Функция для удаления созданных объектов\r\n function ReleasePluginObjects() {\r\n return cpcsp_chrome_nmcades.ReleasePluginObjects();\r\n }\r\n\r\n // Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in\r\n function CreateObjectAsync(name) {\r\n return pluginObject.CreateObjectAsync(name);\r\n }\r\n\r\n //Функции для IOS\r\n var ru_cryptopro_npcades_10_native_bridge = {\r\n callbacksCount : 1,\r\n callbacks : {},\r\n\r\n // Automatically called by native layer when a result is available\r\n resultForCallback : function resultForCallback(callbackId, resultArray) {\r\n var callback = ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId];\r\n if (!callback) return;\r\n callback.apply(null,resultArray);\r\n },\r\n\r\n // Use this in javascript to request native objective-c code\r\n // functionName : string (I think the name is explicit :p)\r\n // args : array of arguments\r\n // callback : function with n-arguments that is going to be called when the native code returned\r\n call : function call(functionName, args, callback) {\r\n var hasCallback = callback && typeof callback === \"function\";\r\n var callbackId = hasCallback ? ru_cryptopro_npcades_10_native_bridge.callbacksCount++ : 0;\r\n\r\n if (hasCallback)\r\n ru_cryptopro_npcades_10_native_bridge.callbacks[callbackId] = callback;\r\n\r\n var iframe = document.createElement(\"IFRAME\");\r\n var arrObjs = new Array(\"_CPNP_handle\");\r\n try{\r\n iframe.setAttribute(\"src\", \"cpnp-js-call:\" + functionName + \":\" + callbackId+ \":\" + encodeURIComponent(JSON.stringify(args, arrObjs)));\r\n } catch(e){\r\n alert(e);\r\n }\r\n document.documentElement.appendChild(iframe);\r\n iframe.parentNode.removeChild(iframe);\r\n iframe = null;\r\n }\r\n };\r\n\r\n function call_ru_cryptopro_npcades_10_native_bridge(functionName, array){\r\n var tmpobj;\r\n var ex;\r\n ru_cryptopro_npcades_10_native_bridge.call(functionName, array, function(e, response){\r\n ex = e;\r\n var str='tmpobj='+response;\r\n eval(str);\r\n if (typeof (tmpobj) === \"string\"){\r\n tmpobj = tmpobj.replace(/\\\\\\n/gm, \"\\n\");\r\n tmpobj = tmpobj.replace(/\\\\\\r/gm, \"\\r\");\r\n }\r\n });\r\n if(ex)\r\n throw ex;\r\n return tmpobj;\r\n }\r\n\r\n function show_firefox_missing_extension_dialog()\r\n {\r\n if (!window.cadesplugin_skip_extension_install)\r\n {\r\n var ovr = document.createElement('div');\r\n ovr.id = \"cadesplugin_ovr\";\r\n ovr.style = \"visibility: hidden; position: fixed; left: 0px; top: 0px; width:100%; height:100%; background-color: rgba(0,0,0,0.7)\";\r\n ovr.innerHTML = \"
\" +\r\n \"\" +\r\n \"
Для работы КриптоПро ЭЦП Browser plugin на данном сайте необходимо расширение для браузера. Убедитесь, что оно у Вас включено или установите его.\" +\r\n \"