function IFCPlugin(n,t,i){function rt(n){var n=n;this.send=function(t,i){try{n.post_message(JSON.stringify(t),function(n,t){i(JSON.parse(t))})}catch(r){i({error_code:IFCError.IFC_PLUGIN_UNDEFINED_ERROR})}}}function ut(n){function r(i,r){t=r;try{n.postMessage(JSON.stringify({type:"TO_IFC_EXT",msg_data:i}),"*")}catch(u){t=!1;r({error_code:IFCError.IFC_PLUGIN_UNDEFINED_ERROR})}}function u(n){if(n.intermediate)t(n);else if(t){var i=t;t=!1;i(n)}}function f(){if(t){var n=t;t=!1;n({error_code:IFCError.IFC_PLUGIN_UNDEFINED_ERROR})}i=!1}function e(t){if(t.source==n){var i=typeof t.data=="string"?JSON.parse(t.data):t.data;i.type&&i.type=="FROM_IFC_EXT"?u(i.msg_data):i.type&&i.type=="IFC_EXT_DISCONNECT"&&f()}}function o(){if(i)return IFCError.IFC_OK;try{n.addEventListener("message",e,!1)}catch(t){return IFCError.IFC_PLUGIN_UNDEFINED_ERROR}return i=!0,IFCError.IFC_OK}var n=n,t=!1,i=!1;this.send=function(n,i){if(t){i({error_code:IFCError.IFC_GENERAL_ERROR});return}var u=o();if(u!=IFCError.IFC_OK){i({error_code:u});return}r(n,i)}}function c(n,t){r.send({func_name:"get_list_info",params:{cryptoType:n}},function(i){var u,r;if(IFCError.IFC_OK!=i.error_code){t(i);return}for(u=[],r=0;r<i.ifc_list.length;r++)(i.ifc_list[r].type==n||n==null)&&u.push(new IFCCrypto(i.ifc_list[r]));t({error_code:IFCError.IFC_OK,ifc_list:u})})}function a(n){return c(null,n)}function u(n,t){a(function(i){if(IFCError.IFC_OK!=i.error_code){t(i);return}for(var r=0;r<i.ifc_list.length;r++)if(n==i.ifc_list[r].getCryptoId()){t({error_code:IFCError.IFC_OK,crypto:i.ifc_list[r]});return}t({error_code:IFCError.IFC_CRYPTO_NOT_FOUND,crypto:crypto})})}function f(n){var i,t;if(!n)return"";for(i=["CryptoPro","VIPNet","SignalCom","LISSI-CSP","Validata"],t=0;i.length>t;t++)if(n.indexOf(i[t])>=0)return n.substring(0,n.indexOf("/"));return n.substring(0,n.lastIndexOf("/"))}function e(n,t,i,e,o,s,h){u(f(n),function(u){if(IFCError.IFC_OK!=u.error_code){s(u);return}var c=u.crypto,f=IFCConst.IFC_SOFTWARE_HASH;(IFCConst.IFC_DATATYPE_DATA==e||IFCConst.IFC_DATATYPE_DATA_BASE64==e)&&i.length<1024&&(f=IFCConst.IFC_HARDWARE_HASH);typeof h=="undefined"&&(h=1);r.send({func_name:"sign",params:{containerId:n,userPin:t?t:"",inDataType:e,data:i,hashType:f,signType:o,cspUI:h,outDataType:IFCConst.IFC_BASE64}},s)})}function o(n,t,i,u,f,e,o){e?h(e,function(e){if(IFCError.IFC_OK!=e.error_code){o(e);return}var h=e.x509Handle;r.send({func_name:"verify",params:{containerId:n,inDataType:f,data:u,signType:i,sign:t,x509Handle:h}},function(n){var i=n.error_code,t;IFCError.IFC_OK==n.error_code&&(t=n.verify_result);s(h,function(n){IFCError.IFC_OK==n.error_code?o({error_code:i,verify_result:t}):o(n)})})}):r.send({func_name:"verify",params:{containerId:n,inDataType:f,data:u,signType:i,sign:t,x509Handle:0}},o)}function y(n,t,i,e,o,s,h,c){u(f(n),function(u){if(IFCError.IFC_OK!=u.error_code){h(u);return}var f=u.crypto;typeof c=="undefined"&&(c=1);r.send({func_name:"sign_xml",params:{containerId:n,userPin:t?t:"",wsu_id:i,inDataType:o,data:e,cspUI:c,outDataType:s}},h)})}function p(n,t,i,u,f){r.send({func_name:"verify_xml",params:{containerId:n,wsu_id:t,inDataType:u,sign:i}},function(n){IFCError.IFC_OK==n.error_code?f({error_code:n.error_code,verify_result:n.verify_result}):f(n)})}function w(n,t,i,u){r.send({func_name:"hash",params:{containerId:n,inDataType:t,data:i,outDataType:IFCConst.IFC_BASE64}},function(n){if(IFCError.IFC_OK!=n.error_code){u(n);return}u({error_code:IFCError.IFC_OK,hash:new IFCHash(n.hashValue)})})}function b(n,t,i,u,f,e,o){r.send({func_name:"key_gen",params:{containerId:n,userPin:t}},function(n){if(IFCError.IFC_OK!=n.error_code){o(n);return}var h=new IFCDN(i,IFCConst.DN_SEPARATOR_INPUT),c=h.getSubjectArray(),l="clientAuth,emailProtection,1.2.643.2.2.34.6,"+u,a=l.split(","),v=f.split(","),s=n.real_id;r.send({func_name:"req_gen",params:{containerId:s,userPin:t,subject:c,extendedKeyUsage:a,certificatePolicies:v,signInstrument:"",req_format:IFCConst.IFC_REQ_BASE64ENCODED,csrExtensions:e}},function(n){if(IFCError.IFC_OK!=n.error_code){o(n);return}o({error_code:IFCError.IFC_OK,real_id:s,req_base64_length:n.req_base64_length,req_base64:n.req_base64,req:new IFCCertificateRequest(s,n.req_base64)})})})}function k(n,t){a(function(i){var u,e,f;if(IFCError.IFC_OK!=i.error_code){n(i);return}for(u=i.ifc_list,e=[],f=0;f<u.length;f++)e.push(u[f].getCryptoId());r.send({func_name:"get_list_certs_by_cryptoid_array",params:{cryptoID_array:e,show_progress:t}},function(t){var o,i,f,r,e;if(IFCError.IFC_OK!=t.error_code){n(t);return}if(t.intermediate){n(t);return}for(o=[],i=0;i<t.result_array.length;i++){for(f=!1,r=0;r<u.length;r++)if(u[r].getCryptoId()==t.result_array[i].crypto_id){f=u[r];break}if(f!=!1)for(e=0;e<t.result_array[i].cert_list.length;e++)o.push(new IFCCertificate(t.result_array[i].cert_list[e],f))}n({error_code:IFCError.IFC_OK,certs_list:o})})})}function ft(n,t){u(n,function(n){if(IFCError.IFC_OK!=n.error_code){t(n);return}var i=n.crypto;r.send({func_name:"get_list_certs",params:{cryptoID:i.getCryptoId()}},function(n){if(IFCError.IFC_OK!=n.error_code){t(n);return}certsArray=[];for(var r=0;r<n.cert_list.length;r++)certsArray.push(new IFCCertificate(n.cert_list[r],i));t({error_code:IFCError.IFC_OK,certs_list:certsArray})})})}function et(n,t,i){u(n,function(n){if(IFCError.IFC_OK!=n.error_code){i(n);return}var u=n.crypto;t&&t.length>0||!u.isPKCS11()||i({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});r.send({func_name:"get_list_keys",params:{cryptoID:u.getCryptoId(),userPin:t}},function(n){if(IFCError.IFC_OK!=n.error_code){i(n);return}keysArray=[];for(var t=0;t<n.keys_list.length;t++)keysArray.push(new IFCCertificate(n.keys_list[t],u));i({error_code:IFCError.IFC_OK,keys_list:keysArray})})})}function ot(n,t,i,r){return v(n,t,i,"",r)}function v(n,t,i,r,e){var o=f(n);u(o,function(u){if(IFCError.IFC_OK!=u.error_code){e(u);return}if(!(t&&t.length>0)&&u.crypto.isPKCS11()){e({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}b(n,t,i,u.crypto.getExtendedKeyUsage(),u.crypto.getCertificatePolicies(),r,e)})}function st(n,t,i,e){var o=f(n);u(o,function(u){if(IFCError.IFC_OK!=u.error_code){e(u);return}if(!(t&&t.length>0)&&u.crypto.isPKCS11()){e({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}r.send({func_name:"make_cert",params:{containerId:n,userPin:t,request:i}},function(n){e(n)})})}function d(n){r.send({func_name:"get_guid",params:{prefix:l}},n)}function ht(n,t,i,r){return g(n,t,i,"",r)}function g(n,t,i,r,u){d(function(f){if(IFCError.IFC_OK!=f.error_code){u(f);return}var e=n+"/"+f.guid;return v(e,t,i,r,u)})}function nt(n,t,i){u(f(n),function(u){if(IFCError.IFC_OK!=u.error_code){i(u);return}var f=u.crypto;if(!(t&&t.length>0)&&f.isPKCS11()){i({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}r.send({func_name:"key_delete",params:{containerId:n,userPin:t}},i)})}function h(n,t){r.send({func_name:"load_x509_from_data",params:{cert:n,cert_data_type:IFCConst.IFC_CERT_UNKNOWN}},t)}function ct(n,t){r.send({func_name:"load_x509_from_container",params:{containerId:n}},t)}function s(n,t){r.send({func_name:"free_x509",params:{x509Handle:n}},t)}function lt(n,t){r.send({func_name:"get_x509_info",params:{x509Handle:n}},function(n){if(IFCError.IFC_OK!=n.error_code){t(n);return}var i=new IFCCertificateInfo(n.cert_info);t({error_code:n.error_code,cert:i})})}function at(n,t){h(n,function(n){if(IFCError.IFC_OK!=n.error_code){t(n);return}var i=n.x509Handle;lt(i,function(n){if(IFCError.IFC_OK!=n.error_code){t(n);return}var r=n.cert;s(i,function(n){t({error_code:n.error_code,cert:r})})})})}function vt(n,t){ct(n,function(n){if(IFCError.IFC_OK!=n.error_code){t(n);return}var i=n.x509Handle;r.send({func_name:"get_x509_info",params:{x509Handle:i}},function(n){if(IFCError.IFC_OK!=n.error_code){t(n);return}var r=new IFCCertificateInfo(n.cert_info);s(i,function(n){t({error_code:n.error_code,cert:r})})})})}function yt(n,t,i,e){var o=f(n);u(o,function(u){if(IFCError.IFC_OK!=u.error_code){e(u);return}if(!(t&&t.length>0)&&u.crypto.isPKCS11()){e({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}h(i,function(i){if(IFCError.IFC_OK!=i.error_code){e(i);return}var u=i.x509Handle;r.send({func_name:"set_x509",params:{containerId:n,userPin:t,x509Handle:u}},function(n){if(IFCError.IFC_OK!=n.error_code){e(n);return}s(u,function(n){e(n);return})})})})}function pt(n,t,i,u,f){if(!(t&&t.length>0)){f({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}h(i,function(i){if(IFCError.IFC_OK!=i.error_code){f(i);return}peer_x509Handle=i.x509Handle;r.send({func_name:"encrypt",params:{containerId:n,userPin:t,peerX509Handle:peer_x509Handle,data:u}},function(n){var t=n.error_code,i;IFCError.IFC_OK==n.error_code&&(i=new IFCEncrypted(n.enc_data_base64,n.enc_key_base64,n.cert_base64));s(peer_x509Handle,function(n){if(IFCError.IFC_OK!=n.error_code){f(n);return}IFCError.IFC_OK==t?f({error_code:t,encrypted:i}):f({error_code:t})})})})}function wt(n,t,i,u,f,e){if(!(t&&t.length>0)){e({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}h(i,function(i){if(IFCError.IFC_OK!=i.error_code){e(i);return}peer_x509Handle=i.x509Handle;r.send({func_name:"decrypt",params:{containerId:n,userPin:t,peerX509Handle:peer_x509Handle,encryptedData:u,encryptedKey:f}},function(n){var t=n.error_code,i;IFCError.IFC_OK==n.error_code&&(i=n.decrypted);s(peer_x509Handle,function(n){if(IFCError.IFC_OK!=n.error_code){e(n);return}IFCError.IFC_OK==t?e({error_code:t,decrypted:i}):e({error_code:t})})})})}function bt(n,t,i,u,f){if(!(i&&i.length>0)){f({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}if(!(u&&u.length>0)){f({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}r.send({func_name:"p11_init",params:{cryptoID:n,label:t,userPin:i,adminPin:u}},f)}function kt(n,t,i,u){if(!(t&&t.length>0)){u({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}if(!(i&&i.length>0)){u({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}r.send({func_name:"p11_pin_change",params:{cryptoID:n,pinType:IFCConst.P11_PIN_TYPE_USER,currentPin:t,newPin:i}},u)}function dt(n,t,i){if(!(t&&t.length>0)){i({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}r.send({func_name:"p11_pin_unlock",params:{cryptoID:n,adminPin:t}},i)}function gt(n,t,i,u){if(!(t&&t.length>0)){u({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}if(!(i&&i.length>0)){u({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}r.send({func_name:"p11_pin_change",params:{cryptoID:n,pinType:IFCConst.P11_PIN_TYPE_ADMIN,currentPin:t,newPin:i}},u)}function tt(n,t,i,u){if(!(i&&i.length>0)){u({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}r.send({func_name:"p11_key_rename",params:{containerId:n,newContainerId:t,userPin:i}},u)}function ni(n,t,i,r){if(!(i&&i.length>0)){r({error_code:IFCError.IFC_P11_INVALID_PIN_ERROR});return}u(f(n),function(u){if(IFCError.IFC_OK!=u.error_code){r(u);return}if(u.crypto==null||!u.crypto.isPKCS11()){r({error_code:IFCError.IFC_BAD_PARAMS});return}var e=f(n)+"/"+t;nt(e,i,function(u){(IFCError.IFC_OK==u.error_code||IFCError.IFC_CONTAINER_NOT_FOUND==u.error_code)&&tt(n,t,i,r)})})}function ti(n,t,i){r.send({func_name:"send_apdu",params:{readerName:n,apdu_string:t}},i)}var it="2.0.6",l="",r;r=t?new ut(window):new rt(n);this.getLibVersion=function(){return it};this.create=function(n,t,i){r.send({func_name:"create",params:{file_config:n,config_string:t,log_file_location:"",plugin_log_level:""}},i)};this.getPluginVersion=function(n){r.send({func_name:"version"},n)};this.getCryptoList=function(n){return a(n)};this.getPKCS11CryptoList=function(n){return c(IFCConst.IFC_CRYPTO_PKCS11,n)};this.getCAPICryptoList=function(n){return c(IFCConst.IFC_CRYPTO_CAPI,n)};this.getCAPILINUXCryptoList=function(n){return c(IFCConst.IFC_CRYPTO_CAPI_LINUX,n)};this.getCryptoById=function(n,t){return u(n,t)};this.getCertificateList=function(n){return k(n,0)};this.getCertificateListWithProgress=function(n){return k(n,1)};this.getCertificateListByCryptoId=function(n,t){return ft(n,t)};this.getKeyListByCryptoId=function(n,t,i){return et(n,t,i)};this.getCryptoIdByContainerId=function(n){return f(n)};this.signDataXml=function(n,t,i,r,u,f,e){return y(n,t,i,r,IFCConst.IFC_DATATYPE_DATA,u,f,e)};i&&(this.verifyDataXml=function(n,t,i,r){return p(n,t,i,IFCConst.IFC_DATATYPE_DATA,r)});this.signDataBase64Xml=function(n,t,i,r,u,f,e){return y(n,t,i,r,IFCConst.IFC_DATATYPE_DATA_BASE64,u,f,e)};i&&(this.verifyDataBase64Xml=function(n,t,i,r){return p(n,t,i,IFCConst.IFC_DATATYPE_DATA_BASE64,r)});this.signDataCmsAttached=function(n,t,i,r,u){return e(n,t,i,IFCConst.IFC_DATATYPE_DATA,IFCConst.IFC_SIGNTYPE_PKCS7ATTACHED,r,u)};i&&(this.verifyDataCmsAttached=function(n,t,i){return o(n,t,IFCConst.IFC_SIGNTYPE_PKCS7ATTACHED,"",IFCConst.IFC_DATATYPE_DATA,"",i)});this.signDataCmsDetached=function(n,t,i,r,u){return e(n,t,i,IFCConst.IFC_DATATYPE_DATA,IFCConst.IFC_SIGNTYPE_PKCS7DETACHED,r,u)};i&&(this.verifyDataCmsDetached=function(n,t,i,r){return o(n,t,IFCConst.IFC_SIGNTYPE_PKCS7DETACHED,i,IFCConst.IFC_DATATYPE_DATA,"",r)});this.signDataSimple=function(n,t,i,r,u){return e(n,t,i,IFCConst.IFC_DATATYPE_DATA,IFCConst.IFC_SIGNTYPE_SIMPLE,r,u)};i&&(this.verifyDataSimple=function(n,t,i,r,u){return o(n,t,IFCConst.IFC_SIGNTYPE_SIMPLE,i,IFCConst.IFC_DATATYPE_DATA,r,u)});this.signHashSimple=function(n,t,i,r,u){return e(n,t,i,IFCConst.IFC_DATATYPE_HASH_BASE64,IFCConst.IFC_SIGNTYPE_SIMPLE,r,u)};i&&(this.verifyHashSimple=function(n,t,i,r,u){return o(n,t,IFCConst.IFC_SIGNTYPE_SIMPLE,i,IFCConst.IFC_DATATYPE_HASH_BASE64,r,u)});this.signDataSimpleReversed=function(n,t,i,r,u){return e(n,t,i,IFCConst.IFC_DATATYPE_DATA,IFCConst.IFC_SIGNTYPE_SIMPLE_REVERSE,r,u)};i&&(this.verifyDataSimpleReversed=function(n,t,i,r,u){return o(n,t,IFCConst.IFC_SIGNTYPE_SIMPLE_REVERSE,i,IFCConst.IFC_DATATYPE_DATA,r,u)});this.signDataBase64CmsAttached=function(n,t,i,r,u){return e(n,t,i,IFCConst.IFC_DATATYPE_DATA_BASE64,IFCConst.IFC_SIGNTYPE_PKCS7ATTACHED,r,u)};this.signDataBase64CmsDetached=function(n,t,i,r,u){return e(n,t,i,IFCConst.IFC_DATATYPE_DATA_BASE64,IFCConst.IFC_SIGNTYPE_PKCS7DETACHED,r,u)};i&&(this.verifyDataBase64CmsDetached=function(n,t,i,r){return o(n,t,IFCConst.IFC_SIGNTYPE_PKCS7DETACHED,i,IFCConst.IFC_DATATYPE_DATA_BASE64,"",r)});this.signDataHash64CmsDetached=function(n,t,i,r,u){return e(n,t,i,IFCConst.IFC_DATATYPE_HASH_BASE64,IFCConst.IFC_SIGNTYPE_PKCS7DETACHED,r,u)};i&&(this.verifyDataHash64CmsDetached=function(n,t,i,r){return o(n,t,IFCConst.IFC_SIGNTYPE_PKCS7DETACHED,i,IFCConst.IFC_DATATYPE_HASH_BASE64,"",r)});this.signDataBase64Simple=function(n,t,i,r,u){return e(n,t,i,IFCConst.IFC_DATATYPE_DATA_BASE64,IFCConst.IFC_SIGNTYPE_SIMPLE,r,u)};i&&(this.verifyDataBase64Simple=function(n,t,i,r,u){return o(n,t,IFCConst.IFC_SIGNTYPE_SIMPLE,i,IFCConst.IFC_DATATYPE_DATA_BASE64,r,u)});this.generateKeyPairAndCsrForContainerId=function(n,t,i,r){return ot(n,t,i,r)};this.generateKeyPairAndCsrForContainerIdV2=function(n,t,i,r,u){return v(n,t,i,r,u)};i&&(this.makeSelfSignedCert=function(n,t,i,r){return st(n,t,i,r)});this.generateKeyPairAndCsr=function(n,t,i,r){return ht(n,t,i,r)};this.generateKeyPairAndCsrV2=function(n,t,i,r,u){return g(n,t,i,r,u)};this.putCertificate=function(n,t,i,r){return yt(n,t,i,r)};this.deleteContainer=function(n,t,i){return nt(n,t,i)};this.getGuid=function(n){return d(n)};this.setGuidPrefix=function(n){l=n};this.getGuidPrefix=function(){return l};this.getCertificate=function(n,t){return vt(n,t)};this.getCertificateFromString=function(n,t){return at(n,t)};this.getHash=function(n,t,i){return w(n,IFCConst.IFC_DATATYPE_DATA,t,i)};this.getHashFromBase64=function(n,t,i){return w(n,IFCConst.IFC_DATATYPE_DATA_BASE64,t,i)};this.encrypt=function(n,t,i,r,u){return pt(n,t,i,r,u)};this.decrypt=function(n,t,i,r,u,f){return wt(n,t,i,r,u,f)};this.pkcs11Init=function(n,t,i,r,u){return bt(n,t,i,r,u)};this.pkcs11ChangeUserPin=function(n,t,i,r){return kt(n,t,i,r)};this.pkcs11UnlockUserPin=function(n,t,i){return dt(n,t,i)};this.pkcs11ChangeAdminPin=function(n,t,i,r){return gt(n,t,i,r)};this.pkcs11RenameContainer=function(n,t,i,r){return tt(n,t,i,r)};this.pkcs11MoveContainer=function(n,t,i,r){return ni(n,t,i,r)};this.sendAPDU=function(n,t,i){return ti(n,t,i)}}function IFCCrypto(n){this.getAlias=function(){return IFCConst.emptyString(n.alias)};this.getName=function(){return IFCConst.emptyString(n.name)};this.isPKCS11=function(){return n.type==IFCConst.IFC_CRYPTO_PKCS11};this.isCAPI=function(){return n.type==IFCConst.IFC_CRYPTO_CAPI};this.isCAPI_LINUX=function(){return n.type==IFCConst.IFC_CRYPTO_CAPI_LINUX};this.getPath=function(){return IFCConst.emptyString(n.path)};this.getNumber=function(){return IFCConst.emptyString(n.num)};this.getDescription=function(){return IFCConst.emptyString(n.description)};this.getSerialNumber=function(){return IFCConst.emptyString(n.serial_number)};this.getModel=function(){return IFCConst.emptyString(n.model)};this.getSkipPKCS11List=function(){return IFCConst.emptyString(n.skip_pkcs11_list)};this.getAlg=function(){return IFCConst.emptyString(n.alg)};this.getCryptoId=function(){return n.type==IFCConst.IFC_CRYPTO_PKCS11?n.crypto_id=n.alias+"/"+n.num:(n.type==IFCConst.IFC_CRYPTO_CAPI||n.type==IFCConst.IFC_CRYPTO_CAPI_LINUX)&&(n.crypto_id=n.alias),IFCConst.emptyString(n.crypto_id)};this.getExtendedKeyUsage=function(){var n="";switch(this.getAlias()){case"JaCarta":n="1.2.643.3.205.110.1";break;case"ruTokenECP":n="1.2.643.3.205.110.7";break;case"CryptoPro":n="1.2.643.3.205.110.2";break;case"VIPNet":n="1.2.643.3.205.110.6";break;case"SignalCom":n="1.2.643.3.205.110.8";break;case"LISSI-CSP":n="1.2.643.3.205.110.9";break;default:n=""}return n};this.getCertificatePolicies=function(){var n="";switch(this.getAlias()){case"JaCarta":n=IFCConst.OID_KC1+","+IFCConst.OID_KC2;break;case"ruTokenECP":n=IFCConst.OID_KC1+","+IFCConst.OID_KC2;break;case"CryptoPro":n=IFCConst.OID_KC1;break;case"VIPNet":n=IFCConst.OID_KC1;break;case"SignalCom":n=IFCConst.OID_KC1;break;default:n=IFCConst.OID_KC1}return n}}function IFCCertificate(n,t){this.getSerialNumber=function(){return IFCConst.emptyString(n.cert_sn)};this.getSubjectDN=function(){return new IFCDN(IFCConst.emptyString(n.cert_subject),IFCConst.DN_SEPARATOR_PLUGIN)};this.getIssuerDN=function(){return new IFCDN(IFCConst.emptyString(n.cert_issuer),IFCConst.DN_SEPARATOR_PLUGIN)};this.getValidFrom=function(){return IFCConst.emptyString(this.checkDate(n.cert_valid_from))};this.getValidTo=function(){return IFCConst.emptyString(this.checkDate(n.cert_valid_to))};this.getSignAndDigestAlgUri=function(){var n=this.getSignAlgOid();return n===IFCConst.OID_GOSTR3410_2012_256?{signMethod:"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411",digestMethod:"http://www.w3.org/2001/04/xmldsig-more#gostr3411"}:n===IFCConst.OID_GOSTR3410_2012_512?{signMethod:"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411",digestMethod:"http://www.w3.org/2001/04/xmldsig-more#gostr3411"}:n===IFCConst.OID_GOSTR3410_2001?{signMethod:"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411",digestMethod:"http://www.w3.org/2001/04/xmldsig-more#gostr3411"}:{signMethod:"",digestMethod:""}};this.getSignAlg=function(){var n=this.getSignAlgOid();return n==IFCConst.OID_GOSTR3410_2001?"gost_2001":n==IFCConst.OID_GOSTR3410_2012_256?"gost_2012_256":n==IFCConst.OID_GOSTR3410_2012_512?"gost_2012_512":""};this.getSignAlgOid=function(){return IFCConst.emptyString(n.cert_sign_alg)};this.isValid=function(){var n=new Date,t=new Date(this.getValidTo());return n<t};this.getId=function(){return IFCConst.emptyString(n.id)};this.getContainerId=function(){return t.getCryptoId()+"/"+IFCConst.emptyString(n.id)};this.getCryptoId=function(){return t.getCryptoId()};this.isPKCS11=function(){return t.isPKCS11()};this.isCAPI=function(){return t.isCAPI()};this.isCAPI_LINUX=function(){return t.isCAPI_LINUX()};this.checkDate=function(n){return isNaN(new Date(n).getTime())?n.replace(/([a-z]*\s\d{1,2}\s)((?:\d{2}:?){3})\s(\d{4}\s)(.*)/i,"$1$3$2$4"):n}}function IFCCertificateInfo(n){this.getSerialNumber=function(){return IFCConst.emptyString(n.cert_sn)};this.getSubjectDN=function(){return new IFCDN(IFCConst.emptyString(n.cert_subject),IFCConst.DN_SEPARATOR_PLUGIN)};this.getIssuerDN=function(){return new IFCDN(IFCConst.emptyString(n.cert_issuer),IFCConst.DN_SEPARATOR_PLUGIN)};this.getValidFrom=function(){return IFCConst.emptyString(this.checkDate(n.cert_valid_from))};this.getValidTo=function(){return IFCConst.emptyString(this.checkDate(n.cert_valid_to))};this.getSignAndDigestAlgUri=function(){var n=this.getSignAlgOid();return n===IFCConst.OID_GOSTR3410_2012_256?{signMethod:"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411",digestMethod:"http://www.w3.org/2001/04/xmldsig-more#gostr3411"}:n===IFCConst.OID_GOSTR3410_2012_512?{signMethod:"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411",digestMethod:"http://www.w3.org/2001/04/xmldsig-more#gostr3411"}:n===IFCConst.OID_GOSTR3410_2001?{signMethod:"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411",digestMethod:"http://www.w3.org/2001/04/xmldsig-more#gostr3411"}:{signMethod:"",digestMethod:""}};this.getSignAlg=function(){var n=this.getSignAlgOid();return n==IFCConst.OID_GOSTR3410_2001?"gost_2001":n==IFCConst.OID_GOSTR3410_2012_256?"gost_2012_256":n==IFCConst.OID_GOSTR3410_2012_512?"gost_2012_512":""};this.getSignAlgOid=function(){return IFCConst.emptyString(n.cert_sign_alg)};this.isValid=function(){var n=new Date,t=new Date(this.getValidTo());return n<t};this.getBase64=function(){return IFCConst.emptyString(n.base64)};this.getPem=function(){return IFCConst.emptyString(n.pem)};this.getVersion=function(){return IFCConst.emptyString(n.version)};this.getExtensionsString=function(){return IFCConst.emptyString(n.extensions)};this.getPrintableText=function(){return this.getPrintable("\n","\t",", ")};this.getPrintableHTML=function(){return this.getPrintable("<br />","&nbsp;&nbsp;",", ")};this.getPrintable=function(n,t,i){n||(n="\n");t||(t="\t");i||(i=", ");var r="Номер квалифицированного сертификата: "+this.getSerialNumber()+n+"Действие квалифицированного сертификата:"+n+t+t+"с "+this.getValidFrom()+n+t+t+"по "+this.getValidTo()+n+n+t+"Сведения о владельце квалифицированного сертификата"+n+n+"Фамилия, имя, отчество: "+this.getSubjectDN().getCommonName()+n+"Страховой номер индивидуального лицевого счета: "+this.getSubjectDN().getSNILS()+n+n+t+"Сведения об издателе квалифицированного сертификата"+n+n+"Наименование  удостоверяющего  центра: "+this.getIssuerDN().getCommonName()+n+"Место  нахождения  удостоверяющего центра: "+this.getIssuerDN().getCountryName()+i+this.getIssuerDN().getStateOrProvinceName()+i+this.getIssuerDN().getLocalityName()+i+this.getIssuerDN().getStreetAddress()+n;return r+=this.getIssuerDN().getSurname()?"Доверенное лицо удостоверяющего центра: "+this.getIssuerDN().getSurname():this.getIssuerDN().getGivenName()?i+this.getIssuerDN().getGivenName()+n:n,r+(t+"Расширения сертификата"+n+n+this.getExtensionsString().replace(/(\r\n|\n|\r)/gm,n).replace(/^\s+/mg,t))};this.checkDate=function(n){return isNaN(new Date(n).getTime())?n.replace(/([a-z]*\s\d{1,2}\s)((?:\d{2}:?){3})\s(\d{4}\s)(.*)/i,"$1$3$2$4"):n}}function IFCDN(n,t){var u=function(n){switch(n.toLowerCase()){case"commonname":case"cn":return IFCConst.OID_COMMON_NAME;case"surname":return IFCConst.OID_SURNAME;case"givenname":return IFCConst.OID_GIVEN_NAME;case"countryname":case"c":return IFCConst.OID_COUNTRY_NAME;case"stateorprovincename":return IFCConst.OID_STATE_OR_PROVINCE_NAME;case"localityname":case"l":return IFCConst.OID_LOCALITY_NAME;case"streetaddress":case"street":return IFCConst.OID_STREET_ADDRESS;case"organizationname":case"o":return IFCConst.OID_ORGANIZATION_NAME;case"organizationunitname":case"ou":return IFCConst.OID_ORGANIZATION_UNIT_NAME;case"title":return IFCConst.OID_TITLE;case"emailaddress":case"email":return IFCConst.OID_EMAIL_ADDRESS;case"ogrn":return IFCConst.OID_OGRN;case"snils":return IFCConst.OID_SNILS;case"inn":return IFCConst.OID_INN;default:return n}},f=n.split("\\,").join("[escaped_comma]").split(t),r,i,e,o;for(this.dnData={},r=0;r<f.length;r++)i=f[r].split("="),i[1]==null&&(i[1]=""),e=i[0].trim(),o=i[1].trim().split("[escaped_comma]").join(","),this.dnData[u(e)]=o;this.getCommonName=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_COMMON_NAME])};this.getSurname=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_SURNAME])};this.getGivenName=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_GIVEN_NAME])};this.getCountryName=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_COUNTRY_NAME])};this.getStateOrProvinceName=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_STATE_OR_PROVINCE_NAME])};this.getLocalityName=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_LOCALITY_NAME])};this.getStreetAddress=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_STREET_ADDRESS])};this.getOrganizationName=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_ORGANIZATION_NAME])};this.getOrganizationUnitName=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_ORGANIZATION_UNIT_NAME])};this.getTitle=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_TITLE])};this.getEmailAddress=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_EMAIL_ADDRESS])};this.getOGRN=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_OGRN])};this.getSNILS=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_SNILS])};this.getINN=function(){return IFCConst.emptyString(this.dnData[IFCConst.OID_INN])};this.getValueByOid=function(n){return IFCConst.emptyString(this.dnData[u(n)])};this.getSubjectArray=function(){var n={},t=0,i;for(i in this.dnData)t++,n["oid_"+t]=i,n["oid_type_"+t]=IFCConst.getDNDataType(i),n["value_"+t]=this.dnData[i];return n.oids_count=t,n};this.getOneLine=function(){var n="";return this.getCountryName()&&(n+="c="+this.getCountryName()+", "),this.getStateOrProvinceName()&&(n+="stateorprovincename="+this.getStateOrProvinceName()+", "),this.getLocalityName()&&(n+="l="+this.getLocalityName()+", "),this.getCommonName()&&(n+="cn="+this.getCommonName()+", "),this.getSurname()&&(n+="surname="+this.getSurname()+", "),this.getGivenName()&&(n+="givenname="+this.getGivenName()+", "),this.getStreetAddress()&&(n+="street="+this.getStreetAddress()+", "),this.getOrganizationName()&&(n+="o="+this.getOrganizationName()+", "),this.getOrganizationUnitName()&&(n+="ou="+this.getOrganizationUnitName()+", "),this.getTitle()&&(n+="title="+this.getTitle()+", "),this.getEmailAddress()&&(n+="email="+this.getEmailAddress()+", "),this.getOGRN()&&(n+="ogrn="+this.getOGRN()+", "),this.getSNILS()&&(n+="snils="+this.getSNILS()+", "),this.getINN()&&(n+="inn="+this.getINN()+", "),n.substring(0,n.length-2)}}function IFCCertificateRequest(n,t){this.getContainerId=function(){return n};this.getCsr=function(){return t}}function IFCEncrypted(n,t,i){this.getData=function(){return n};this.getKey=function(){return t};this.getCertificate=function(){return i}}function IFCHash(n){this.getBase64=function(){return n};this.getHexBinary=function(){return i(t(n))};this.getPlainData=function(){return t(n)};var t=function(n){var e={},t,o=[],s="",h=String.fromCharCode,r=[[65,91],[97,123],[48,58],[43,44],[47,48]];for(z in r)for(t=r[z][0];t<r[z][1];t++)o.push(h(t));for(t=0;t<64;t++)e[o[t]]=t;for(t=0;t<n.length;t+=72)for(var u=0,c,f=0,l=n.substring(t,t+72),i=0;i<l.length;i++)for(c=e[l.charAt(i)],u=(u<<6)+c,f+=6;f>=8;)s+=h((u>>>(f-=8))%256);return s},i=function(n){for(var i=[],r,u="",t=0,f=n.length;t<f;++t)r=n.charCodeAt(t),i.push((r>>4).toString(16),(r&15).toString(16));for(String.prototype.concat.apply("",i),t=0;t<i.length;t++)u+=i[t];return u}}var IFCConst={IFC_DATATYPE_DATA:1,IFC_DATATYPE_DATA_BASE64:2,IFC_DATATYPE_HASH:3,IFC_DATATYPE_HASH_BASE64:4,IFC_DATATYPE_FILENAME:5,IFC_CRYPTO_PKCS11:"pkcs11",IFC_CRYPTO_CAPI:"capi",IFC_CRYPTO_CAPI_LINUX:"capi_linux",OID_COMMON_NAME:"2.5.4.3",OID_SURNAME:"2.5.4.4",OID_GIVEN_NAME:"2.5.4.42",OID_COUNTRY_NAME:"2.5.4.6",OID_STATE_OR_PROVINCE_NAME:"2.5.4.8",OID_LOCALITY_NAME:"2.5.4.7",OID_STREET_ADDRESS:"2.5.4.9",OID_ORGANIZATION_NAME:"2.5.4.10",OID_ORGANIZATION_UNIT_NAME:"2.5.4.11",OID_TITLE:"2.5.4.12",OID_EMAIL_ADDRESS:"1.2.840.113549.1.9.1",OID_OGRN:"1.2.643.100.1",OID_SNILS:"1.2.643.100.3",OID_INN:"1.2.643.3.131.1.1",OID_KC1:"1.2.643.100.113.1",OID_KC2:"1.2.643.100.113.2",OID_KC3:"1.2.643.100.113.3",OID_GOSTR3410_2001:"1.2.643.2.2.19",OID_GOSTR3410_2012_256:"1.2.643.7.1.1.1.1",OID_GOSTR3410_2012_512:"1.2.643.7.1.1.1.2",DN_SEPARATOR_PLUGIN:"\n",DN_SEPARATOR_INPUT:",",IFC_CERT_LOAD_FROM_CONTAINER:1,IFC_CERT_LOAD_FROM_FILE:2,IFC_CERT_LOAD_FROM_STRING:3,IFC_SIGNTYPE_SIMPLE:1,IFC_SIGNTYPE_SIMPLE_REVERSE:2,IFC_SIGNTYPE_PKCS7ATTACHED:3,IFC_SIGNTYPE_PKCS7DETACHED:4,IFC_HARDWARE_HASH:1,IFC_SOFTWARE_HASH:2,IFC_BASE64:1,IFC_RAW:0,IFC_X509_INFO_CERT_BASE64ENCODED:1,IFC_X509_INFO_CERT_DER:2,IFC_X509_INFO_CERT_VERSION:3,IFC_X509_INFO_CERT_SERIALNUMBER:4,IFC_X509_INFO_CERT_SUBJECT:5,IFC_X509_INFO_CERT_ISSUER:6,IFC_X509_INFO_CERT_VALIDFROM:7,IFC_X509_INFO_CERT_VALIDTO:8,IFC_X509_INFO_CERT_X509EXTENSIONS:9,IFC_X509_INFO_CERT_PEM:10,IFC_X509_INFO_CERT_ALG:11,IFC_CERT_UNKNOWN:0,IFC_CERT_DER:1,IFC_CERT_BASE64:2,IFC_CERT_PEM:3,IFC_REQ_DER:0,IFC_REQ_PEM:1,IFC_REQ_BASE64ENCODED:2,P11_PIN_TYPE_USER:0,P11_PIN_TYPE_ADMIN:1,IFC_PRINTABLE_STRING:19,IFC_IA5STRING:22,IFC_NUMERICSTRING:18,IFC_UTF8STRING:12,IFC_OCTET_STRING:4,IFC_BMPSTRING:30,APDU_FORMAT_RAW:0,APDU_FORMAT_TEXT:1,SHOW_SAFETOUCH:0,getDNDataType:function(n){var t;switch(n){case this.OID_COUNTRY_NAME:t=this.IFC_PRINTABLE_STRING;break;case this.OID_SNILS:case this.OID_OGRN:case this.OID_INN:t=this.IFC_NUMERICSTRING;break;case this.OID_EMAIL_ADDRESS:t=this.IFC_IA5STRING;break;default:t=IFCConst.IFC_UTF8STRING}return t},emptyString:function(n){return n==undefined||n==null?"":n}},IFCError={IFC_GENERAL_ERROR:-1,IFC_OK:0,IFC_ERROR_UNKNOWN:1,IFC_ERROR_CONFIG:2,IFC_ERROR_RECORD_MAX:3,IFC_ERROR_CONFIG_EMPTY:4,IFC_BAD_PARAMS:5,IFC_ERROR_MALLOC:6,IFC_ALIAS_NOT_FOUND:7,IFC_ERROR_STORE:8,IFC_CERT_NOT_FOUND:9,IFC_CONTAINER_NOT_FOUND:10,IFC_UNSUPPORTED_FORMAT:11,IFC_KEY_NOT_FOUND:12,IFC_BAD_IN_TYPE:13,IFC_BAD_SIGN_TYPE:14,IFC_BAD_HASH_CONTEXT:15,IFC_BAD_TYPE_PIN:16,IFC_NOT_SUPPORTED:17,IFC_SLOT_NOT_INIT:18,IFC_ERROR_VERIFY:19,IFC_ERROR_BASE64:20,IFC_SC_ERROR:21,IFC_ENGINE_ERROR:22,IFC_P11_ERROR:23,IFC_P11_NO_TOKENS_FOUND:25,IFC_PARSE_XML_ERROR:26,IFC_XPATH_ERROR:27,IFC_CANON_XML_ERROR:28,IFC_P11_LOGIN_ERROR:160,IFC_UNICODE_ERROR:161,IFC_ENCODINGS_ERROR:162,IFC_INIT_ERROR:163,IFC_CRYPTO_NOT_FOUND:164,IFC_PLUGIN_UNDEFINED_ERROR:256,IFC_P11_INVALID_PIN_ERROR:257,getErrorDescription:function(n){switch(n){case IFCError.IFC_GENERAL_ERROR:return"Общая ошибка";case IFCError.IFC_OK:return"Операция завершена успешно";case IFCError.IFC_ERROR_UNKNOWN:return"Ошибка не определена";case IFCError.IFC_ERROR_CONFIG:return"Ошибка конфигурации";case IFCError.IFC_ERROR_RECORD_MAX:return"Достигнуто максимальное количество записей конфигурации";case IFCError.IFC_ERROR_CONFIG_EMPTY:return"Конфигурация не опеределена";case IFCError.IFC_BAD_PARAMS:return"Параметры заданы неверно";case IFCError.IFC_ERROR_MALLOC:return"Ошибка выделения памяти";case IFCError.IFC_ALIAS_NOT_FOUND:return"Указанный поставщик криптографии не найден";case IFCError.IFC_ERROR_STORE:return"Ошибка работы с хранилищем";case IFCError.IFC_CERT_NOT_FOUND:return"Сертификат не найден";case IFCError.IFC_CONTAINER_NOT_FOUND:return"Ключевой контейнер не найден";case IFCError.IFC_UNSUPPORTED_FORMAT:return"Формат не поддерживается";case IFCError.IFC_KEY_NOT_FOUND:return"Ключ не найден";case IFCError.IFC_BAD_IN_TYPE:return"Тип входных данных задан неверно";case IFCError.IFC_BAD_SIGN_TYPE:return"Тип электронной подписи задан неверно";case IFCError.IFC_BAD_HASH_CONTEXT:return"Контекст хеширования не найден";case IFCError.IFC_BAD_TYPE_PIN:return"Тип пин-кода задан неверно";case IFCError.IFC_NOT_SUPPORTED:return"Операция не поддерживается";case IFCError.IFC_SLOT_NOT_INIT:return"Слот не инициализирован";case IFCError.IFC_ERROR_VERIFY:return"Ошибка проверки подписи";case IFCError.IFC_ERROR_BASE64:return"Ошибка кодировки BASE64";case IFCError.IFC_SC_ERROR:return"Ошибка подсистемы смарт-карт";case IFCError.IFC_ENGINE_ERROR:return"Ошибка работы с библиотеки интерфейса";case IFCError.IFC_P11_ERROR:return"Ошибка работы с библиотекой PKCS#11";case IFCError.IFC_P11_NO_TOKENS_FOUND:return"Смарт-карта не найдена";case IFCError.IFC_PARSE_XML_ERROR:return"Ошибка парсинга XML";case IFCError.IFC_XPATH_ERROR:return"Ошибка выполнения XPath";case IFCError.IFC_CANON_XML_ERROR:return"Ошибка канонизации XML";case IFCError.IFC_P11_LOGIN_ERROR:return"Неверный пин-код";case IFCError.IFC_UNICODE_ERROR:return"Ошибка работы с UNICODE";case IFCError.IFC_ENCODINGS_ERROR:return"Ошибка кодировки";case IFCError.IFC_INIT_ERROR:return"Ошибка инициализации плагина";case IFCError.IFC_CRYPTO_NOT_FOUND:return"СКЗИ не найдено";case IFCError.IFC_PLUGIN_UNDEFINED_ERROR:return"Ошибка инициализации объекта плагина";case IFCError.IFC_P11_INVALID_PIN_ERROR:return"Пин-код не соответствует требованиям";default:return"Неизвестная ошибка"}}};typeof String.prototype.trim!="function"&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),function(n){var t=function(){var n,o=function(){var i="ifcplugin",u=$('<object type="application/x-ifcplugin" id="'+i+'"><\/object>'),t;if($("body").append(u),t=u.get(0)?u.get(0):document.getElementById(i),t.valid&&(typeof t.create=="function"||typeof t.create=="object"))if(t.create()==0)n=t;else{r(i);throw"ds_plugin_internal";}else{r(i);throw"ds_plugin_not_found";}},r=function(n){var t=document.getElementById(n);t&&t.parentNode&&t.parentNode.removeChild(t)},t=function(n){var i=n.split(" "),t=[],r;for(r in i)i[r]&&i[r]!=" "&&t.push(i[r]);return new Date(t[0]+" "+t[1]+" "+t[3]+" "+t[2]+" "+t[4])},u=function(n){var t=n.getUTCDate(),i=n.getUTCMonth()+1,r=n.getUTCFullYear();return(t>9?t:"0"+t)+"."+(i>9?i:"0"+i)+"."+r},i=function(n){switch(n.type){case"capi":return n.alias;case"pkcs11":return n.alias+"/"+n.num;default:return n.crypto_id}},f=function(n){for(var r={},u=n.split("\n"),i,t=0;t<u.length;t++)i=u[t].split("="),r[$.trim(i[0]).toLocaleLowerCase()]=$.trim(i[1]);return r},s=function(t){var i=[];if(n.info_x509(n.load_x509_from_container(t),1,i),n.get_last_error()!=0)throw"ds_plugin_internal";return i.info},h=function(n,r){var e={validity:{},issuer:{},subject:{},sort:{},filter:{}},o=f(n.cert_subject),h=f(n.cert_issuer);return e.id=i(r)+"/"+n.id,e.serial_number=n.cert_sn,e.validity.from=u(t(n.cert_valid_from)),e.validity.to=u(t(n.cert_valid_to)),e.issuer.common_name=h.commonname!=undefined?h.commonname:h.cn,e.subject.common_name=o.commonname!=undefined?o.commonname:o.cn,e.subject.sn=o.surname!=undefined&&o.surname!=null?o.surname:"",e.subject.gn=o.givenname!=undefined&&o.givenname!=null?o.givenname:"",e.string=s(e.id),e.type=e.subject.sn.length>0?"extended":"base",e.sort.from=t(n.cert_valid_from),e.filter.to=t(n.cert_valid_to),e.filter.csp_type=r.type,e.issuer.common_name!=undefined&&e.issuer.common_name&&(e.issuer.common_name=e.issuer.common_name.replace("_"," ")),e.subject.common_name!=undefined&&e.subject.common_name&&(e.subject.common_name=e.subject.common_name.replace("_"," ")),e.subject.sn!=undefined&&e.subject.sn&&(e.subject.sn=e.subject.sn.replace("_"," ")),e.subject.gn!=undefined&&e.subject.gn&&(e.subject.gn=e.subject.gn.replace("_"," ")),e},c=function(){return n.version},e=function(){var f=[],c=n.get_list_info_size(),t,r,o,s,u,e;if(n.get_last_error()!=0)throw"ds_plugin_internal";for(t=0;t<c;t++){if(r=[],n.get_list_info(t,r),n.get_last_error()!=0)throw"ds_plugin_internal";if(o=i(r),s=n.get_list_certs_size(o),n.get_last_error()!=0)throw"ds_plugin_internal";for(u=0;u<s;u++){if(e=[],n.get_list_certs(u,e),n.get_last_error()!=0)throw"ds_plugin_internal";f.push(h(e,r))}}return f.sort(function(n,t){return n.sort.from<t.sort.from?1:n.sort.from>t.sort.from?-1:0}),$(f).filter(function(){return this.filter.to>=new Date})},l=function(n){for(var i=e(),t=0;t<i.length;t++)if(i[t].id==n)return i[t];throw"ds_plugin_container_not_found";},a=function(n){return n.indexOf("CryptoPro")>=0||n.indexOf("VIPNet")>=0?n.substring(0,n.indexOf("/")):n.substring(0,n.lastIndexOf("/"))},v=function(t){var f=a(t),e=n.get_list_info_size(),r,u;if(n.get_last_error()!=0)throw"ds_plugin_internal";for(r=0;r<e;r++){if(u=[],n.get_list_info(r,u),n.get_last_error()!=0)throw"ds_plugin_internal";if(f==i(u))return u.type=="pkcs11"}throw"ds_plugin_container_not_found";},y=function(t,i,r){var u=[];n.sign(t,i,{data:r},1,1,1,1,u);switch(n.get_last_error()){case 0:return u.sign_base64;case 1:throw"ds_plugin_process_interrupted";case 25:throw"ds_plugin_container_not_found";case 160:throw"ds_plugin_bad_pin";default:throw"ds_plugin_internal";}};return function(){return n||o(),{version:c,crts:e,crt_info:l,is_pin_required:v,sign:y}}}();n.ds_widget=function(i){var e,o,f=$.extend(!0,{},{exclude_etk:!1,onlyJacarta:!0,stPin:!1,signType:"signDataCmsAttached",language:"ru"},i),v=n.ds_widget_translate,a,d={ru:{"dsw.cnf.dlg.select.opt.title":"Выбор сертификата ключа проверки электронной подписи","dsw.cnf.dlg.select.opt.close":"Закрыть","dsw.cnf.dlg.select.tmp.body.btn.cancel":"Отмена","dsw.cnf.dlg.select.tmp.item.issuer":"Издатель:","dsw.cnf.dlg.select.tmp.item.subject":"Кому выдан:","dsw.cnf.dlg.select.tmp.item.validity":"Действителен:","dsw.cnf.dlg.select.tmp.item.validity_from":"с","dsw.cnf.dlg.select.tmp.item.validity_to":"по","dsw.cnf.dlg.select.tmp.empty.crt_not_found":"У вас нет действующих сертификатов.<br/><br/>Убедитесь, что адрес "+f.dswidgetConfigs.dswidget_config_esia_host+" добавлен в список надёжных узлов (только для браузера Internet Explorer). Для этого необходимо:<br/>- зайти в «Свойства обозревателя»;<br/>- выбрать закладку «Безопасность»;<br/>- выбрать зону для настройки параметров безопасности – «Надежные узлы», нажать на кнопку «Узлы»;<br/>- в поле «Добавить в зону следующий узел» ввести адрес "+f.dswidgetConfigs.dswidget_config_esia_host+", нажать «Добавить» и закрыть данное окно.","dsw.cnf.dlg.pin.opt.title":"Ввод пин-кода","dsw.cnf.dlg.pin.opt.close":"Закрыть","dsw.cnf.dlg.pin.bad_pin":"Введён неверный пин-код","dsw.cnf.dlg.pin.tmp.title":"Введите пин-код для своего сертификата электронной подписи:","dsw.cnf.dlg.pin.tmp.issuer":"Издатель:","dsw.cnf.dlg.pin.tmp.subject":"Кому выдан:","dsw.cnf.dlg.pin.tmp.validity":"Действителен:","dsw.cnf.dlg.pin.tmp.validity_from":"с","dsw.cnf.dlg.pin.tmp.validity_to":"по","dsw.cnf.dlg.pin.tmp.pin_input_label":"Пин-код","dsw.cnf.dlg.pin.tmp.btn.continue":"Продолжить","dsw.cnf.dlg.pin.tmp.btn.cancel":"Отмена","dsw.cnf.dlg.nf.opt.title":"Ошибка: не установлен плагин","dsw.cnf.dlg.nf.opt.close":"Закрыть","dsw.cnf.dlg.nf.tmp.step_list_title":"Для входа с&nbsp;помощью электронной подписи необходимо:","dsw.cnf.dlg.nf.tmp.step_a":"Установить специальную программу&nbsp;&mdash; плагин для работы с&nbsp;электронной подписью на&nbsp;Портале государственных услуг. Для этого нажмите на&nbsp;ссылку <a href="+f.dswidgetConfigs.dswidget_config_plugin_upload+">Plugin для работы с электронной подписью<\/a>. При появлении диалогового окна с&nbsp;кнопками &laquo;Выполнить&raquo; и&nbsp;&laquo;Сохранить&raquo; выберите &laquo;Выполнить&raquo;. После установки плагина перезапустите браузер.","dsw.cnf.dlg.nf.tmp.step_b":"Присоединить к&nbsp;компьютеру носитель ключа электронной подписи (USB-ключ или смарт-карта). Должен быть вставлен только один носитель.<br />Средство электронной подписи можно получить в&nbsp;одном из&nbsp;аккредитованных Минкомсвязью России <a href="+f.dswidgetConfigs.dswidget_config_dlg_nf_tmp_step_c_minsvyaz+">удостоверяющих центров<\/a>.<br/>Примечание: Для некоторых носителей электронной подписи требуется установить специальную программу&nbsp;&mdash; криптопровайдер. Инструкцию по установке и настройке криптопровайдера можно получить в своем аккредитованном УЦ.","dsw.cnf.dlg.nf.tmp.step_c":"Добавить адреса *."+f.dswidgetConfigs.dswidget_config_esia_host+" в список надёжных узлов (только для браузера Internet Explorer). Для этого необходимо:<br/>- зайти в «Свойства обозревателя»;<br/>- выбрать закладку «Безопасность»;<br/>- выбрать зону для настройки параметров безопасности – «Надежные узлы», нажать на кнопку «Узлы»;<br/>- в поле «Добавить в зону следующий узел» ввести адрес "+f.dswidgetConfigs.dswidget_config_esia_host+", нажать «Добавить» и закрыть данное окно.","dsw.cnf.dlg.nf.tmp.step_d":"Включить/разрешить доступ плагину согласно рекомендациям <a href="+f.dswidgetConfigs.dswidget_config_plugin_inst_instruction_upload+">документа<\/a>.","dsw.cnf.dlg.nf.tmp.btn.close":"Закрыть","dsw.cnf.dlg.old.opt.title":"Ошибка: старая версия плагина","dsw.cnf.dlg.old.opt.close":"Закрыть","dsw.cnf.dlg.old.tmp.msg_a":"У&nbsp;вас установлена старая версия плагина&nbsp;&mdash; специальной программы для работы с&nbsp;электронной подписью и&nbsp;УЭК в&nbsp;системах Электронного правительства.","dsw.cnf.dlg.old.tmp.msg_b":"Для корректной работы системы вам требуется установить новую версию.","dsw.cnf.dlg.old.tmp.msg_c":"Для этого нажмите на&nbsp;ссылку <a href="+f.dswidgetConfigs.dswidget_config_plugin_upload+">Plugin для работы с электронной подписью<\/a>.","dsw.cnf.dlg.old.tmp.msg_d":"При появлении диалогового окна с&nbsp;кнопками &laquo;Выполнить&raquo; и&nbsp;&laquo;Сохранить&raquo; &mdash;&nbsp;выберите &laquo;Выполнить&raquo;.<br />После установки плагина перезапустите браузер.","dsw.cnf.dlg.old.tmp.btn.close":"Закрыть","dsw.cnf.dlg.disclaimer.opt.title":"Обращение к средству электронной подписи","dsw.cnf.dlg.disclaimer.opt.close":"Закрыть","dsw.cnf.dlg.disclaimer.tmp.msg_a":"В&nbsp;настоящее время происходит обращение к средству электронной подписи. Этот процесс может занять около минуты.","dsw.cnf.dlg.disclaimer.tmp.msg_b":"Пожалуйста, подождите..."}},r=function(n){var t=f.language!=undefined&&f.language!=null?f.language:"ru",i=v!=undefined&&v!=null?v:d;return i[t]==undefined||i[t]==null?n:i[t][n]==undefined||i[t][n]==null?n:i[t][n]},u={dialog:{select_crt:{items_box:".datalist-block",empty_box:".content-eds",pager_box:".datalist-wrap",height_correction:".height-correction",cancel_button:"[ds-widget='cancel']",template:{body:'<div class="eds-select-dlg"><form><div class="content-eds"><div class="datalist-wrap"><div class="height-correction"><div class="datalist-block"><\/div><\/div><\/div><\/div><div class="buttons-group dialog"><button type="button" class="ui-button ui-widget ui-button-text-only button-cmd light" ds-widget="cancel"><span class="ui-button-text">'+r("dsw.cnf.dlg.select.tmp.body.btn.cancel")+"<\/span><\/button><\/div><\/form><\/div>",item:'<div class="datalist-item has-icon-arrow"><i class="icon-line-arrow"><\/i><span class="line fio"><b ds-widget="subject_common_name"><\/b><\/span><span class="line"><span class="label">'+r("dsw.cnf.dlg.select.tmp.item.issuer")+'<\/span>&nbsp;<span ds-widget="issuer_common_name"><\/span><\/span><span class="line" ds-widget="line_subject_sn"><span class="label">'+r("dsw.cnf.dlg.select.tmp.item.subject")+'<\/span>&nbsp;<span ds-widget="subject_sn"><\/span><\/span><span class="line"><span class="label">'+r("dsw.cnf.dlg.select.tmp.item.validity")+"<\/span>&nbsp;"+r("dsw.cnf.dlg.select.tmp.item.validity_from")+'&nbsp;<span ds-widget="validity_from"><\/span>&nbsp;'+r("dsw.cnf.dlg.select.tmp.item.validity_to")+'&nbsp;<span ds-widget="validity_to"><\/span><\/span><\/div>',empty:"<span>"+r("dsw.cnf.dlg.select.tmp.empty.crt_not_found")+"<\/span>"},options:{autoOpen:!1,title:r("dsw.cnf.dlg.select.opt.title"),dialogClass:"dialog-edsdlg",closeText:r("dsw.cnf.dlg.select.opt.close"),modal:!0,resizable:!1,draggable:!1},pager:{size:3,types:{base:81,extended:101},items_box:".pager-item.numbers",page_number_box:".pager-item.number",template:{body:'<div class="pager-block"><span class="pager-item arrow first">&laquo;<\/span><span class="pager-item arrow prev">&lsaquo;<\/span><span class="pager-item numbers"><\/span><span class="pager-item arrow next">&rsaquo;<\/span><span class="pager-item arrow last">&raquo;<\/span><\/div>',item:'<span class="pager-item number"><\/span>'}}},pin:{ok_button:"[ds-widget='ok']",cancel_button:"[ds-widget='cancel']",input:"[ds-widget='pin']",error_box:".ui-message-error-detail",bad_pin_text:r("dsw.cnf.dlg.pin.bad_pin"),template:'<div class="eds-pin-code-dlg"><form onsubmit="return false;"><div class="content-eds"><div class="eds-message"><p class="msg-title">'+r("dsw.cnf.dlg.pin.tmp.title")+'<\/p><div class="eds-info eds-info-pincode"><span class="line fio"><b ds-widget="subject_common_name"><\/b><\/span><span class="line"><span class="label">'+r("dsw.cnf.dlg.pin.tmp.issuer")+'<\/span>&nbsp;<span ds-widget="issuer_common_name"><\/span><\/span><span class="line" ds-widget="line_subject_sn"><span class="label">'+r("dsw.cnf.dlg.pin.tmp.subject")+'<\/span>&nbsp;<span ds-widget="subject_sn"><\/span><\/span><span class="line"><span class="label">'+r("dsw.cnf.dlg.pin.tmp.validity")+"<\/span>&nbsp;"+r("dsw.cnf.dlg.pin.tmp.validity_from")+'&nbsp;<span ds-widget="validity_from"><\/span>&nbsp;'+r("dsw.cnf.dlg.pin.tmp.validity_to")+'&nbsp;<span ds-widget="validity_to"><\/span><\/span><\/div><\/div><div class="data-form horizontal data-form-pincode"><dl><dt>'+r("dsw.cnf.dlg.pin.tmp.pin_input_label")+'<\/dt><dd><input type="password" class="ui-inputfield ui-inputtext ui-widget" ds-widget="pin"/><div class="field-error"><div class="ui-message-error ui-widget error-pin"><span class="ui-message-error-detail"><\/span><\/div><\/div><\/dd><\/dl><\/div><\/div><div class="buttons-group dialog"><button type="submit" class="ui-button ui-widget ui-button-text-icon-left button-cmd right" ds-widget="ok"><span class="ui-button-text">'+r("dsw.cnf.dlg.pin.tmp.btn.continue")+'<\/span><\/button><button type="button" class="ui-button ui-widget ui-button-text-only button-cmd light" ds-widget="cancel"><span class="ui-button-text">'+r("dsw.cnf.dlg.pin.tmp.btn.cancel")+"<\/span><\/button><\/div><\/form><\/div>",options:{autoOpen:!1,title:r("dsw.cnf.dlg.pin.opt.title"),dialogClass:"dialog-edsdlg",closeText:r("dsw.cnf.dlg.pin.opt.close"),modal:!0,resizable:!1,draggable:!1}},not_found:{ok_button:"[ds-widget='ok']",template:'<div><form><div class="content-eds"><div class="eds-message"><p class="msg-title">'+r("dsw.cnf.dlg.nf.tmp.step_list_title")+'<\/p><ol class="list"><li>'+r("dsw.cnf.dlg.nf.tmp.step_a")+"<\/li><li>"+r("dsw.cnf.dlg.nf.tmp.step_b")+"<\/li><li>"+r("dsw.cnf.dlg.nf.tmp.step_c")+"<\/li><li>"+r("dsw.cnf.dlg.nf.tmp.step_d")+'<\/li><\/ol><\/div><\/div><div class="buttons-group dialog"><button type="button" class="ui-button ui-widget ui-button-text-only button-cmd" ds-widget="ok"><span class="ui-button-text">'+r("dsw.cnf.dlg.nf.tmp.btn.close")+"<\/span><\/button><\/div><\/form><\/div>",options:{autoOpen:!1,title:r("dsw.cnf.dlg.nf.opt.title"),dialogClass:"dialog-edsdlg ui-overlay-visible",closeText:r("dsw.cnf.dlg.nf.opt.close"),modal:!0,resizable:!1,draggable:!1}},old_version:{ok_button:"[ds-widget='ok']",template:'<div><form><div class="content-eds"><div class="eds-message"><p>'+r("dsw.cnf.dlg.old.tmp.msg_a")+"<\/p><p>"+r("dsw.cnf.dlg.old.tmp.msg_b")+"<\/p><p>"+r("dsw.cnf.dlg.old.tmp.msg_c")+"<\/p><p>"+r("dsw.cnf.dlg.old.tmp.msg_d")+'<\/p><\/div><\/div><div class="buttons-group dialog"><button type="button" class="ui-button ui-widget ui-button-text-only button-cmd" ds-widget="ok"><span class="ui-button-text">'+r("dsw.cnf.dlg.old.tmp.btn.close")+"<\/span><\/button><\/div><\/form><\/div>",options:{autoOpen:!1,title:r("dsw.cnf.dlg.old.opt.title"),dialogClass:"dialog-edsdlg",closeText:r("dsw.cnf.dlg.old.opt.close"),modal:!0,resizable:!1,draggable:!1}},disclaimer:{delay:500,template:'<div class="eds-select-dlg"><form><div class="content-eds"><div class="eds-process"><p class="descr">'+r("dsw.cnf.dlg.disclaimer.tmp.msg_a")+'<\/p><p class="wait ajax-loader-bg middle">'+r("dsw.cnf.dlg.disclaimer.tmp.msg_b")+"<\/p><\/div><\/div><\/form><\/div>",options:{autoOpen:!1,title:r("dsw.cnf.dlg.disclaimer.opt.title"),dialogClass:"dialog-edsdlg",closeText:r("dsw.cnf.dlg.disclaimer.opt.close"),modal:!0,resizable:!1,draggable:!1}}}},s=function(n,t){switch(n){case"ds_plugin_not_found":t({code:"plugin_not_found"});break;case"ds_plugin_internal":t({code:"internal"});break;case"ds_plugin_container_not_found":t({code:"container_not_found"});break;case"ds_plugin_process_interrupted":t({code:"process_interrupted"});break;default:throw n;}},g=function(n){return n!=undefined&&n!=null?"000".substring(0,3-n.length)+n:"000"},y=function(n){for(var r=n!=undefined&&n!=null?n.split("."):[],i="1",t=0;t<4;t++)i=i+g(r[t]);return parseInt(i)},p=!1,w="",l=function(n,t,i,r){if(f.stPin&&p==!0){t(w);return}var s=!1,o=$(u.dialog.pin.template).dialog(u.dialog.pin.options),l=function(){if(p=!0,w=o.find(u.dialog.pin.input).val(),o.remove(),s){t(o.find(u.dialog.pin.input).val());return}i()},h=function(n){var t=new Date(n),i=t.getUTCDate(),r=t.getUTCMonth()+1,u=t.getUTCFullYear();return(i>9?i:"0"+i)+"."+(r>9?r:"0"+r)+"."+u},a=function(){s=!0;o.dialog("close");l()},v=function(){o.dialog("close");c()};e?(o.find("[ds-widget='subject_common_name']").html(n.getSubjectDN().getCommonName()),o.find("[ds-widget='issuer_common_name']").html(n.getIssuerDN().getCommonName()),o.find("[ds-widget='validity_from']").html(h(n.getValidFrom())),o.find("[ds-widget='validity_to']").html(h(n.getValidTo())),o.find("[ds-widget='subject_sn']").html(n.getSubjectDN().getSurname()+" "+n.getSubjectDN().getGivenName())):(o.find("[ds-widget='subject_common_name']").html(n.subject.common_name),o.find("[ds-widget='issuer_common_name']").html(n.issuer.common_name),o.find("[ds-widget='validity_from']").html(n.validity.from),o.find("[ds-widget='validity_to']").html(n.validity.to),o.find("[ds-widget='subject_sn']").html(n.type=="extended"?$.trim($.trim(n.subject.sn)+" "+$.trim(n.subject.gn)):""),n.type!="extended"&&o.find("[ds-widget='line_subject_sn']").hide());r!==""?(o.find(u.dialog.pin.error_box).text(r),o.find("[ds-widget='pin']").addClass("ui-state-error")):o.find("[ds-widget='pin']").removeClass("ui-state-error");o.find(u.dialog.pin.cancel_button).bind("click",v);o.find(u.dialog.pin.ok_button).bind("click",a);o.dialog("open")},nt=function(n,t,i){var s=-1,o=$(u.dialog.select_crt.template.body).dialog(u.dialog.select_crt.options);f.exclude_etk&&!e&&(n=$(n).filter(function(){return this.filter.csp_type!=="pkcs11"}));f.onlyJacarta&&(n=$(n).filter(function(){return this.getContainerId().indexOf("JaCarta",0)===0}));var l=function(){o.remove();s<0?i():t(s)},a=function(n){s=n.data.id;o.dialog("close")},v=function(){o.dialog("close");c()},h=function(n){var t=new Date(n),i=t.getUTCDate(),r=t.getUTCMonth()+1,u=t.getUTCFullYear();return(i>9?i:"0"+i)+"."+(r>9?r:"0"+r)+"."+u},y=function(t,i){var r,f;for(o.find(u.dialog.select_crt.items_box).html(""),r=t;r<i;r++)f=$(u.dialog.select_crt.template.item),e?(f.find("[ds-widget='issuer_common_name']").html(n[r].getIssuerDN().getCommonName()),f.find("[ds-widget='subject_common_name']").html(n[r].getSubjectDN().getCommonName()),f.find("[ds-widget='validity_from']").html(h(n[r].getValidFrom())),f.find("[ds-widget='validity_to']").html(h(n[r].getValidTo())),f.find("[ds-widget='subject_sn']").html(n[r].getSubjectDN().getSurname()+" "+n[r].getSubjectDN().getGivenName())):(f.find("[ds-widget='subject_common_name']").html(n[r].subject.common_name),f.find("[ds-widget='issuer_common_name']").html(n[r].issuer.common_name),f.find("[ds-widget='validity_from']").html(n[r].validity.from),f.find("[ds-widget='validity_to']").html(n[r].validity.to),f.find("[ds-widget='subject_sn']").html(n[r].type==="extended"?$.trim($.trim(n[r].subject.sn)+" "+$.trim(n[r].subject.gn)):""),n[r].type!=="extended"&&f.find("[ds-widget='line_subject_sn']").hide()),f.bind("click",{id:r},a),o.find(u.dialog.select_crt.items_box).append(f)},r={current_page:1,page_size:u.dialog.select_crt.pager.size,element:$(u.dialog.select_crt.pager.template.body),max_height:0,_set_max_height:function(n){r.max_height=r.max_height<n?n:r.max_height},_height_page:function(t){for(var f=0,e=(t-1)*r.page_size,o=n.length<t*r.page_size?n.length:t*r.page_size,i=e;i<o;i++)f=f+u.dialog.select_crt.pager.types[n[i].type];return f+(o-e)-1},_last_page:function(){return n.length%r.page_size>0?(n.length-n.length%r.page_size)/r.page_size+1:n.length/r.page_size},_first:function(){r.current_page=1;r._refresh()},_previous:function(){r.current_page=r.current_page>1?r.current_page-1:r.current_page;r._refresh()},_page:function(n){r.current_page=n.data.p;r._refresh()},_next:function(){r.current_page=n.length>r.current_page*r.page_size?r.current_page+1:r.current_page;r._refresh()},_last:function(){r.current_page=r._last_page();r._refresh()},_refresh:function(){r.element.find(".first").removeClass("disabled").unbind("click");r.element.find(".prev").removeClass("disabled").unbind("click");r.element.find(".next").removeClass("disabled").unbind("click");r.element.find(".last").removeClass("disabled").unbind("click");r.element.find(u.dialog.select_crt.pager.page_number_box).removeClass("active");r.current_page==1&&(r.element.find(".first").addClass("disabled"),r.element.find(".prev").addClass("disabled"),r.element.find(".next").bind("click",r._next),r.element.find(".last").bind("click",r._last));r.current_page==r._last_page()&&(r.element.find(".first").bind("click",r._first),r.element.find(".prev").bind("click",r._previous),r.element.find(".next").addClass("disabled"),r.element.find(".last").addClass("disabled"));r.current_page!=1&&r.current_page!=r._last_page()&&(r.element.find(".first").bind("click",r._first),r.element.find(".prev").bind("click",r._previous),r.element.find(".next").bind("click",r._next),r.element.find(".last").bind("click",r._last));r.element.find(u.dialog.select_crt.pager.page_number_box+":eq("+(r.current_page-1)+")").addClass("active");var t=(r.current_page-1)*r.page_size,i=n.length<r.current_page*r.page_size?n.length:r.current_page*r.page_size;y(t,i)},init:function(){for(var i,t=0;t<r._last_page();t++)i=$(u.dialog.select_crt.pager.template.item),i.text(t+1),i.bind("click",{p:t+1},r._page),r.element.find(u.dialog.select_crt.pager.items_box).append(i),r._set_max_height(r._height_page(t+1));n.length<=r.page_size&&r.element.hide();o.find(u.dialog.select_crt.pager_box).append(r.element);r._refresh()}};o.find(u.dialog.select_crt.cancel_button).bind("click",v);o.dialog("option","close",l);n.length>0?r.init():o.find(u.dialog.select_crt.empty_box).html(u.dialog.select_crt.template.empty);o.dialog("open")},tt=function(n){var t=$(u.dialog.not_found.template).dialog(u.dialog.not_found.options),i=function(){t.remove();n({code:"plugin_not_found"})};t.dialog("option","close",i);t.find(u.dialog.not_found.ok_button).bind("click",i);t.dialog("open")},it=function(n){var t=$(u.dialog.old_version.template).dialog(u.dialog.old_version.options),i=function(){t.remove();n({code:"old_version"})};t.dialog("option","close",i);t.find(u.dialog.old_version.ok_button).bind("click",i);t.dialog("open")},h=function(){var n=$(u.dialog.disclaimer.template).dialog(u.dialog.disclaimer.options),t=function(){n.remove()};return n.dialog("option","close",t),n.dialog("open"),n},rt=function(n,i,r){var a=h(),l,f;setTimeout(function(){a.dialog("close");l(function(t){o=t.certs;n({version:t.version})},function(){e=null;try{var u=t().version();y(u)>=y(r)?n({version:u}):it(i)}catch(f){f==="ds_plugin_not_found"?tt(i):s(f,i)}})},u.dialog.disclaimer.delay);l=function(n,t){var r=function(){for(var r=navigator.userAgent,u=!1,i=["Firefox/","Chrome","Opera","Edge","YaBrowser"],f,n,e,o,t=0;t<i.length;t++){if(r.search(i[t])!=-1&&i[t]=="Firefox/"){f=r.indexOf(i[t]);f+=8;n=r.substr(f);n&&(e=n.indexOf(" "),n=e!=-1?n.substring(0,e):n,o=n?parseInt(n,10):0,o>=50&&(u=!0));break}if(r.search(i[t])!=-1){u=!0;break}}return u},i=navigator.userAgent;i.search("Chrome")>-1||i.search("Firefox")>-1?document.getElementById("ifcplugin-extension-is-installed")?document.getElementById("ifc-plugin-is-installed")?f(!0,function(t){n(t)},function(){t()}):t():t():f(r(),function(t){n(t)},function(){t()})};f=function(n,t,i){var u,r="IFCPlugin",f;u=n?$('<object id="'+r+'" width="1" height="1"><\/object>'):$('<object id="'+r+'" type="application/x-ifcplugin" width="1" height="1"><\/object>');$("body").append(u);e=new IFCPlugin(document.getElementById(r),n,!0);e&&(f=h(),e.create("","",function(n){IFCError.IFC_OK===n.error_code?e.getPluginVersion(function(n){if(IFCError.IFC_OK===n.error_code){var u=n.version;console.log("VERSION: "+n.version);e.getCertificateList(function(n){var i=n.certs_list;i=$(i).filter(function(){return this.isValid()});console.log("Is valid certificates: "+i);t({version:u,certs:i})})}else c(r),i()}):(c(r),i());f.dialog("close")}))}},c=function(n){var t=document.getElementById(n);t&&t.parentNode?t.parentNode.removeChild(t):t&&document.body.removeChild(t)},b=function(n,i){var r=h();setTimeout(function(){var u,f,h;try{u=e?o:t().crts();r.dialog("close")}catch(c){r.dialog("close");s(c,i);return}f=function(){i({code:"canceled_by_user"})};h=function(t){e?e.getCertificate(u[t].getContainerId(),function(i){try{a=i.cert;n({id:u[t].getContainerId(),certificate:a.getBase64()})}catch(r){console.log("Invalid certificate. Container ID: "+u[t].getContainerId())}}):n({id:u[t].id,certificate:u[t].string})};nt(u,h,f)},u.dialog.disclaimer.delay)},k=function(n,i,r,v){var y=h();setTimeout(function(){var w,b,p,k,nt,g;if(e)for(y.dialog("close"),w=function(){v({code:"canceled_by_user"})},b=function(t){var o=h();setTimeout(function(){try{var h=function(n){o.dialog("close");IFCError.IFC_OK===n.error_code?r({sign:n.sign_value}):IFCError.IFC_BAD_TYPE_PIN===n.error_code||IFCError.IFC_P11_LOGIN_ERROR===n.error_code?l(a,b,w,u.dialog.pin.bad_pin_text):console.log(IFCError.getErrorDescription(n.error_code))};f.signType==="signDataCmsAttached"?e.signDataCmsAttached(n,t,i,h):f.signType==="signDataSimple"&&e.signDataSimple(n,t,i,h)}catch(c){o.dialog("close");c==="ds_plugin_bad_pin"?l(a,b,w,u.dialog.pin.bad_pin_text):s(c,v)}},u.dialog.disclaimer.delay)},p=0;p<o.length;p++)o[p].getContainerId()===n&&(o[p].isPKCS11()||o[p].isCAPI()?l(o[p],b,w,""):(k=function(n){IFCError.IFC_OK===n.error_code?r({sign:n.sign_value}):console.log(IFCError.getErrorDescription(n.error_code))},f.signType==="signDataCmsAttached"?e.signDataCmsAttached(n,"",i,k):f.signType==="signDataSimple"&&e.signDataSimple(n,"",i,k)));else{try{nt=t().is_pin_required(n)}catch(d){y.dialog("close");s(d,v);return}if(nt){try{g=t().crt_info(n);y.dialog("close")}catch(d){y.dialog("close");s(d,v);return}var rt=function(n){if(n==null||$.trim(n).length==0)throw"ds_plugin_bad_pin";},tt=function(){v({code:"canceled_by_user"})},it=function(f){var e=h();setTimeout(function(){try{rt(f);var h=t().sign(n,f,i);e.dialog("close");r({sign:h});c()}catch(o){e.dialog("close");o=="ds_plugin_bad_pin"?l(g,it,tt,u.dialog.pin.bad_pin_text):s(o,v);c()}},u.dialog.disclaimer.delay)};l(g,it,tt,"")}else{y.dialog("close");try{r({sign:t().sign(n,"",i)})}catch(d){s(d,v)}}}},u.dialog.disclaimer.delay)},ut=function(n,t,i){b(function(r){k(r.id,n,function(n){n.id=r.id;n.certificate=r.certificate;t(n)},function(n){i(n)})},function(n){i(n)})};return{check_plugin:rt,select:b,sign:k,select_and_sign:ut}}}(window)