@zkpass/zkfetch-worker
Version:
zkFetch using zkTLS is a system that enables verifiable fetching of HTTPS data using zero-knowledge proofs (ZKPs). It ensures that the response from a remote TLS server (like a Web2 API) is authentic, integrity-preserved, and can be publicly verified—with
3,918 lines • 740 kB
JavaScript
var IB=Object.defineProperty;var sI=(i,e,t)=>e in i?IB(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var u=(i,e)=>IB(i,"name",{value:e,configurable:!0});var Xe=(i,e,t)=>sI(i,typeof e!="symbol"?e+"":e,t);import mb from"aes-js";import{randBytesSync as wb}from"bigint-crypto-utils";import{Buffer as pb}from"buffer";var ds=u(i=>{let e="";for(let t of i)e+=String.fromCharCode(t);return e},"u8Array2Str"),he=u(i=>{let e=new Uint8Array(i.length);for(let t=0;t<i.length;t++)e[t]=i.charCodeAt(t);return e},"str2U8Array"),It=u(i=>{let e=Array(i.length*8),t=0;for(let s=i.length-1;s>=0;s--)for(let n=0;n<8;n++)e[t]=i[s]>>n&1,t++;return e},"u8Array2Bits");function ju(i){return Array.from(i,e=>("0"+(e&255).toString(16)).slice(-2)).join("")}u(ju,"bytes2Hex");function fa(i){let e=[];for(let t=0;t<i.length;t+=2)e.push(parseInt(i.substring(t,t+2),16));return new Uint8Array(e)}u(fa,"hex2Bytes");var no=u((...i)=>{let e=[];for(let t of i)e=e.concat(Array.from(t));return new Uint8Array(e)},"concatArray"),km=u((i,e)=>{let t=i.toString(16);t.length%2===1&&(t=`0${t}`);let s=[];for(let r=0;r<t.length/2;r++)s.push(parseInt(t.slice(2*r,2*r+2),16));let n=s.length;return e&&n<e?no(new Uint8Array(e-n).fill(0),new Uint8Array(s)):e&&n>e?new Uint8Array(s.splice(0,e)):new Uint8Array(s)},"int2U8Array");var Ju=u(i=>{let e=new Uint8Array(i.length/8);for(let t=0;t<e.length;t++){let s=0;for(let n=0;n<8;n++)s+=i[t*8+n]*2**n;e[e.length-1-t]=s}return e},"bits2U8Array");var CB=u(i=>i.toString(2).split("").map(e=>+e),"int2Bits");function ro(i){try{return/^(-?\d+)(\.\d+)$/.test(i)}catch{return!1}}u(ro,"isFloatNumber");function MB(i){try{return/^-?\d+(\.\d+)?$/.test(i)}catch{return!1}}u(MB,"isNumber");function nI(i){let t=new TextEncoder().encode(i),s="";for(let n of Array.from(t))s+=String.fromCharCode(n);return s}u(nI,"recoverStr");function xm(i){return i.forEach(e=>{typeof e.value=="string"&&(e.value=nI(e.value))}),i}u(xm,"formatAsserts");function bB(i){let t=typeof i=="bigint"?i:BigInt(i);return Number(t>>22n)+15768e8}u(bB,"extractTimestamp");function Tm(i){if(i.length==0)return{};if(i[0]!==123&&i[0]!==91)throw"invalid json bytes";let e=0;function t(){for(;i[e]===10||i[e]===32||i[e]===92&&[92,114,116].includes(i[e+1]);)e++}u(t,"skipWhiteSpace");function s(h,d){if(i.slice(e,e+h.length).join("")===Array.from(he(`${d}`)).join(""))return e+=h.length,d}u(s,"parseKeyword");function n(){if(t(),i[e]!==58)throw new Error('Expected ":"');t(),e++}u(n,"parseColon");function r(){if(t(),i[e]!==44)throw new Error('Expected ","');t(),e++}u(r,"parseComma");function a(){if(t(),i[e]===34){e++;let h=[];for(;i[e]!==34||i[e]===34&&i[e-1]===92;)i[e]===92?(h.push(...i.slice(e,e+2)),e+=2):(h.push(i[e]),e++);return e++,ds(new Uint8Array(h))}}u(a,"parseString");function o(){if(t(),i[e]===123&&i[e-1]!==92){let h=[];e++,t();let d={},m=!0;for(;i[e]!==125||i[e]===125&&i[e-1]===92;){m||(r(),t());let E=e,y=a()||"",f=e;t(),n(),m=!1,t();let p=e,{value:B,type:C}=A(),I=e;t(),h.push(y),C==="string"&&(p+=1,I-=1),d[y]={keyStart:E,keyEnd:f,keyStr:ds(new Uint8Array(i.slice(E,f))),start:p,end:I},C==="object"||C==="array"?d[y].children=B:d[y].value=B}return e++,d}}u(o,"parseObject");function c(){if(i[e]===91&&i[e-1]!==92){e++,t();let h=[],d=!0;for(;i[e]!==93||i[e]===93&&i[e-1]===92;){d||r(),t();let m=e,{value:E,type:y}=A(),f=e;t(),y==="string"&&(m+=1,f-=1);let p={value:E,start:m,end:f};y==="object"||y==="array"?p.children=E:p.value=E,h.push(p),d=!1}return e++,{...h}}}u(c,"parseArray");function l(){let h=e;if(i[e]===45&&e++,i[e]===48)e++;else if(i[e]>=49&&i[e]<=57)for(e++;i[e]>=48&&i[e]<=57;)e++;if(i[e]===46)for(e++;i[e]>=48&&i[e]<=57;)e++;if(i[e]===101||i[e]===69)for(e++,(i[e]===45||i[e]===43)&&e++;i[e]>=48&&i[e]<=57;)e++;if(e>h)return ds(new Uint8Array(i.slice(h,e)))}u(l,"parseNumber");function A(){let h=a();return typeof h<"u"?{value:h,type:"string"}:(h=o(),typeof h<"u"?{value:h,type:"object"}:(h=c(),typeof h<"u"?{value:h,type:"array"}:(h=l(),typeof h<"u"?{value:h,type:"number"}:(h=s("true",!0),typeof h<"u"?{value:h,type:"boolean"}:(h=s("null",null),typeof h<"u"?{value:h,type:"null"}:(h=s("false",!1),typeof h<"u"?{value:h,type:"boolean"}:(t(),{value:h,type:"undefined"})))))))}return u(A,"parseValue"),t(),A().value}u(Tm,"parseJsonGrammarTree");function wa(i){return Tm(Array.from(he(i)))}u(wa,"customJsonParse");import Lu from"lodash";function ao(i,e,t){let s=i-i%16,n=e%16>0?e+16-e%16:e;n>t&&(n=t);let r=s,a=[],o=[];for(;r<n;){let c=r+16,l=Math.ceil(c/16);a.push(l);let A=c>n?n:c;o.push({counter:l,start:r,end:A,len:A-r}),r+=A-r}return{start:o[0].start,end:o[o.length-1].end,counterList:a,blockList:o}}u(ao,"padToAes128Block");function rI(i,e){let t=i;for(;e.length>0;){let s=e.shift()||"";if(t=t[s],typeof t>"u")throw"You do not meet the required criteria"}return Lu.toString(t)}u(rI,"pickValueByKeys");function aI(i,e,t){let s=i;for(;e.length>0;){let n=e.shift()||"";if(s=s[n],typeof s>"u")throw t?`You do not meet the required criteria. Please check the following criteria. \r
\r
${t}`:"You do not meet the required criteria"}return s}u(aI,"pickAllValueByKeys");function iI(i,e){let t=i;for(;e.length>0;){let s=e.shift()||"";if(e.length===0)return Object.keys(t).includes(s);if(t=t[s],typeof t>"u"&&e.length>0)throw"You do not meet the required criteria"}return!0}u(iI,"isContainKey");function vB(i){return Lu.isArray(i)&&(i=i.filter(e=>!(typeof e>"u"))),Object.keys(i).forEach(e=>{typeof i[e]=="object"&&(i[e]=vB(i[e]))}),i}u(vB,"removeEmptyElements");function DB(i,e=[]){let t=e.filter(r=>r.isPublic);if(t.length===0)return null;let s="",n=Lu.isArray(i)?[]:{};for(let r=0;r<t.length;r++){let a=t[r].key.split("|"),o=aI(i,t[r].key.split("|"));s=`${s}${JSON.stringify(o)}`;let c=n;for(let l=0;l<a.length;l++){let A=isNaN(parseInt(a[l]))?a[l]:parseInt(a[l]),h=isNaN(parseInt(a[l+1]))?a[l+1]:parseInt(a[l+1]);typeof c[A]>"u"&&(typeof h=="number"?c[A]=[]:c[A]={}),l==a.length-1?c[A]=o:c=c[A]}}return n=vB(n),{data:n,str:s}}u(DB,"checkPublicFields");function NB(i,e,t=0){let s=i.slice(t).join(","),n=e.join(","),r=s.indexOf(n);return r===0?t:r<0?-1:s.substring(0,r-1).split(",").length+t}u(NB,"findStartIndex");function Vg(i,e,t){let s=Array.from(he(e)),n=0,r=0,a=t.map(c=>{let l=Array.from(he(c)),A=NB(s,l,n);return n=A+l.length,r+=l.length,{start:A,end:n}}),o=0;return i.map((c,l)=>{let A=c.data,h=NB(s,A,o),d=h+A.length;for(let y=0;y<a.length;y++)if(a[y].end>=h&&a[y].end<h+A.length){d=a[y].end;break}let m=0,E=a.find(y=>h<y.start&&y.start<d);return E?m=E.start-h:(a[0].start>=d||a[a.length-1].end<=h)&&(m=d-h),o=h+A.length,{start:h,end:d,headerLen:m,index:l}})}u(Vg,"findBoundaryForRecords");function QB(i,e){let t=i.join(""),s=Math.max(t.lastIndexOf("]"),t.lastIndexOf("}"));t=t.substring(0,s+1);let n=Array.from(he(t)),r=u(o=>{try{for(let c of Object.keys(o)){let l=o[c];if(l.children)r(l.children);else{let A=l.end-l.start,h=new Array(A).fill(49);if(ro(l.value)){let d=`${l.value}`.indexOf(".");h.splice(d,1,46)}if(l._containValue){let d=`${l.value}`.indexOf(l._containValue),m=l._containValue.length,E=new Array(m).fill(50);h.splice(d,m,...E)}if(l._dataPattern){let d=l.value,m=`${d}`.match(new RegExp(l._dataPattern.regex)),E=0;Object.entries(l._dataPattern).filter(y=>y[0]!=="regex"&&y[0]!=="order"&&y[0]!=="valRegex").sort((y,f)=>y[1].regexMatchIndex-f[1].regexMatchIndex).forEach(y=>{let f=y[0],p=y[1].regexMatchIndex,B=m[p],C=he(B).length,I=`${l.value}`.indexOf(B,E),b=he(d.substring(0,I)).length,V=new Array(C).fill(f.charCodeAt());h.splice(b,C,...V),E=I+B.length})}n.splice(l.start,A,...h)}}}catch{}},"genMask"),a=wa(t);return e.forEach(o=>{let c=o.key.split("|"),l,A=a;for(;c.length>0;){l=c.shift()||"";let{children:h}=A[l];h&&c.length>0&&(A=h),c.length==0&&(o.dataPattern&&(A[l]._dataPattern=o.dataPattern),o.operation==="contain"&&(A[l]._containValue=o.value))}}),r(a),ds(new Uint8Array(n))}u(QB,"genDataStruct");function Sg(i,e){let t="",s=i.match(new RegExp(e.regex));return e.order.split("|").forEach(r=>{let a=e[r].regexMatchIndex,o=s[a];e[r].map?.forEach(c=>{let l=c.split("|");l[0]===o&&(o=l[1])}),typeof o<"u"&&(t+=`${o}`)}),t}u(Sg,"combineValueByPattern");function Ou(i,e){let t=i.split("|"),s;for(;t.length>0;){if(s=t.shift()||"",typeof e[s]>"u")return{start:-1,end:-1,keyStart:-1,keyEnd:-1};let{children:n,start:r,end:a,keyStart:o,keyEnd:c}=e[s]||{};if(n&&t.length>0&&(e=n),t.length==0)return{start:r,end:a,keyStart:o,keyEnd:c}}return{start:-1,end:-1,keyStart:-1,keyEnd:-1}}u(Ou,"getValuePosition");function VB(i,e){let t=[],s=e.filter(n=>!n.isPublic);for(let n=0;n<s.length;n++){let r=s[n].key.split("|"),a=s[n].value,o=s[n].operation||"=",c=s[n].dataPattern,l=s[n].tips,{value:A}=Um(s[n].key,i);c&&(A=Sg(`${A}`,c)),o==="x"?iI(JSON.parse(i),r)&&t.push(l||""):oI(A,a,o)||t.push(l||"")}return t}u(VB,"matchResponseWithCondition");function oI(i,e,t){let s=Lu.toString(i),n=Lu.toString(e);switch(t){case">":return i-e>0;case">=":return i-e>=0;case"<":return i-e<0;case"<=":return i-e<=0;case"=":return s===n;case"!=":return s!==n;case"in":return n.includes(s);case"contain":return s.includes(n)}}u(oI,"compareValue");function Um(i,e){let t=wa(e),s=Ou(i,t),n=he(e);return{key:ds(n.slice(s.keyStart,s.keyEnd)),value:ds(n.slice(s.start,s.end)),prefix:ds(n.slice(s.start-1,s.start)),suffix:ds(n.slice(s.end,s.end+1))}}u(Um,"pickUpValueByFieldPosition");function cI(i,e){let t=[],s=i.split(""),n="";for(let r=0;r<s.length;r++){let a=s[r];if(a==="@"&&s[r+1]==="{"){n&&(t.push({value:n,start:r-n.length,end:r}),n="");let o=r,c=i.indexOf("}",r),l=i.substring(o+4,c).split("|"),A=l[0],h=e[A].json,d=e[A].referred[l[1]],m=rI(h,d.split("|"));i=`${i.substring(0,o)}${m}${i.substring(c+1)}`,r=o+m.length-1,t.push({value:m,start:o,end:o+`${m}`.length,dependInfo:{index:A,referredField:d}})}else n+=a;s=i.split("")}return n&&t.push({value:n,start:s.length-n.length,end:s.length}),{value:i,sliceList:t}}u(cI,"parseReferredString");function qn(i,e,t,s){let n=[],r=0;return s.forEach((a,o)=>{let c=a.data.length,l=a.headerLen;if(l===c||r>=e)return;let A=t-r;if(A==0)return;let h=a.bodyLen,d=h>A?A:h;if(r+d<i){r+=d;return}if(r>i&&r+d>=e)n.push({index:o,len:c,start:l,end:e-r+l});else if(r<=i&&r+d>=e){let m=i-r+l;n.push({index:o,len:c,start:m,end:e-i+m})}else r<=i&&r+d<e&&n.push({index:o,len:c,start:i-r+l,end:d+l});r+=d}),n}u(qn,"getRecordsByPosition");function SB(i){return lI(i,[])}u(SB,"formatAsserts");function lI(i,e){return i.map(t=>{if(t.isPublic)return t;let{value:s="",operation:n}=t;if(n==="in"){let r=s.split("|");t.value=s,t.targetSlice=r.map(a=>({value:a,start:0,end:a.length}))}else{let{value:r,sliceList:a}=cI(s,e);t.value=r,t.targetSlice=a.map(o=>o.dependInfo?{...o.dependInfo,...o}:o).reverse()}return t})}u(lI,"checkTargetValueWithReferred");function Xn(i,e){return i=i.map(t=>{let{index:s,start:n,end:r,len:a}=t,o=e.find(h=>h.index===s),c=o?.counters||[],l=o?.blockLens||[],A=ao(n,r,a);return A.blockList.forEach(h=>{c.includes(h.counter)||(c.push(h.counter),l.push({index:h.counter,len:h.len}))}),o?e=e.map(h=>(h.index===s&&(h.counters=c.sort((d,m)=>d-m),h.blockLens=l.sort((d,m)=>d.index-m.index)),h)):e.push({index:s,counters:c.sort((h,d)=>h-d),blockLens:l.sort((h,d)=>h.index-d.index)}),{recordIndex:s,startCounter:A.blockList[0].counter,start:n-A.start,valueLen:r-n}}),e=e.sort((t,s)=>t.index-s.index),{usedRecords:i,responseCounter:e}}u(Xn,"checkCounterAndFormatRecordInfo");function $n(i,e,t,s,n){let r=0;n.forEach(c=>{c.index<i?r+=c.blockLens.reduce((l,A)=>l+A.len,0):c.index===i&&(r+=c.blockLens.filter(l=>l.index<s).reduce((l,A)=>l+A.len,0))});let a=e+r,o=a+t;return{start:a,end:o}}u($n,"findValuePositionInInputMessage");function xg(i,e,t,s,n){let r={},a="",o=new URL(i),c=o.host,l=o.pathname,A=o.search,h=`${l}`;r.url={value:h,prefixValue:`${e} `,sliceList:[{value:h,start:0,end:h.length}]},a=`${e} ${l}${A} HTTP/1.1\r
Host: ${c}`,n&&n.query&&n.query.forEach(B=>{let{key:C,value:I}=B,b=a.indexOf(`${C}=${I}`);if(b==-1)throw new Error(`Query parameter ${C}=${I} is not allowed in the request.`);r.query||(r.query={}),r.query[C]={value:I,start:b,end:b+`${C}=${I}`.length}});let d=Object.entries(t).find(([B])=>B.toLowerCase()==="content-type"),m="";s&&d&&d.value.includes("application/json")&&(m=JSON.stringify(s));let E=[],y="application/json";switch(Object.entries(t).forEach(([B,C])=>{B.toLowerCase()==="accept-encoding"?C="identity;q=1, *;q=0":B.toLowerCase()==="accept"&&(y=C),E.push(`${B}: ${C}`)}),Object.entries(t).find(([B])=>B.toLowerCase()==="accept-encoding")||E.push("accept-encoding: identity;q=1, *;q=0"),e){case"GET":E.push("","");break;case"POST":let B=m;E.push(`Content-Length: ${B.length}`,"",B);break}a=`${a}\r
${E.join(`\r
`)}`,n&&n.headers&&n.headers.forEach(B=>{let{key:C,value:I}=B,b=a.indexOf(`${C}: ${I}`);if(b==-1)throw new Error(`Header ${C}: ${I} is not allowed in the request.`);r.header||(r.header={}),r.header[C]={value:I,start:b,end:b+`${C}: ${I}`.length}}),n&&n.body&&n.body.forEach(B=>{let{key:C,value:I}=B,b=a.indexOf(`${C}: ${I}`);if(b==-1)throw new Error(`Body parameter ${C}: ${I} is not allowed in the request.`);r.body||(r.body={}),r.body[C]={value:I,start:b,end:b+`${C}: ${I}`.length}});let p=uI(a,l,m,r);return{host:c,text:a,verifyMessage:p,accept:y}}u(xg,"buildRequestInfo");function uI(i,e,t,s){let n=i.length,r=[],a=[],o=[],c=0,l=i.indexOf(e)+e.length,A={value:i.substring(c,l),start:c,end:l,sliceList:[]},{value:h,prefixValue:d,sliceList:m=[]}=s.url,E=i.indexOf(h);if(A.sliceList=kg(m,E,d||h),A.sliceList?.forEach(f=>{ao(f.start,f.end,n).blockList.forEach(C=>{r.includes(C.counter)||r.push(C.counter)});let B=a.pop();B===f.start?a.push(f.end):typeof B>"u"?a.push(f.start,f.end):a.push(B,f.start,f.end)}),o.push(A),s.query&&Object.values(s.query).forEach(f=>{let{value:p,prefixValue:B,sliceList:C=[]}=f,I=i.indexOf(p),b=I+p.length;a.push(I,b);let V=ao(I,b,n);V.blockList.forEach(N=>{r.includes(N.counter)||r.push(N.counter)});let G=r.filter(N=>N<V.blockList[0].counter).length,D=I-V.start+G*16,S=D+p.length,Q={value:p,start:D,end:S,sliceList:[]};Q.sliceList=kg(C,D,B||p),o.push(Q)}),s.header&&Object.values(s.header).forEach(f=>{let{value:p,prefixValue:B,sliceList:C=[]}=f,I=i.indexOf(p),b=I+p.length;a.push(I,b);let V=ao(I,b,n);V.blockList.forEach(N=>{r.includes(N.counter)||r.push(N.counter)});let G=r.filter(N=>N<V.blockList[0].counter).length;f.start=I-V.start+G*16,f.end=f.start+p.length;let D=I-V.start+G*16,S=D+p.length,Q={value:p,start:D,end:S,sliceList:[]};Q.sliceList=kg(C,D,B||p),o.push(Q)}),s.body){let f=i.indexOf(t),p=Object.values(s.body).map(B=>{let{key:C,value:I}=B,b=0,V=0,D=u((Q,N)=>{let T=wa(Q);return Ou(N,T)},"getFieldPosition")(t,C);b=f+D.keyStart,V=f+D.end,typeof I=="string"&&V++,a.push(b,V);let S=ao(b,V,n);return S.blockList.forEach(Q=>{r.includes(Q.counter)||r.push(Q.counter)}),{blockInfo:S,keyStart:b,valueEnd:V}});Object.values(s.body).forEach((B,C)=>{let{prefixValue:I,sliceList:b=[]}=B,{blockInfo:V,keyStart:G,valueEnd:D}=p[C],S=r.filter(j=>j<V.blockList[0].counter).length,Q=i.substring(G,D),N=G-V.start+S*16,T={value:Q,start:N,end:N+Q.length,sliceList:[]};T.sliceList=kg(b,N,I||Q),o.push(T)})}let y=r.sort((f,p)=>f-p).map(f=>{let p=(f-1)*16,B=p+16;return he(i.substring(p,B))});return{counters:r,inputMessage:y,verifyMessageIndexList:a,verifyStringPositionList:o}}u(uI,"checkRequestVerifyText");function kg(i,e,t){let s=i[0];return!s||s.dependInfo?i.unshift({value:t,start:0,end:t.length}):(i[0]={value:t+s.value,start:0,end:t.length+s.end},e=0),i.map((r,a)=>{let o=r.start+e,c=r.end+e;a>0&&(o+=t.length,c+=t.length);let l={...r,value:r.value,start:o,end:c,isNullifier:r.isNullifier};return r.dependInfo&&(l={...r.dependInfo,...l}),l})}u(kg,"resetSliceListInfo");function kB(i,e){let{records:t,fullResponse:s,responseSliceList:n}=i,r=n.join("");if(!hI(r))throw new Error("response json is invalid");let a=QB(n,e);return{recordBoundaries:Vg(t,s,n),responseStruct:a,records:t}}u(kB,"maskResponse");function hI(i){try{return JSON.parse(i),!0}catch{return!1}}u(hI,"isValidJSON");function Rm(i){return i.map(e=>{let t=new Uint8Array(e);return{nonce:new Uint8Array(12).fill(0),data:t.slice(29),cipherData:t.slice(13)}})}u(Rm,"formatRecords");function xB(i,e){let{request:t,asserts:s}=i,{url:n,method:r,headers:a,body:o}=t,c=s?.request||{},l=s?.response||[],A=new URL(n),h=A.origin,d=A.pathname,m=A.search;if(m){let f=AI(m.slice(1));f=Ba(f);let p=Object.entries(f);p.length>0&&(m="?"+p.map(([C,I])=>`${C}=${I}`).join("&"))}a&&(a=Ba(a)),o&&(o=Ba(o));let E=`${h}${d}${m}`,y=kB(e,l);return{request:{url:E,method:r,headers:a,body:o},response:y,requestCipher:e.requestCipherBytes}}u(xB,"maskProofData");function AI(i){let e={};return i&&i.split("&").forEach(t=>{let s=t.split("=");e[s[0]]=s[1]}),e}u(AI,"getQueryParams");function Ba(i,e){if(Array.isArray(i))return i.map(t=>Ba(t,e));if(typeof i=="object"&&i!==null){let t={};for(let s in i)e&&s===e?t[s]=i[s]:t[s]=Ba(i[s],e);return t}else return String(i).replace(/./g,"$")}u(Ba,"maskJsonValues");var Tg=[2570,6682,10794,14906,19018,23130,27242,31354,35466,39578,43690,47802,51914,56026,60138],gI=769,Ln=771,dI={1025:{Name:"rsa_pkcs1_sha256",Hashing:"SHA-256",Type:"RSASSA-PKCS1-v1_5"},1281:{Name:"rsa_pkcs1_sha384",Hashing:"SHA-384",Type:"RSASSA-PKCS1-v1_5"},1537:{Name:"rsa_pkcs1_sha512",Hashing:"SHA-512",Type:"RSASSA-PKCS1-v1_5"},2052:{SaltLength:32,Name:"rsa_pss_rsae_sha256",Hashing:"SHA-256",Type:"RSA-PSS"},2053:{SaltLength:48,Name:"rsa_pss_rsae_sha384",Hashing:"SHA-384",Type:"RSA-PSS"},2054:{SaltLength:64,Name:"rsa_pss_rsae_sha512",Hashing:"SHA-512",Type:"RSA-PSS"},1027:{Name:"ecdsa_secp256r1_sha256",Curve:"P-256",Hashing:"SHA-256",Type:"ECDSA"},1283:{Name:"ecdsa_secp384r1_sha384",Hashing:"SHA-384",Curve:"P-384",Type:"ECDSA"}},Fi,Ee=(Fi=class{constructor(e){if(this.val=0,e instanceof Uint8Array||e instanceof Array){if(e.length!=2)throw new Error("Invalid value");this.val=(e[0]<<8)+e[1]}else{if(typeof e!="number")throw new Error("Invalid value");if(e<0||e>65535)throw new Error("Invalid value");this.val=e}}hex(){return"0x"+this.val.toString(16).padStart(4,"0")}bytes(){return new Uint8Array([this.val>>8&255,255&this.val])}equals(e){return e instanceof Fi?this.val===e.val:typeof e=="number"&&this.val===e}},u(Fi,"i"),Fi),Hi,ug=(Hi=class{constructor(e){if(this.val=0,e instanceof Uint8Array||e instanceof Array){if(e.length!=3)throw new Error("Invalid value");this.val=(e[0]<<16)+(e[1]<<8)+e[2]}else{if(typeof e!="number")throw new Error("Invalid value");if(e<0||e>16777215)throw new Error("Invalid value");this.val=e}}hex(){return"0x"+this.val.toString(16).padStart(6,"0")}bytes(){return new Uint8Array([this.val>>16&255,this.val>>8&255,255&this.val])}equals(e){return e instanceof Hi?this.val===e.val:typeof e=="number"&&this.val===e}},u(Hi,"o"),Hi),Yi,cE=(Yi=class{constructor(e){if(this.val=0,e instanceof Uint8Array||e instanceof Array){if(e.length!==4)throw new Error("Invalid value");this.val=(e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3]}else{if(typeof e!="number")throw new Error("Invalid value");if(e<0||e>4294967295)throw new Error("Invalid value");this.val=e}}hex(){return"0x"+this.val.toString(16).padStart(8,"0")}bytes(){return new Uint8Array([this.val>>24&255,this.val>>16&255,this.val>>8&255,255&this.val])}equals(e){return e instanceof Yi?this.val===e.val:typeof e=="number"&&this.val===e}},u(Yi,"l"),Yi),Pc,Ne=(Pc=class{constructor(e){if(e=e||[],!(Array.isArray(e)||e instanceof Uint8Array))throw new TypeError("bytes should be an array");this.bytes=Array.from(e),this.bytes_read=0}size(){return this.bytes.length}drain(){let e=[...this.bytes];return this.bytes=[],this.bytes_read=0,e}bytesRead(){return this.bytes_read}write(e,t){if(typeof e!="number")throw new TypeError(`value should be a number: ${e}`);if(e<0||e>Number.MAX_SAFE_INTEGER)throw new RangeError(`value is out of bounds: ${e}`);e=+e,t>>>=0;let s=new Array(t);for(let n=t-1;n>=0;n--)s[n]=255&e,e>>>=8;return this.writeBytes(s)}writeBytes(e){return this.bytes.push(...e),this}writeUint8(e){return this.write(e,1)}writeUint16(e){let t=e;return e instanceof Ee&&(t=e.val),this.write(t,2)}writeUint24(e){let t=e;return e instanceof ug&&(t=e.val),this.write(t,3)}writeUint32(e){let t=e;return e instanceof cE&&(t=e.val),this.write(t,4)}writeUint64(e){return this.write(e,8)}read(e){let t=0;for(let s=0;s<e;s++)t=t<<8|this.bytes[s];return this.bytes.splice(0,e),this.bytes_read+=e,t}readBytes(e){let t=this.bytes.splice(0,e);return this.bytes_read+=e,t}readUint8(){return this.read(1)}readUint16(){return this.read(2)}readUint24(){return this.read(3)}readUint32(){return this.read(4)}readUint64(){return this.read(8)}skip(e){return this.bytes.splice(0,e),this.bytes_read+=e,this}Bytes(){return new Uint8Array(this.bytes)}},u(Pc,"c"),Pc);function xi(i){let e=new Uint8Array(i.length);for(let t=0;t<i.length;t++)e[t]=i.charCodeAt(t);return e}u(xi,"h");function ga(i){return Array.from(i,e=>("0"+(255&e).toString(16)).slice(-2)).join("")}u(ga,"u");var Kr,ne=(Kr=class{static isArrayBuffer(e){return Object.prototype.toString.call(e)==="[object ArrayBuffer]"}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let s=Kr.toUint8Array(e),n=Kr.toUint8Array(t);if(s.length!==n.byteLength)return!1;for(let r=0;r<s.length;r++)if(s[r]!==n[r])return!1;return!0}static concat(...e){let t;t=!Array.isArray(e[0])||e[1]instanceof Function?Array.isArray(e[0])&&e[1]instanceof Function?e[0]:e[e.length-1]instanceof Function?e.slice(0,e.length-1):e:e[0];let s=0;for(let a of t)s+=a.byteLength;let n=new Uint8Array(s),r=0;for(let a of t){let o=this.toUint8Array(a);n.set(o,r),r+=o.length}return e[e.length-1]instanceof Function?this.toView(n,e[e.length-1]):n.buffer}},u(Kr,"A"),Kr),Gm="string",mI=/^[0-9a-f\s]+$/i,fI=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,wI=/^[a-zA-Z0-9-_]+$/,zc,TB=(zc=class{static fromString(e){let t=unescape(encodeURIComponent(e)),s=new Uint8Array(t.length);for(let n=0;n<t.length;n++)s[n]=t.charCodeAt(n);return s.buffer}static toString(e){let t=ne.toUint8Array(e),s="";for(let n=0;n<t.length;n++)s+=String.fromCharCode(t[n]);return decodeURIComponent(escape(s))}},u(zc,"B"),zc),Zc,ms=(Zc=class{static toString(e,t=!1){let s=ne.toArrayBuffer(e),n=new DataView(s),r="";for(let a=0;a<s.byteLength;a+=2){let o=n.getUint16(a,t);r+=String.fromCharCode(o)}return r}static fromString(e,t=!1){let s=new ArrayBuffer(2*e.length),n=new DataView(s);for(let r=0;r<e.length;r++)n.setUint16(2*r,e.charCodeAt(r),t);return s}},u(Zc,"f"),Zc),Xt,ie=(Xt=class{static isHex(e){return typeof e===Gm&&mI.test(e)}static isBase64(e){return typeof e===Gm&&fI.test(e)}static isBase64Url(e){return typeof e===Gm&&wI.test(e)}static ToString(e,t="utf8"){let s=ne.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(s);case"binary":return this.ToBinary(s);case"hex":return this.ToHex(s);case"base64":return this.ToBase64(s);case"base64url":return this.ToBase64Url(s);case"utf16le":return ms.toString(s,!0);case"utf16":case"utf16be":return ms.toString(s);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return ms.fromString(e,!0);case"utf16":case"utf16be":return ms.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=ne.toUint8Array(e);if(typeof btoa<"u"){let s=this.ToString(t,"binary");return btoa(s)}return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!Xt.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!Xt.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=Xt.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return TB.fromString(e);case"utf16":case"utf16be":return ms.fromString(e);case"utf16le":case"usc2":return ms.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=Xt.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return TB.toString(e);case"utf16":case"utf16be":return ms.toString(e);case"utf16le":case"usc2":return ms.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,s=new Uint8Array(t);for(let n=0;n<t;n++)s[n]=e.charCodeAt(n);return s.buffer}static ToBinary(e){let t=ne.toUint8Array(e),s="";for(let n=0;n<t.length;n++)s+=String.fromCharCode(t[n]);return s}static ToHex(e){let t=ne.toUint8Array(e),s="",n=t.length;for(let r=0;r<n;r++){let a=t[r];a<16&&(s+="0"),s+=a.toString(16)}return s}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!Xt.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let s=new Uint8Array(t.length/2);for(let n=0;n<t.length;n+=2){let r=t.slice(n,n+2);s[n/2]=parseInt(r,16)}return s.buffer}static ToUtf16String(e,t=!1){return ms.toString(e,t)}static FromUtf16String(e,t=!1){return ms.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let s=0;s<t;s++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}},u(Xt,"E"),Xt);function g(i,e,t){var s;return i instanceof Object&&(s=i[e])!==null&&s!==void 0?s:t}u(g,"p");function UB(i,e=0,t=i.byteLength-e,s=!1){let n="";for(let r of new Uint8Array(i,e,t)){let a=r.toString(16).toUpperCase();a.length===1&&(n+="0"),n+=a,s&&(n+=" ")}return n.trim()}u(UB,"I");function Ki(i,e){let t=0;if(i.length===1)return i[0];for(let s=i.length-1;s>=0;s--)t+=i[i.length-1-s]*Math.pow(2,e*s);return t}u(Ki,"y");function Wn(i,e,t=-1){let s=t,n=i,r=0,a=Math.pow(2,e);for(let o=1;o<8;o++){if(i<a){let c;if(s<0)c=new ArrayBuffer(o),r=o;else{if(s<o)return new ArrayBuffer(0);c=new ArrayBuffer(s),r=s}let l=new Uint8Array(c);for(let A=o-1;A>=0;A--){let h=Math.pow(2,A*e);l[r-A-1]=Math.floor(n/h),n-=l[r-A-1]*h}return c}a*=Math.pow(2,e)}return new ArrayBuffer(0)}u(Wn,"C");function Yc(...i){let e=0,t=0;for(let r of i)e+=r.byteLength;let s=new ArrayBuffer(e),n=new Uint8Array(s);for(let r of i)n.set(new Uint8Array(r),t),t+=r.byteLength;return s}u(Yc,"M");function Vf(...i){let e=0,t=0;for(let r of i)e+=r.length;let s=new ArrayBuffer(e),n=new Uint8Array(s);for(let r of i)n.set(r,t),t+=r.length;return n}u(Vf,"D");function lE(){let i=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=i[0]===255&&128&i[1],o=i[0]===0&&!(128&i[1]);(a||o)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=128&i[0];let s=Ki(t,8),n=new ArrayBuffer(this.valueHex.byteLength),r=new Uint8Array(n);for(let a=0;a<this.valueHex.byteLength;a++)r[a]=i[a];return r[0]&=127,Ki(r,8)-s}u(lE,"N");function Vu(i,e){if(i.byteLength!==e.byteLength)return!1;let t=new Uint8Array(i),s=new Uint8Array(e);for(let n=0;n<t.length;n++)if(t[n]!==s[n])return!1;return!0}u(Vu,"b");function St(i,e){let t=i.toString(10);if(e<t.length)return"";let s=e-t.length,n=new Array(s);for(let r=0;r<s;r++)n[r]="0";return n.join("").concat(t)}u(St,"Q");ie.DEFAULT_UTF8_ENCODING="utf8";var uE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",hE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=";function Sf(i,e=!1,t=!1,s=!1){let n=0,r=0,a=0,o="",c=e?hE:uE;if(s){let l=0;for(let A=0;A<i.length;A++)if(i.charCodeAt(A)!==0){l=A;break}i=i.slice(l)}for(;n<i.length;){let l=i.charCodeAt(n++);n>=i.length&&(r=1);let A=i.charCodeAt(n++);n>=i.length&&(a=1);let h=i.charCodeAt(n++),d=l>>2,m=(3&l)<<4|A>>4,E=(15&A)<<2|h>>6,y=63&h;r===1?E=y=64:a===1&&(y=64),o+=t?E===64?`${c.charAt(d)}${c.charAt(m)}`:y===64?`${c.charAt(d)}${c.charAt(m)}${c.charAt(E)}`:`${c.charAt(d)}${c.charAt(m)}${c.charAt(E)}${c.charAt(y)}`:`${c.charAt(d)}${c.charAt(m)}${c.charAt(E)}${c.charAt(y)}`}return o}u(Sf,"S");function hg(i,e=!1,t=!1){let s=e?hE:uE;function n(c){for(let l=0;l<64;l++)if(s.charAt(l)===c)return l;return 64}u(n,"r");function r(c){return c===64?0:c}u(r,"a");let a=0,o="";for(;a<i.length;){let c=n(i.charAt(a++)),l=a>=i.length?0:n(i.charAt(a++)),A=a>=i.length?0:n(i.charAt(a++)),h=a>=i.length?0:n(i.charAt(a++)),d=r(c)<<2|r(l)>>4,m=(15&r(l))<<4|r(A)>>2,E=(3&r(A))<<6|r(h);o+=String.fromCharCode(d),A!==64&&(o+=String.fromCharCode(m)),h!==64&&(o+=String.fromCharCode(E))}if(t){let c=-1;for(let l=o.length-1;l>=0;l--)if(o.charCodeAt(l)!==0){c=l;break}o=c!==-1?o.slice(0,c+1):""}return o}u(hg,"k");function Kd(i){let e="",t=new Uint8Array(i);for(let s of t)e+=String.fromCharCode(s);return e}u(Kd,"T");function Su(i){let e=i.length,t=new ArrayBuffer(e),s=new Uint8Array(t);for(let n=0;n<e;n++)s[n]=i.charCodeAt(n);return t}u(Su,"U");var BI=Math.log(2);function pI(i){let e=Math.log(i)/BI,t=Math.floor(e),s=Math.round(e);return t===s?t:s}u(pI,"x");function Y(i,e){for(let t of e)delete i[t]}u(Y,"R");function qd(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}u(qd,"F");function Tw(i){let e=0,t=0;for(let n=0;n<i.length;n++)e+=i[n].byteLength;let s=new Uint8Array(e);for(let n=0;n<i.length;n++){let r=i[n];s.set(new Uint8Array(r),t),t+=r.byteLength}return s.buffer}u(Tw,"H");function Pn(i,e,t,s){return e instanceof Uint8Array?e.byteLength?t<0?(i.error="Wrong parameter: inputOffset less than zero",!1):s<0?(i.error="Wrong parameter: inputLength less than zero",!1):!(e.byteLength-t-s<0)||(i.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):(i.error="Wrong parameter: inputBuffer has zero length",!1):(i.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}u(Pn,"Y");var Kc,Uw=(Kc=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return Tw(this.items)}},u(Kc,"J"),Kc),Wu=[new Uint8Array([1])],RB="0123456789",Fm="name",GB="valueHexView",ar="",As=new ArrayBuffer(0),Cm=new Uint8Array(0),Ag="EndOfContent",AE="OCTET STRING",gE="BIT STRING";function zn(i){var t;var e;return(e=(t=class extends i{constructor(...n){var r;super(...n);let a=n[0]||{};this.isHexOnly=(r=a.isHexOnly)!==null&&r!==void 0&&r,this.valueHexView=a.valueHex?ne.toUint8Array(a.valueHex):Cm}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,r,a){let o=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!Pn(this,o,r,a))return-1;let c=r+a;return this.valueHexView=o.subarray(r,c),this.valueHexView.length?(this.blockLength=a,c):(this.warnings.push("Zero buffer length"),r)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",As)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:ie.ToHex(this.valueHexView)}}},u(t,"t"),t)).NAME="hexBlock",e}u(zn,"_");var qc,$i=(qc=class{constructor({blockLength:e=0,error:t="",warnings:s=[],valueBeforeDecode:n=Cm}={}){this.blockLength=e,this.error=t,this.warnings=s,this.valueBeforeDecodeView=ne.toUint8Array(n)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:ie.ToHex(this.valueBeforeDecodeView)}}},u(qc,"$"),qc);$i.NAME="baseBlock";var Xc,yt=(Xc=class extends $i{fromBER(e,t,s){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}},u(Xc,"ee"),Xc);yt.NAME="valueBlock";var $c,dE=($c=class extends zn($i){constructor({idBlock:e={}}={}){var t,s,n,r;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0&&t,this.valueHexView=e.valueHex?ne.toUint8Array(e.valueHex):Cm,this.tagClass=(s=e.tagClass)!==null&&s!==void 0?s:-1,this.tagNumber=(n=e.tagNumber)!==null&&n!==void 0?n:-1,this.isConstructed=(r=e.isConstructed)!==null&&r!==void 0&&r):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",As}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let n=new Uint8Array(1);if(!e){let r=this.tagNumber;r&=31,t|=r,n[0]=t}return n.buffer}if(!this.isHexOnly){let n=Wn(this.tagNumber,7),r=new Uint8Array(n),a=n.byteLength,o=new Uint8Array(a+1);if(o[0]=31|t,!e){for(let c=0;c<a-1;c++)o[c+1]=128|r[c];o[a]=r[a-1]}return o.buffer}let s=new Uint8Array(this.valueHexView.byteLength+1);if(s[0]=31|t,!e){let n=this.valueHexView;for(let r=0;r<n.length-1;r++)s[r+1]=128|n[r];s[this.valueHexView.byteLength]=n[n.length-1]}return s.buffer}fromBER(e,t,s){let n=ne.toUint8Array(e);if(!Pn(this,n,t,s))return-1;let r=n.subarray(t,t+s);if(r.length===0)return this.error="Zero buffer length",-1;switch(192&r[0]){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=!(32&~r[0]),this.isHexOnly=!1;let a=31&r[0];if(a!==31)this.tagNumber=a,this.blockLength=1;else{let o=1,c=this.valueHexView=new Uint8Array(255),l=255;for(;128&r[o];){if(c[o-1]=127&r[o],o++,o>=r.length)return this.error="End of input reached before message was fully decoded",-1;if(o===l){l+=255;let h=new Uint8Array(l);for(let d=0;d<c.length;d++)h[d]=c[d];c=this.valueHexView=new Uint8Array(l)}}this.blockLength=o+1,c[o-1]=127&r[o];let A=new Uint8Array(o);for(let h=0;h<o;h++)A[h]=c[h];c=this.valueHexView=new Uint8Array(o),c.set(A),this.blockLength<=9?this.tagNumber=Ki(c,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}},u($c,"te"),$c);dE.NAME="identificationBlock";var _c,mE=(_c=class extends $i{constructor({lenBlock:e={}}={}){var t,s,n;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0&&t,this.longFormUsed=(s=e.longFormUsed)!==null&&s!==void 0&&s,this.length=(n=e.length)!==null&&n!==void 0?n:0}fromBER(e,t,s){let n=ne.toUint8Array(e);if(!Pn(this,n,t,s))return-1;let r=n.subarray(t,t+s);if(r.length===0)return this.error="Zero buffer length",-1;if(r[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=r[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(128&r[0]),this.longFormUsed===!1)return this.length=r[0],this.blockLength=1,t+this.blockLength;let a=127&r[0];if(a>8)return this.error="Too big integer",-1;if(a+1>r.length)return this.error="End of input reached before message was fully decoded",-1;let o=t+1,c=n.subarray(o,o+a);return c[a-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=Ki(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=a+1,t+this.blockLength}toBER(e=!1){let t,s;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(s=new Uint8Array(t),s[0]=128),t;if(this.longFormUsed){let n=Wn(this.length,8);if(n.byteLength>127)return this.error="Too big length",As;if(t=new ArrayBuffer(n.byteLength+1),e)return t;let r=new Uint8Array(n);s=new Uint8Array(t),s[0]=128|n.byteLength;for(let a=0;a<n.byteLength;a++)s[a+1]=r[a];return t}return t=new ArrayBuffer(1),e===!1&&(s=new Uint8Array(t),s[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}},u(_c,"se"),_c);mE.NAME="lengthBlock";var Z={},el,ht=(el=class extends $i{constructor({name:e="",optional:t=!1,primitiveSchema:s,...n}={},r){super(n),this.name=e,this.optional=t,s&&(this.primitiveSchema=s),this.idBlock=new dE(n),this.lenBlock=new mE(n),this.valueBlock=r?new r(n):new yt(n)}fromBER(e,t,s){let n=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?s:this.lenBlock.length);return n===-1?(this.error=this.valueBlock.error,n):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),n)}toBER(e,t){let s=t||new Uw;t||fE(this);let n=this.idBlock.toBER(e);if(s.write(n),this.lenBlock.isIndefiniteForm)s.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,s),s.write(new ArrayBuffer(2));else{let r=this.valueBlock.toBER(e);this.lenBlock.length=r.byteLength;let a=this.lenBlock.toBER(e);s.write(a),s.write(r)}return t?As:s.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():ie.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${ie.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){return this===e?!0:e instanceof this.constructor?Vu(this.toBER(),e.toBER()):!1}},u(el,"re"),el);function fE(i){if(i instanceof Z.Constructed)for(let e of i.valueBlock.value)fE(e)&&(i.lenBlock.isIndefiniteForm=!0);return!!i.lenBlock.isIndefiniteForm}u(fE,"ae");ht.NAME="BaseBlock";var tl,wE=(tl=class extends ht{constructor({value:e="",...t}={},s){super(t,s),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,s){let n=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?s:this.lenBlock.length);return n===-1?(this.error=this.valueBlock.error,n):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),n)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}},u(tl,"ie"),tl);wE.NAME="BaseStringBlock";var sl,BE=(sl=class extends zn(yt){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}},u(sl,"oe"),sl),FB,HB,YB,jB,JB,LB,OB,WB,PB,zB,ZB,KB,qB,XB,$B,_B,ep,tp,sp,np,rp,ap,ip,op,cp,lp,up,hp,Ap,gp,dp,mp,fp;BE.NAME="PrimitiveValueBlock";var nl,se=(nl=class extends ht{constructor(e={}){super(e,BE),this.idBlock.isConstructed=!1}},u(nl,"Je"),nl);function Ig(i,e=0,t=i.length){let s=e,n=new ht({},yt),r=new $i;if(!Pn(r,i,e,t))return n.error=r.error,{offset:-1,result:n};if(!i.subarray(e,e+t).length)return n.error="Zero buffer length",{offset:-1,result:n};let a=n.idBlock.fromBER(i,e,t);if(n.idBlock.warnings.length&&n.warnings.concat(n.idBlock.warnings),a===-1)return n.error=n.idBlock.error,{offset:-1,result:n};if(e=a,t-=n.idBlock.blockLength,a=n.lenBlock.fromBER(i,e,t),n.lenBlock.warnings.length&&n.warnings.concat(n.lenBlock.warnings),a===-1)return n.error=n.lenBlock.error,{offset:-1,result:n};if(e=a,t-=n.lenBlock.blockLength,!n.idBlock.isConstructed&&n.lenBlock.isIndefiniteForm)return n.error="Indefinite length form used for primitive encoding form",{offset:-1,result:n};let o=ht;if(n.idBlock.tagClass===1){if(n.idBlock.tagNumber>=37&&n.idBlock.isHexOnly===!1)return n.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:n};switch(n.idBlock.tagNumber){case 0:if(n.idBlock.isConstructed&&n.lenBlock.length>0)return n.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:n};o=Z.EndOfContent;break;case 1:o=Z.Boolean;break;case 2:o=Z.Integer;break;case 3:o=Z.BitString;break;case 4:o=Z.OctetString;break;case 5:o=Z.Null;break;case 6:o=Z.ObjectIdentifier;break;case 10:o=Z.Enumerated;break;case 12:o=Z.Utf8String;break;case 13:o=Z.RelativeObjectIdentifier;break;case 14:o=Z.TIME;break;case 15:return n.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:n};case 16:o=Z.Sequence;break;case 17:o=Z.Set;break;case 18:o=Z.NumericString;break;case 19:o=Z.PrintableString;break;case 20:o=Z.TeletexString;break;case 21:o=Z.VideotexString;break;case 22:o=Z.IA5String;break;case 23:o=Z.UTCTime;break;case 24:o=Z.GeneralizedTime;break;case 25:o=Z.GraphicString;break;case 26:o=Z.VisibleString;break;case 27:o=Z.GeneralString;break;case 28:o=Z.UniversalString;break;case 29:o=Z.CharacterString;break;case 30:o=Z.BmpString;break;case 31:o=Z.DATE;break;case 32:o=Z.TimeOfDay;break;case 33:o=Z.DateTime;break;case 34:o=Z.Duration;break;default:{let c=n.idBlock.isConstructed?new Z.Constructed:new Z.Primitive;c.idBlock=n.idBlock,c.lenBlock=n.lenBlock,c.warnings=n.warnings,n=c}}}else o=n.idBlock.isConstructed?Z.Constructed:Z.Primitive;return n=function(c,l){if(c instanceof l)return c;let A=new l;return A.idBlock=c.idBlock,A.lenBlock=c.lenBlock,A.warnings=c.warnings,A.valueBeforeDecodeView=c.valueBeforeDecodeView,A}(n,o),a=n.fromBER(i,e,n.lenBlock.isIndefiniteForm?t:n.lenBlock.length),n.valueBeforeDecodeView=i.subarray(s,s+n.blockLength),{offset:a,result:n}}u(Ig,"je");function Qe(i){if(!i.byteLength){let e=new ht({},yt);return e.error="Input buffer has zero length",{offset:-1,result:e}}return Ig(ne.toUint8Array(i).slice(),0,i.byteLength)}u(Qe,"Oe");FB=se,Z.Primitive=FB,se.NAME="PRIMITIVE";var rl,zr=(rl=class extends yt{constructor({value:e=[],isIndefiniteForm:t=!1,...s}={}){super(s),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,s){let n=ne.toUint8Array(e);if(!Pn(this,n,t,s))return-1;if(this.valueBeforeDecodeView=n.subarray(t,t+s),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let r=t;for(;a=this.isIndefiniteForm,o=s,(a?1:o)>0;){let c=Ig(n,r,s);if(c.offset===-1)return this.error=c.result.error,this.warnings.concat(c.result.warnings),-1;if(r=c.offset,this.blockLength+=c.result.blockLength,s-=c.result.blockLength,this.value.push(c.result),this.isIndefiniteForm&&c.result.constructor.NAME===Ag)break}var a,o;return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Ag?this.value.pop():this.warnings.push("No EndOfContent block encoded")),r}toBER(e,t){let s=t||new Uw;for(let n=0;n<this.value.length;n++)this.value[n].toBER(e,s);return t?As:s.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}},u(rl,"Le"),rl);zr.NAME="ConstructedValueBlock";var al,v=(al=class extends ht{constructor(e={}){super(e,zr),this.idBlock.isConstructed=!0}fromBER(e,t,s){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let n=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?s:this.lenBlock.length);return n===-1?(this.error=this.valueBlock.error,n):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),n)}onAsciiEncoding(){let e=[];for(let s of this.valueBlock.value)e.push(s.toString("ascii").split(`
`).map(n=>` ${n}`).join(`
`));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
${e.join(`
`)}`:`${t} :`}},u(al,"ze"),al);HB=v,Z.Constructed=HB,v.NAME="CONSTRUCTED";var il,pE=(il=class extends yt{fromBER(e,t,s){return t}toBER(e){return As}},u(il,"We"),il);pE.override="EndOfContentValueBlock";var ol,wp=(ol=class extends ht{constructor(e={}){super(e,pE),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}},u(ol,"Ze"),ol);YB=wp,Z.EndOfContent=YB,wp.NAME=Ag;var cl,Ve=(cl=class extends ht{constructor(e={}){super(e,yt),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,s){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=s,t+s>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+s}toBER(e,t){let s=new ArrayBuffer(2);if(!e){let n=new Uint8Array(s);n[0]=5,n[1]=0}return t&&t.write(s),s}onAsciiEncoding(){return`${this.constructor.NAME}`}},u(cl,"Ke"),cl);jB=Ve,Z.Null=jB,Ve.NAME="NULL";var ll,EE=(ll=class extends zn(yt){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=ne.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,s){let n=ne.toUint8Array(e);return Pn(this,n,t,s)?(this.valueHexView=n.subarray(t,t+s),s>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,lE.call(this),this.blockLength=s,t+s):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}},u(ll,"Pe"),ll);EE.NAME="BooleanValueBlock";var ul,Ps=(ul=class extends ht{constructor(e={}){super(e,EE),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}},u(ul,"Xe"),ul);JB=Ps,Z.Boolean=JB,Ps.NAME="BOOLEAN";var hl,yE=(hl=class extends zn(zr){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,s){let n=0;if(this.isConstructed){if(this.isHexOnly=!1,n=zr.prototype.fromBER.call(this,e,t,s),n===-1)return n;for(let r=0;r<this.value.length;r++){let a=this.value[r].constructor.NAME;if(a===Ag){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(a!==AE)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,n=super.fromBER(e,t,s),this.blockLength=s;return n}toBER(e,t){return this.isConstructed?zr.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}},u(hl,"qe"),hl);yE.NAME="OctetStringValueBlock";var ji,J=(ji=class extends ht{constructor({idBlock:e={},lenBlock:t={},...s}={}){var n,r;(n=s.isConstructed)!==null&&n!==void 0||(s.isConstructed=!!(!((r=s.value)===null||r===void 0)&&r.length)),super({idBlock:{isConstructed:s.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!s.isIndefiniteForm},...s},yE),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,s){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,s===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let n=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+s);try{if(n.byteLength){let r=Ig(n,0,n.byteLength);r.offset!==-1&&r.offset===s&&(this.valueBlock.value=[r.result])}}catch{}}return super.fromBER(e,t,s)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?v.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${ie.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof ji&&e.push(t.valueBlock.valueHexView);return ne.concat(e)}},u(ji,"_e"),ji);LB=J,Z.OctetString=LB,J.NAME=AE;var Al,IE=(Al=class extends zn(zr){constructor({unusedBits:e=0,isConstructed:t=!1,...s}={}){super(s),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,s){if(!s)return t;let n=-1;if(this.isConstructed){if(n=zr.prototype.fromBER.call(this,e,t,s),n===-1)return n;for(let o of this.value){let c=o.constructor.NAME;if(c===Ag){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==gE)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=o.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return n}let r=ne.toUint8Array(e);if(!Pn(this,r,t,s))return-1;let a=r.subarray(t,t+s);if(this.unusedBits=a[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let o=a.subarray(1);try{if(o.byteLength){let c=Ig(o,0,o.byteLength);c.offset!==-1&&c.offset===s-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=a.subarray(1),this.blockLength=a.length,t+s}toBER(e,t){if(this.isConstructed)return zr.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return As;let s=new Uint8Array(this.valueHexView.length+1);return s[0]=this.unusedBits,s.set(this.valueHexView,1),s.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}},u(Al,"$e"),Al);IE.NAME="BitStringValueBlock";var gl,ue=(gl=class extends ht{constructor({idBlock:e={},lenBlock:t={},...s}={}){var n,r;(n=s.isConstructed)!==null&&n!==void 0||(s.isConstructed=!!(!((r=s.value)===null||r===void 0)&&r.length)),super({idBlock:{isConstructed:s.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!s.isIndefiniteForm},...s},IE),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,s){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,s)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return v.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let n of t)e.push(n.toString(2).padStart(8,"0"));let s=e.join("");return`${this.constructor.NAME} : ${s.substring(0,s.length-this.valueBlock.unusedBits)}`}}},u(gl,"et"),gl);function EI(i,e){let t=new Uint8Array([0]),s=new Uint8Array(i),n=new Uint8Array(e),r=s.slice(0),a=r.length-1,o=n.slice(0),c=o.length-1,l=0,A=0;for(let h=c<a?a:c;h>=0;h--,A++)A<o.length?l=r[a-A]+o[c-A]+t[0]:l=r[a-A]+t[0],t[0]=l/10,A>=r.length?r=Vf(new Uint8Array([l%10]),r):r[a-A]=l%10;return t[0]>0&&(r=Vf(t,r)),r}u(EI,"tt");function Bp(i){if(i>=Wu.length)for(let e=Wu.length;e<=i;e++){let t=new Uint8Array([0]),s=Wu[e-1].slice(0);for(let n=s.length-1;n>=0;n--){let r=new Uint8Array([(s[n]<<1)+t[0]]);t[0]=r[0]/10,s[n]=r[0]%10}t[0]>0&&(s=Vf(t,s)),Wu.push(s)}return Wu[i]}u(Bp,"st");function yI(i,e){let t=0,s=new Uint8Array(i),n=new Uint8Array(e),r=s.slice(0),a=r.length-1,o=n.slice(0),c=o.length-1,l,A=0;for(let h=c;h>=0;h--,A++)l=r[a-A]-o[c-A]-t,l<0?(t=1,r[a-A]=l+10):(t=0,r[a-A]=l);if(t>0)for(let h=a-c+1;h>=0;h--,A++){if(l=r[a-A]-t,!(l<0)){t=0,r[a-A]=l;break}t=1,r[a-A]=l+10}return r.slice()}u(yI,"nt");OB=ue,Z.BitString=OB,ue.NAME=gE;var dl,kf=(dl=class extends zn(yt){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=lE.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(function(t){let s=t<0?-1*t:t,n=128;for(let r=1;r<8;r++){if(s<=n){if(t<0){let c=Wn(n-s,8,r);return new Uint8Array(c)[0]|=128,c}let a=Wn(s,8,r),o=new Uint8Array(a);if(128&o[0]){let c=a.slice(0),l=new Uint8Array(c);a=new ArrayBuffer(a.byteLength+1),o=new Uint8Array(a);for(let A=0;A<c.byteLength;A++)o[A+1]=l[A];o[0]=0}return a}n*=Math.pow(2,8)}return new ArrayBuffer(0)}(e))}get valueDec(){return this._valueDec}fromDER(e,t,s,n=0){let r=this.fromBER(e,t,s);if(r===-1)return r;let a=this.valueHexView;return a[0]===0&&128&a[1]?this.valueHexView=a.subarray(1):n!==0&&a.length<n&&(n-a.length>1&&(n=a.length+1),this.valueHexView=a.subarray(n-a.length)),r}toDER(e=!1){let t=this.valueHexView;switch(!0){case!!(128&t[0]):{let s=new Uint8Array(this.valueHexView.length+1);s[0]=0,s.set(t,1),this.valueHexView=s}break;case(t[0]===0&&!(128&t[1])):this.valueHexView=this.valueHexView.subarray(1)}return this.toBER(e)}fromBER(e,t,s){let n=super.fromBER(e,t,s);return n===-1||this.setValueHex(),n}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=8*this.valueHexView.length-1,t,s=new Uint8Array(8*this.valueHexView.length/3),n=0,r=this.valueHexView,a="",o=!1;for(let c=r.byteLength-1;c>=0;c--){t=r[c];for(let l=0;l<8;l++)1&~t||(n===e?(s=yI(Bp(n),s),a="-"):s=EI(s,Bp(n))),n++,t>>=1}for(let c=0;c<s.length;c++)s[c]&&(o=!0),o&&(a+=RB.charAt(s[c]));return o===!1&&(a+=RB.charAt(0)),a}},u(dl,"rt"),dl);WB=kf,kf.NAME="IntegerValueBlock",Object.defineProperty(WB.prototype,"valueHex",{set:u(function(i){this.valueHexView=new Uint8Array(i),this.setValueHex()},"set"),get:u(function(){return this.valueHexView.slice().buffer},"get")});var gn,x=(gn=class extends ht{constructor(e={}){super(e,kf),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return qd(),BigInt(this.valueBlock.toString())}static fromBigInt(e){qd();let t=BigInt(e),s=new Uw,n=t.toString(16).replace(/^-/,""),r=new Uint8Array(ie.FromHex(n));if(t<0){let a=new Uint8Array(r.length+(128&r[0]?1:0));a[0]|=128;let o=BigInt(`0x${ie.ToHex(a)}`)+t,c=ne.toUint8Array(ie.FromHex(o.toString(16)));c[0]|=128,s.write(c)}else 128&r[0]&&s.write(new Uint8Array([0])),s.write(r);return new gn({valueHex:s.final()})}convertToDER(){let e=new gn({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new gn({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}},u(gn,"at"),gn);PB=x,Z.Integer=PB,x.NAME="INTEGER";var ml,qi=(ml=class extends x{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}},u(ml,"it"),ml);zB=qi,Z.Enumerated=zB,qi.NAME="ENUMERATED";var fl,xf=(fl=class extends zn(yt){constructor({valueDec:e=-1,isFirstSid:t=!1,...s}={}){super(s),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,s){if(!s)return t;let n=ne.toUint8Array(e);if(!Pn(this,n,t,s))return-1;let r=n.subarray(t,t+s);this.valueHexView=new Uint8Array(s);for(let o=0;o<s&&(this.valueHexView[o]=127&r[o],this.blockLength++,128&r[o]);o++);let a=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength;o++)a[o]=this.valueHexView[o];return this.valueHexView=a,128&r[this.blockLength-1]?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=Ki(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){qd();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let s=new Uint8Array(t.length/7);for(let n=0;n<s.length;n++)s[n]=parseInt(t.slice(7*n,7*n+7),2)+(n+1<s.length?128:0);this.fromBER(s.buffer,0,s.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let n=this.valueHexView,r=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength-1;a++)r[a]=128|n[a];return r[this.blockLength-1]=n[this.blockLength-1],r.buffer}let t=Wn(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",As;let s=new Uint8Array(t.byteLength);if(!e){let n=new Uint8Array(t),r=t.byteLength-1;for(let a=0;a<r;a++)s[a]=128|n[a];s[r]=n[r]}return s}toString(){let e="";if(this.isHexOnly)e=ie.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}},u(fl,"ot"),fl);xf.NAME="sidBlock";var wl,CE=(wl=class extends yt{constructor({value:e="",...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,s){let n=t;for(;s>0;){let r=new xf;if(n=r.fromBER(e,n,s),n===-1)return this.blockLength=0,this.error=r.error,n;this.value.length===0&&(r.isFirstSid=!0),this.blockLength+=r.blockLength,s-=r.blockLength,this.value.push(r)}return n}toBER(e){let t=[];for(let s=0;s<this.value.length;s++){let n=this.value[s].toBER(e);if(n.byteLength===0)return this.error=this.value[s].error,As;t.push(n)}return Tw(t)}fromString(e){this.value=[];let t=0,s=0,n="",r=!1;do if(s=e.indexOf(".",t),n=s===-1?e.substring(t):e.substring(t,s),t=s+1,r){let a=this.value[0],o=0;switch(a.valueDec){case 0:break;case 1:o=40;break;case 2:o=80;break;default:return void(this.value=[])}let c=parseInt(n,10);if(isNaN(c))return;a.valueDec=c+o,r=!1}else{let a=new xf;if(n>Number.MAX_SAFE_INTEGER){qd();let o=BigInt(n);a.valueBigInt=o}else if(a.valueDec=parseInt(n,10),isNaN(a.valueDec))return;this.value.length||(a.isFirstSid=!0,r=!0),this.value.push(a)}while(s!==-1)}toString(){let e="",t=!1;for(let s=0;s<this.value.length;s++){t=this.value[s].isHexOnly;let n=this.value[s].toString();s!==0&&(e=`${e}.`),t?(n=`{${n}}`,this.value[s].isFirstSid?e=`2.{${n} - 80}`:e+=n):e+=n}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}},u(wl,"lt"),wl);CE.NAME="ObjectIdentifierValueBlock";var Bl,z=(Bl=class extends ht{constructor(e={}){super(e,CE),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}},u(Bl,"ct"),Bl);ZB=z,Z.ObjectIdentifier=ZB,z.NAME="OBJECT IDENTIFIER";var pl,Tf=(pl=class extends zn($i){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,s){if(s===0)return t;let n=ne.toUint8Array(e);if(!Pn(this,n,t,s))return-1;let r=n.subarray(t,t+s);this.valueHexView=new Uint8Array(s);for(let o=0;o<s&&(this.valueHexView[o]=127&r[o],this.blockLength++,128&r[o]);o++);let a=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength;o++)a[o]=this.valueHexView[o];return this.valueHexView=a,128&r[this.blockLength-1]?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=Ki(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let n=this.valueHexView,r=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength-1;a++)r[a]=128|n[a];return r[this.blockLength-1]=n[this.blockLength-1],r.buffer}let t=Wn(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",As;let s=new Uint8Array(t.byteLength);if(!e){let n=new Uint8Array(t),r=t.byteLength-1;for(let a=0;a<r;a++)s[a]=128|n[a];s[r]=n[r]}return s.buffer}toString(){let e="";return e=this.isHexOnly?ie.ToHex(this.valueHexView):this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}},u(pl,"ht"),pl);Tf.NAME="relativeSidBlock";var El,ME=(El=class extends yt{constructor({value:e="",...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,s){let n=t;for(;s>0;){let r=new Tf;if(n=r.fromBER(e,n,s),n===-1)return this.blockLength=0,this.error=r.error,n;this.blockLength+=r.blockLength,s-=r.blockLength,this.value.push(r)}return n}toBER(e,t){let s=[];for(let n=0;n<this.value.length;n++){let r=this.value[n].toBER(e);if(r.byteLength===0)return this.error=this.value[n].error,As;s.push(r)}return Tw(s)}fromString(e){this.value=[];let t=0,s=0,n="";do{s=e.indexOf(".",t),n=s===-1?e.substring(t):e.substring(t,s),t=s+1;let r=new Tf;if(r.valueDec=parseInt(n,10),isNaN(r.valueDec))return!0;this.value.push(r)}while(s!==-1);return!0}toString(){let e="",t=!1;for(let s=0;s<this.value.length;s++){t=this.value[s].isHexOnly;let n=this.value[s].toString();s!==0&&(e=`${e}.`),t&&(n=`{${n}}`),e+=n}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}},u(El,"ut"),El);ME.NAME="RelativeObjectIdentifierValueBlock";var yl,pp=(yl=class extends ht{constructor(e={}){super(e,ME),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}},u(yl,"At"),yl);KB=pp,Z.RelativeObjectIdentifier=KB,pp.NAME="RelativeObjectIdentifier";var Il,M=(Il=class extends v{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}},u(Il,"gt"),Il);qB=M,Z.Sequence=qB,M.NAME="SEQUENCE";var Cl,Se=(Cl=class extends v{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}},u(Cl,"mt"),Cl);XB=Se,Z.Set=XB,Se.NAME="SET";var Ml,bE=(Ml=class extends zn(yt){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=ar}toJSON(){return{...super.toJSON(),value:this.value}}},u(Ml,"wt"),Ml);bE.NAME="StringValueBlock";var bl,NE=(bl=class extends bE{},u(bl,"dt"),bl);NE.NAME="SimpleStringValueBlock";var Nl,Tt=(Nl=class extends wE{constructor({...e}={}){super(e,NE)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,ne.toUint8Array(e))}fromString(e){let t=e.length,s=this.valueBlock.valueHexView=new Uint8Array(t);for(let n=0;n<t;n++)s[n]=e.charCodeAt(n);this.valueBlock.value=e}},u(Nl,"Bt"),Nl);Tt.NAME="SIMPLE STRING";var vl,vE=(vl=class extends Tt{fromBuffer(e){this.valueBlock.valueHexView=ne.toUint8Array(e);try{this.valueBlock.value=ie.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=ie.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(ie.FromUtf8String(e)),this.valueBlock.value=e}},u(vl,"ft"),vl);vE.NAME="Utf8StringValueBlock";var Dl,hs=(Dl=class extends vE{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}},u(Dl,"Et"),Dl);$B=hs,Z.Utf8String=$B,hs.NAME="UTF8String";var Ql,DE=(Ql=class extends Tt{fromBuffer(e){this.valueBlock.value=ie.ToUtf16String(e),this.valueBlock.valueHexView=ne.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(ie.FromUtf16String(e))}},u(Ql,"pt"),Ql);DE.NAME="BmpStringValueBlock";var Vl,gg=(Vl=class extends DE{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}},u(Vl,"It"),Vl);_B=gg,Z.BmpString=_B,gg.NAME="BMPString";var Sl,QE=(Sl=class extends Tt{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),s=new Uint8Array(t);for(let n=0;n<s.length;n+=4)s[n]=s[n+3],s[n+1]=s[n+2],s[n+2]=0,s[n+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,s=this.valueBlock.valueHexView=new Uint8Array(4*t);for(let n=0;n<t;n++){let r=Wn(e.charCodeAt(n),8),a=new Uint8Array(r);if(a.length>4)continue;let o=4-a.length;for(let c=a.length-1;c>=0;c--)s[4*n+c+o]=a[c]}this.valueBlock.value=e}},u(Sl,"yt"),Sl);QE.NAME="UniversalStringValueBlock";var kl,dg=(kl=class extends QE{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}},u(kl,"Ct"),kl);ep=dg,Z.UniversalString=ep,dg.NAME="UniversalString";var xl,jc=(xl=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}},u(xl,"Mt"),xl);tp=jc,Z.NumericString=tp,jc.NAME="NumericString";var Tl,ls=(Tl=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}},u(Tl,"Dt"),Tl);sp=ls,Z.PrintableString=sp,ls.NAME="PrintableString";var Ul,mg=(Ul=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}},u(Ul,"Nt"),Ul);np=mg,Z.TeletexString=np,mg.NAME="TeletexString";var Rl,Uf=(Rl=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}},u(Rl,"bt"),Rl);rp=Uf,Z.VideotexString=rp,Uf.NAME="VideotexString";var Gl,Xd=(Gl=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}},u(Gl,"Qt"),Gl);ap=Xd,Z.IA5String=ap,Xd.NAME="IA5String";var Fl,Rf=(Fl=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}},u(Fl,"vt"),Fl);ip=Rf,Z.GraphicString=ip,Rf.NAME="GraphicString";var Hl,$d=(Hl=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}},u(Hl,"Vt"),Hl);op=$d,Z.VisibleString=op,$d.NAME="VisibleString";var Yl,Gf=(Yl=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}},u(Yl,"St"),Yl);cp=Gf,Z.GeneralString=cp,Gf.NAME="GeneralString";var jl,Ff=(jl=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}},u(jl,"kt"),jl);lp=Ff,Z.CharacterString=lp,Ff.NAME="CharacterString";var Jl,ku=(Jl=class extends $d{constructor({value:e,valueDate:t,...s}={}){if(super(s),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let n=0;n<e.length;n++)this.valueBlock.valueHexView[n]=e.charCodeAt(n)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,ne.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),s=new Uint8Array(t);for(let n=0;n<e.length;n++)s[n]=e.charCodeAt(n);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let t=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/gi.exec(e);if(t===null)return void(this.error="Wrong input string for conversion");let s=parseInt(t[1],10);this.year=s>=50?1900+s:2e3+s,this.month=parseInt(t[2],10),this.day=parseInt(t[3],10),this.hour=parseInt(t[4],10),this.minute=parseInt(t[5],10),this.second=parseInt(t[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=St(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=St(this.month,2),t[2]=St(this.day,2),t[3]=St(this.hour,2),t[4]=St(this.minute,2),t[5]=St(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}},u(Jl,"Tt"),Jl);up=ku,Z.UTCTime=up,ku.NAME="UTCTime";var Ll,Ie=(Ll=class extends ku{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t,s=!1,n="",r="",a=0,o=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),s=!0;else{let h=new Number(e[e.length-1]);if(isNaN(h.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(s){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let h=1,d=n.indexOf("+"),m="";if(d===-1&&(d=n.indexOf("-"),h=-1),d!==-1){if(m=n.substring(d+1),n=n.substring(0,d),m.length!==2&&m.length!==4)throw new Error("Wrong input string for conversion");let E=parseInt(m.substring(0,2),10);if(isNaN(E.valueOf()))throw new Error("Wrong input string for conversion");if(o=h*E,m.length===4){if(E=parseInt(m.substring(2,4),10),isNaN(E.valueOf()))throw new Error("Wrong input string for conversion");c=h*E}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let h=new Number(`0${n.substring(l)}`);if(isNaN(h.valueOf()))throw new Error("Wrong input string for conversion");a=h.valueOf(),r=n.substring(0,l)}else r=n;switch(!0){case r.length===8:if(t=/(\d{4})(\d{2})(\d{2})/gi,l!==-1)throw new Error("Wrong input string for conversion");break;case r.length===10:if(t=/(\d{4})(\d{2})(\d{2})(\d{2})/gi,l!==-1){let h=60*a;this.minute=Math.floor(h),h=60*(h-this.minute),this.second=Math.floor(h),h=1e3*(h-this.second),this.millisecond=Math.floor(h)}break;case r.length===12:if(t=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/gi,l!==-1){let h=60*a;this.second=Math.floor(h),h=1e3*(h-this.second),this.millisecond=Math.floor(h)}break;case r.length===14:if(t=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/gi,l!==-1){let h=1e3*a;this.millisecond=Math.floor(h)}break;default:throw new Error("Wrong input string for conversion")}let A=t.exec(r);if(A===null)throw new Error("Wrong input string for conversion");for(let h=1;h<A.length;h++)switch(h){case 1:this.year=parseInt(A[h],10);break;case 2:this.month=parseInt(A[h],10);break;case 3:this.day=parseInt(A[h],10);break;case 4:this.hour=parseInt(A[h],10)+o;break;case 5:this.minute=parseInt(A[h],10)+c;break;case 6:this.second=parseInt(A[h],10);break;default:throw new Error("Wrong input string for conversion")}if(s===!1){let h=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=h.getUTCFullYear(),this.month=h.getUTCMonth(),this.day=h.getUTCDay(),this.hour=h.getUTCHours(),this.minute=h.getUTCMinutes(),this.second=h.getUTCSeconds(),this.millisecond=h.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(St(this.year,4)),t.push(St(this.month,2)),t.push(St(this.day,2)),t.push(St(this.hour,2)),t.push(St(this.minute,2)),t.push(St(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(St(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}},u(Ll,"Ut"),Ll);hp=Ie,Z.GeneralizedTime=hp,Ie.NAME="GeneralizedTime";var Ol,Ep=(Ol=class extends hs{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}},u(Ol,"Gt"),Ol);Ap=Ep,Z.DATE=Ap,Ep.NAME="DATE";var Wl,yp=(Wl=class extends hs{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}},u(Wl,"xt"),Wl);gp=yp,Z.TimeOfDay=gp,yp.NAME="TimeOfDay";var Pl,Ip=(Pl=class extends hs{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}},u(Pl,"Rt"),Pl);dp=Ip,Z.DateTime=dp,Ip.NAME="DateTime";var zl,Cp=(zl=class extends hs{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}},u(zl,"Ft"),zl);mp=Cp,Z.Duration=mp,Cp.NAME="Duration";var Zl,Mp=(Zl=class extends hs{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}},u(Zl,"Ht"),Zl);fp=Mp,Z.TIME=fp,Mp.NAME="TIME";var Kl,re=(Kl=class{constructor({name:e="",optional:t=!1}={}){this.name=e,this.optional=t}},u(Kl,"Yt"),Kl),ql,Ce=(ql=class extends re{constructor({value:e=[],...t}={}){super(t),this.value=e}},u(ql,"Jt"),ql),Xl,ae=(Xl=class extends re{constructor({value:e=new re,local:t=!1,...s}={}){super(s),this.value=e,this.local=t}},u(Xl,"jt"),Xl),$l,_d=($l=class{constructor({data:e=Cm}={}){this.dataView=ne.toUint8Array(e)}get data(){return this.dataView.slice().buffer}set data(e){this.dataView=ne.toUint8Array(e)}fromBER(e,t,s){let n=t+s;return this.dataView=ne.toUint8Array(e).subarray(t,n),n}toBER(e){return this.dataView.slice().buffer}},u($l,"Ot"),$l);function H(i,e,t){if(t instanceof Ce){for(let n=0;n<t.value.length;n++)if(H(i,e,t.value[n]).verified)return{verified:!0,result:i};{let n={verified:!1,result:{error:"Wrong values for Choice type"}};return t.hasOwnProperty(Fm)&&(n.name=t.name),n}}if(t instanceof re)return t.hasOwnProperty(Fm)&&(i[t.name]=e),{verified:!0,result:i};if(!(i instanceof Object))return{verified:!1,result:{error:"Wrong root object"}};if(!(e instanceof Object))return{verified:!1,result:{error:"Wrong ASN.1 data"}};if(!(t instanceof Object))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(!("idBlock"in t))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(!("fromBER"in t.idBlock))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(!("toBER"in t.idBlock))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};let s=t.idBlock.toBER(!1);if(s.byteLength===0)return{verified:!1,result:{error:"Error encoding idBlock for ASN.1 schema"}};if(t.idBlock.fromBER(s,0,s.byteLength)===-1)return{verified:!1,result:{error:"Error decoding idBlock for ASN.1 schema"}};if(t.idBlock.hasOwnProperty("tagClass")===!1)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(t.idBlock.tagClass!==e.idBlock.tagClass)return{verified:!1,result:i};if(t.idBlock.hasOwnProperty("tagNumber")===!1)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(t.idBlock.tagNumber!==e.idBlock.tagNumber)return{verified:!1,result:i};if(t.idBlock.hasOwnProperty("isConstructed")===!1)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(t.idBlock.isConstructed!==e.idBlock.isConstructed)return{verified:!1,result:i};if(!("isHexOnly"in t.idBlock))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(t.idBlock.isHexOnly!==e.idBlock.isHexOnly)return{verified:!1,result:i};if(t.idBlock.isHexOnly){if(!(GB in t.idBlock))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};let n=t.idBlock.valueHexView,r=e.idBlock.valueHexView;if(n.length!==r.length)return{verified:!1,result:i};for(let a=0;a<n.length;a++)if(n[a]!==r[1])return{verified:!1,result:i}}if(t.name&&(t.name=t.name.replace(/^\s+|\s+$/g,ar),t.name&&(i[t.name]=e)),t instanceof Z.Constructed){let n=0,r={verified:!1,result:{error:"Unknown error"}},a=t.valueBlock.value.length;if(a>0&&t.valueBlock.value[0]instanceof ae&&(a=e.valueBlock.value.length),a===0)return{verified:!0,result:i};if(e.valueBlock.value.length===0&&t.valueBlock.value.length!==0){let o=!0;for(let c=0;c<t.valueBlock.value.length;c++)o=o&&(t.valueBlock.value[c].optional||!1);return o?{verified:!0,result:i}:(t.name&&(t.name=t.name.replace(/^\s+|\s+$/g,ar),t.name&&delete i[t.name]),i.error="Inconsistent object length",{verified:!1,result:i})}for(let o=0;o<a;o++)if(o-n>=e.valueBlock.value.length){if(t.valueBlock.value[o].optional===!1){let c={verified:!1,result:i};return i.error="Inconsistent length between ASN.1 data and schema",t.name&&(t.name=t.name.replace(/^\s+|\s+$/g,ar),t.name&&(delete i[t.name],c.name=t.name)),c}}else if(t.valueBlock.value[0]instanceof ae){if(r=H(i,e.valueBlock.value[o],t.valueBlock.value[0].value),r.verified===!1){if(!t.valueBlock.value[0].optional)return t.name&&(t.name=t.name.replace(/^\s+|\s+$/g,ar),t.name&&delete i[t.name]),r;n++}if(Fm in t.valueBlock.value[0]&&t.valueBlock.value[0].name.length>0){let c={};c="local"in t.valueBlock.value[0]&&t.valueBlock.value[0].local?e:i,c[t.valueBlock.value[0].name]===void 0&&(c[t.valueBlock.value[0].name]=[]),c[t.valueBlock.value[0].name].push(e.valueBlock.value[o])}}else if(r=H(i,e.valueBlock.value[o-n],t.valueBlock.value[o]),r.verified===!1){if(!t.valueBlock.value[o].optional)return t.name&&(t.name=t.name.replace(/^\s+|\s+$/g,ar),t.name&&delete i[t.name]),r;n++}if(r.verified===!1){let o={verified:!1,result:i};return t.name&&(t.name=t.name.replace(/^\s+|\s+$/g,ar),t.name&&(delete i[t.name],o.name=t.name)),o}return{verified:!0,result:i}}if(t.primitiveSchema&&GB in e.valueBlock){let n=Ig(e.valueBlock.valueHexView);if(n.offset===-1){let r={verified:!1,result:n.result};return t.name&&(t.name=t.name.replace(/^\s+|\s+$/g,ar),t.name&&(delete i[t.name],r.name=t.name)),r}return H(i,n.result,t.primitiveSchema)}return{verified:!0,result:i}}u(H,"Lt");function Rw(i){let e=new Uint8Array(i);return crypto.getRandomValues(e)}u(Rw,"zt");async function VE(i,e,t,s){let n=Rw(8),r=new Uint8Array([...i,...n]),a=await crypto.subtle.importKey("raw",e,"AES-GCM",!1,["encrypt","decrypt"]),o=await crypto.subtle.encrypt({name:"AES-GCM",iv:r,additionalData:s},a,t),c=new Uint8Array(o);return{cipher:new Uint8Array([...n,...c]),nonce:r}}u(VE,"Wt");async function SE(i,e,t,s){let n=t.slice(0,8),r=t.slice(8),a=new Uint8Array([...i,...n]),o=await crypto.subtle.importKey("raw",e,"AES-GCM",!1,["encrypt","decrypt"]),c=await crypto.subtle.decrypt({name:"AES-GCM",iv:a,additionalData:s},o,r);return new Uint8Array(c)}u(SE,"Zt");async function bp(i,e){let t=await crypto.subtle.importKey("raw",i,{name:"HMAC",hash:"SHA-256"},!1,["sign","verify"]),s=await crypto.subtle.sign("HMAC",t,e);return new Uint8Array(s)}u(bp,"Kt");async function II(i,e,t,s){let n=dI[s];if(n==null||n==null)throw new Error(`Unsupported algorithm ${s}`);let r=function(a){let o=[];for(let c=0;c<a.length;c+=2)o.push(parseInt(a.substring(c,c+2),16));return new Uint8Array(o)}(i.subjectPublicKeyInfo.toString("hex"));switch(n.Type){case"RSASSA-PKCS1-v1_5":return await async function(a,o,c,l){let A=await crypto.subtle.importKey("spki",a,{name:l.Type,hash:l.Hashing},!0,["verify"]);return await crypto.subtle.verify(l.Type,A,o,c)}(r,e,t,n);case"RSA-PSS":return await async function(a,o,c,l){let A=await crypto.subtle.importKey("spki",a,{name:l.Type,hash:l.Hashing},!0,["verify"]);return await crypto.subtle.verify({name:l.Type,saltLength:l.SaltLength},A,o,c)}(r,e,t,n);case"ECDSA":return await async function(a,o,c,l){let A=Qe(o).result.valueBlock.value,h=A[0].valueBlock.valueHexView;h[0]===0&&(h=h.slice(1,h.length));let d=A[1].valueBlock.valueHexView;d[0]===0&&(d=d.slice(1,d.length));let m=new Uint8Array([...h,...d]),E=await crypto.subtle.importKey("spki",a,{name:"ECDSA",namedCurve:l.Curve},!0,["verify"]);return await crypto.subtle.verify({name:"ECDSA",hash:{name:l.Hashing}},E,m,c)}(r,e,t,n);default:throw new Error(`Unsupported algorithm ${n.Type}`)}}u(II,"Pt");async function Hf(i,e,t){let s=e,n=new Ne;for(let r=1;r<=t;r++){let a=await bp(i,s),o=await bp(i,new Uint8Array([...a,...e]));n.writeBytes(o),s=a}return n.Bytes()}u(Hf,"Xt");async function kE(i,e,t){let s=new Ne;s.writeBytes(xi(e)).writeBytes(t);let n=s.Bytes();return(await Hf(i,n,4)).slice(0,12)}u(kE,"qt");function Np(i){if(!Number.isSafeInteger(i)||i<0)throw new Error("positive integer expected, got "+i)}u(Np,"_t");function Mm(i,...e){if(!((t=i)instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"))throw new Error("Uint8Array expected");var t;if(e.length>0&&!e.includes(i.length))throw new Error("Uint8Array expected of length "+e+", got length="+i.length)}u(Mm,"$t");function em(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}u(em,"es");var io=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function Hm(i){return new DataView(i.buffer,i.byteOffset,i.byteLength)}u(Hm,"ss");function fs(i,e){return i<<32-e|i>>>e}u(fs,"ns");function Ym(i,e){return i<<e|i>>>32-e>>>0}u(Ym,"rs");function Gw(i){return typeof i=="string"&&(i=function(e){if(typeof e!="string")throw new Error("utf8ToBytes expected string, got "+typeof e);return new Uint8Array(new TextEncoder().encode(e))}(i)),Mm(i),i}u(Gw,"as");var _l,xE=(_l=class{clone(){return this._cloneInto()}},u(_l,"is"),_l);function bm(i){let e=u(s=>i().update(Gw(s)).digest(),"t"),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}u(bm,"os");function TE(i=32){if(io&&typeof io.getRandomValues=="function")return io.getRandomValues(new Uint8Array(i));if(io&&typeof io.randomBytes=="function")return io.randomBytes(i);throw new Error("crypto.getRandomValues must be defined")}u(TE,"ls");function UE(i,e,t){return i&e^~i&t}u(UE,"cs");function RE(i,e,t){return i&e^i&t^e&t}u(RE,"hs");var eu,Fw=(eu=class extends xE{constructor(e,t,s,n){super(),this.blockLen=e,this.outputLen=t,this.padOffset=s,this.isLE=n,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Hm(this.buffer)}update(e){em(this);let{view:t,buffer:s,blockLen:n}=this,r=(e=Gw(e)).length;for(let a=0;a<r;){let o=Math.min(n-this.pos,r-a);if(o!==n)s.set(e.subarray(a,a+o),this.pos),this.pos+=o,a+=o,this.pos===n&&(this.process(t,0),this.pos=0);else{let c=Hm(e);for(;n<=r-a;a+=n)this.process(c,a)}}return this.length+=e.length,this.roundClean(),this}digestInto(e){em(this),function(h,d){Mm(h);let m=d.outputLen;if(h.length<m)throw new Error("digestInto() expects output buffer of length at least "+m)}(e,this),this.finished=!0;let{buffer:t,view:s,blockLen:n,isLE:r}=this,{pos:a}=this;t[a++]=128,this.buffer.subarray(a).fill(0),this.padOffset>n-a&&(this.process(s,0),a=0);for(let h=a;h<n;h++)t[h]=0;(function(h,d,m,E){if(typeof h.setBigUint64=="function")return h.setBigUint64(d,m,E);let y=BigInt(32),f=BigInt(4294967295),p=Number(m>>y&f),B=Number(m&f),C=E?4:0,I=E?0:4;h.setUint32(d+C,p,E),h.setUint32(d+I,B,E)})(s,n-8,BigInt(8*this.length),r),this.process(s,0);let o=Hm(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,A=this.get();if(l>A.length)throw new Error("_sha2: outputLen bigger than state");for(let h=0;h<l;h++)o.setUint32(4*h,A[h],r)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let s=e.slice(0,t);return this.destroy(),s}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:s,length:n,finished:r,destroyed:a,pos:o}=this;return e.length=n,e.pos=o,e.finished=r,e.destroyed=a,n%t&&e.buffer.set(s),e}},u(eu,"us"),eu),CI=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),_n=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),er=new Uint32Array(64),tu,MI=(tu=class extends Fw{constructor(){super(64,32,8,!1),this.A=0|_n[0],this.B=0|_n[1],this.C=0|_n[2],this.D=0|_n[3],this.E=0|_n[4],this.F=0|_n[5],this.G=0|_n[6],this.H=0|_n[7]}get(){let{A:e,B:t,C:s,D:n,E:r,F:a,G:o,H:c}=this;return[e,t,s,n,r,a,o,c]}set(e,t,s,n,r,a,o,c){this.A=0|e,this.B=0|t,this.C=0|s,this.D=0|n,this.E=0|r,this.F=0|a,this.G=0|o,this.H=0|c}process(e,t){for(let h=0;h<16;h++,t+=4)er[h]=e.getUint32(t,!1);for(let h=16;h<64;h++){let d=er[h-15],m=er[h-2],E=fs(d,7)^fs(d,18)^d>>>3,y=fs(m,17)^fs(m,19)^m>>>10;er[h]=y+er[h-7]+E+er[h-16]|0}let{A:s,B:n,C:r,D:a,E:o,F:c,G:l,H:A}=this;for(let h=0;h<64;h++){let d=A+(fs(o,6)^fs(o,11)^fs(o,25))+UE(o,c,l)+CI[h]+er[h]|0,m=(fs(s,2)^fs(s,13)^fs(s,22))+RE(s,n,r)|0;A=l,l=c,c=o,o=a+d|0,a=r,r=n,n=s,s=d+m|0}s=s+this.A|0,n=n+this.B|0,r=r+this.C|0,a=a+this.D|0,o=o+this.E|0,c=c+this.F|0,l=l+this.G|0,A=A+this.H|0,this.set(s,n,r,a,o,c,l,A)}roundClean(){er.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}},u(tu,"ws"),tu),Hw=bm(()=>new MI),Ug=BigInt(2**32-1),Yf=BigInt(32);function vp(i,e=!1){return e?{h:Number(i&Ug),l:Number(i>>Yf&Ug)}:{h:0|Number(i>>Yf&Ug),l:0|Number(i&Ug)}}u(vp,"Es");var le={fromBig:vp,split:u(function(i,e=!1){let t=new Uint32Array(i.length),s=new Uint32Array(i.length);for(let n=0;n<i.length;n++){let{h:r,l:a}=vp(i[n],e);[t[n],s[n]]=[r,a]}return[t,s]},"split"),toBig:u((i,e)=>BigInt(i>>>0)<<Yf|BigInt(e>>>0),"toBig"),shrSH:u((i,e,t)=>i>>>t,"shrSH"),shrSL:u((i,e,t)=>i<<32-t|e>>>t,"shrSL"),rotrSH:u((i,e,t)=>i>>>t|e<<32-t,"rotrSH"),rotrSL:u((i,e,t)=>i<<32-t|e>>>t,"rotrSL"),rotrBH:u((i,e,t)=>i<<64-t|e>>>t-32,"rotrBH"),rotrBL:u((i,e,t)=>i>>>t-32|e<<64-t,"rotrBL"),rotr32H:u((i,e)=>e,"rotr32H"),rotr32L:u((i,e)=>i,"rotr32L"),rotlSH:u((i,e,t)=>i<<t|e>>>32-t,"rotlSH"),rotlSL:u((i,e,t)=>e<<t|i>>>32-t,"rotlSL"),rotlBH:u((i,e,t)=>e<<t-32|i>>>64-t,"rotlBH"),rotlBL:u((i,e,t)=>i<<t-32|e>>>64-t,"rotlBL"),add:u(function(i,e,t,s){let n=(e>>>0)+(s>>>0);return{h:i+t+(n/2**32|0)|0,l:0|n}},"add"),add3L:u((i,e,t)=>(i>>>0)+(e>>>0)+(t>>>0),"add3L"),add3H:u((i,e,t,s)=>e+t+s+(i/2**32|0)|0,"add3H"),add4L:u((i,e,t,s)=>(i>>>0)+(e>>>0)+(t>>>0)+(s>>>0),"add4L"),add4H:u((i,e,t,s,n)=>e+t+s+n+(i/2**32|0)|0,"add4H"),add5H:u((i,e,t,s,n,r)=>e+t+s+n+r+(i/2**32|0)|0,"add5H"),add5L:u((i,e,t,s,n)=>(i>>>0)+(e>>>0)+(t>>>0)+(s>>>0)+(n>>>0),"add5L")},[bI,NI]=le.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(i=>BigInt(i))),tr=new Uint32Array(80),sr=new Uint32Array(80),su,GE=(su=class extends Fw{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:s,Bl:n,Ch:r,Cl:a,Dh:o,Dl:c,Eh:l,El:A,Fh:h,Fl:d,Gh:m,Gl:E,Hh:y,Hl:f}=this;return[e,t,s,n,r,a,o,c,l,A,h,d,m,E,y,f]}set(e,t,s,n,r,a,o,c,l,A,h,d,m,E,y,f){this.Ah=0|e,this.Al=0|t,this.Bh=0|s,this.Bl=0|n,this.Ch=0|r,this.Cl=0|a,this.Dh=0|o,this.Dl=0|c,this.Eh=0|l,this.El=0|A,this.Fh=0|h,this.Fl=0|d,this.Gh=0|m,this.Gl=0|E,this.Hh=0|y,this.Hl=0|f}process(e,t){for(let C=0;C<16;C++,t+=4)tr[C]=e.getUint32(t),sr[C]=e.getUint32(t+=4);for(let C=16;C<80;C++){let I=0|tr[C-15],b=0|sr[C-15],V=le.rotrSH(I,b,1)^le.rotrSH(I,b,8)^le.shrSH(I,b,7),G=le.rotrSL(I,b,1)^le.rotrSL(I,b,8)^le.shrSL(I,b,7),D=0|tr[C-2],S=0|sr[C-2],Q=le.rotrSH(D,S,19)^le.rotrBH(D,S,61)^le.shrSH(D,S,6),N=le.rotrSL(D,S,19)^le.rotrBL(D,S,61)^le.shrSL(D,S,6),T=le.add4L(G,N,sr[C-7],sr[C-16]),j=le.add4H(T,V,Q,tr[C-7],tr[C-16]);tr[C]=0|j,sr[C]=0|T}let{Ah:s,Al:n,Bh:r,Bl:a,Ch:o,Cl:c,Dh:l,Dl:A,Eh:h,El:d,Fh:m,Fl:E,Gh:y,Gl:f,Hh:p,Hl:B}=this;for(let C=0;C<80;C++){let I=le.rotrSH(h,d,14)^le.rotrSH(h,d,18)^le.rotrBH(h,d,41),b=le.rotrSL(h,d,14)^le.rotrSL(h,d,18)^le.rotrBL(h,d,41),V=h&m^~h&y,G=d&E^~d&f,D=le.add5L(B,b,G,NI[C],sr[C]),S=le.add5H(D,p,I,V,bI[C],tr[C]),Q=0|D,N=le.rotrSH(s,n,28)^le.rotrBH(s,n,34)^le.rotrBH(s,n,39),T=le.rotrSL(s,n,28)^le.rotrBL(s,n,34)^le.rotrBL(s,n,39),j=s&r^s&o^r&o,U=n&a^n&c^a&c;p=0|y,B=0|f,y=0|m,f=0|E,m=0|h,E=0|d,{h,l:d}=le.add(0|l,0|A,0|S,0|Q),l=0|o,A=0|c,o=0|r,c=0|a,r=0|s,a=0|n;let L=le.add3L(Q,T,U);s=le.add3H(L,S,N,j),n=0|L}({h:s,l:n}=le.add(0|this.Ah,0|this.Al,0|s,0|n)),{h:r,l:a}=le.add(0|this.Bh,0|this.Bl,0|r,0|a),{h:o,l:c}=le.add(0|this.Ch,0|this.Cl,0|o,0|c),{h:l,l:A}=le.add(0|this.Dh,0|this.Dl,0|l,0|A),{h,l:d}=le.add(0|this.Eh,0|this.El,0|h,0|d),{h:m,l:E}=le.add(0|this.Fh,0|this.Fl,0|m,0|E),{h:y,l:f}=le.add(0|this.Gh,0|this.Gl,0|y,0|f),{h:p,l:B}=le.add(0|this.Hh,0|this.Hl,0|p,0|B),this.set(s,n,r,a,o,c,l,A,h,d,m,E,y,f,p,B)}roundClean(){tr.fill(0),sr.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},u(su,"Ds"),su),nu,vI=(nu=class extends GE{constructor(){super(),this.Ah=-876896931,this.Al=-1056596264,this.Bh=1654270250,this.Bl=914150663,this.Ch=-1856437926,this.Cl=812702999,this.Dh=355462360,this.Dl=-150054599,this.Eh=1731405415,this.El=-4191439,this.Fh=-1900787065,this.Fl=1750603025,this.Gh=-619958771,this.Gl=1694076839,this.Hh=1203062813,this.Hl=-1090891868,this.outputLen=48}},u(nu,"Ns"),nu),DI=bm(()=>new GE),FE=bm(()=>new vI),Nm=BigInt(0),tm=BigInt(1),QI=BigInt(2);function Xi(i){return i instanceof Uint8Array||ArrayBuffer.isView(i)&&i.constructor.name==="Uint8Array"}u(Xi,"ks");function Cg(i){if(!Xi(i))throw new Error("Uint8Array expected")}u(Cg,"Ts");function xu(i,e){if(typeof e!="boolean")throw new Error(i+" boolean expected, got "+e)}u(xu,"Us");var VI=Array.from({length:256},(i,e)=>e.toString(16).padStart(2,"0"));function Tu(i){Cg(i);let e="";for(let t=0;t<i.length;t++)e+=VI[i[t]];return e}u(Tu,"xs");function Fc(i){let e=i.toString(16);return 1&e.length?"0"+e:e}u(Fc,"Rs");function Yw(i){if(typeof i!="string")throw new Error("hex string expected, got "+typeof i);return i===""?Nm:BigInt("0x"+i)}u(Yw,"Fs");var Dp=48,SI=57,Qp=65,kI=70,Vp=97,xI=102;function Sp(i){return i>=Dp&&i<=SI?i-Dp:i>=Qp&&i<=kI?i-(Qp-10):i>=Vp&&i<=xI?i-(Vp-10):void 0}u(Sp,"zs");function Uu(i){if(typeof i!="string")throw new Error("hex string expected, got "+typeof i);let e=i.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let s=new Uint8Array(t);for(let n=0,r=0;n<t;n++,r+=2){let a=Sp(i.charCodeAt(r)),o=Sp(i.charCodeAt(r+1));if(a===void 0||o===void 0){let c=i[r]+i[r+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+r)}s[n]=16*a+o}return s}u(Uu,"Ws");function ki(i){return Yw(Tu(i))}u(ki,"Zs");function fg(i){return Cg(i),Yw(Tu(Uint8Array.from(i).reverse()))}u(fg,"Ks");function Jc(i,e){return Uu(i.toString(16).padStart(2*e,"0"))}u(Jc,"Ps");function vm(i,e){return Jc(i,e).reverse()}u(vm,"Xs");function Mt(i,e,t){let s;if(typeof e=="string")try{s=Uu(e)}catch(r){throw new Error(i+" must be hex string or Uint8Array, cause: "+r)}else{if(!Xi(e))throw new Error(i+" must be hex string or Uint8Array");s=Uint8Array.from(e)}let n=s.length;if(typeof t=="number"&&n!==t)throw new Error(i+" of length "+t+" expected, got "+n);return s}u(Mt,"qs");function wg(...i){let e=0;for(let s=0;s<i.length;s++){let n=i[s];Cg(n),e+=n.length}let t=new Uint8Array(e);for(let s=0,n=0;s<i.length;s++){let r=i[s];t.set(r,n),n+=r.length}return t}u(wg,"_s");var jm=u(i=>typeof i=="bigint"&&Nm<=i,"$s");function Dm(i,e,t){return jm(i)&&jm(e)&&jm(t)&&e<=i&&i<t}u(Dm,"en");function On(i,e,t,s){if(!Dm(e,t,s))throw new Error("expected valid "+i+": "+t+" <= n < "+s+", got "+e)}u(On,"tn");function HE(i){let e;for(e=0;i>Nm;i>>=tm,e+=1);return e}u(HE,"sn");var jw=u(i=>(QI<<BigInt(i-1))-tm,"nn"),Jm=u(i=>new Uint8Array(i),"rn"),kp=u(i=>Uint8Array.from(i),"an");function YE(i,e,t){if(typeof i!="number"||i<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let s=Jm(i),n=Jm(i),r=0,a=u(()=>{s.fill(1),n.fill(0),r=0},"i"),o=u((...A)=>t(n,s,...A),"o"),c=u((A=Jm())=>{n=o(kp([0]),A),s=o(),A.length!==0&&(n=o(kp([1]),A),s=o())},"l"),l=u(()=>{if(r++>=1e3)throw new Error("drbg: tried 1000 values");let A=0,h=[];for(;A<e;){s=o();let d=s.slice();h.push(d),A+=s.length}return wg(...h)},"c");return(A,h)=>{let d;for(a(),c(A);!(d=h(l()));)c();return a(),d}}u(YE,"on");var TI={bigint:u(i=>typeof i=="bigint","bigint"),function:u(i=>typeof i=="function","function"),boolean:u(i=>typeof i=="boolean","boolean"),string:u(i=>typeof i=="string","string"),stringOrUint8Array:u(i=>typeof i=="string"||Xi(i),"stringOrUint8Array"),isSafeInteger:u(i=>Number.isSafeInteger(i),"isSafeInteger"),array:u(i=>Array.isArray(i),"array"),field:u((i,e)=>e.Fp.isValid(i),"field"),hash:u(i=>typeof i=="function"&&Number.isSafeInteger(i.outputLen),"hash")};function Ru(i,e,t={}){let s=u((n,r,a)=>{let o=TI[r];if(typeof o!="function")throw new Error("invalid validator function");let c=i[n];if(!(a&&c===void 0||o(c,i)))throw new Error("param "+String(n)+" is invalid. Expected "+r+", got "+c)},"n");for(let[n,r]of Object.entries(e))s(n,r,!1);for(let[n,r]of Object.entries(t))s(n,r,!0);return i}u(Ru,"cn");function jf(i){let e=new WeakMap;return(t,...s)=>{let n=e.get(t);if(n!==void 0)return n;let r=i(t,...s);return e.set(t,r),r}}u(jf,"hn");var UI=Object.freeze({__proto__:null,isBytes:Xi,abytes:Cg,abool:xu,bytesToHex:Tu,numberToHexUnpadded:Fc,hexToNumber:Yw,hexToBytes:Uu,bytesToNumberBE:ki,bytesToNumberLE:fg,numberToBytesBE:Jc,numberToBytesLE:vm,numberToVarBytesBE:u(function(i){return Uu(Fc(i))},"numberToVarBytesBE"),ensureBytes:Mt,concatBytes:wg,equalBytes:u(function(i,e){if(i.length!==e.length)return!1;let t=0;for(let s=0;s<i.length;s++)t|=i[s]^e[s];return t===0},"equalBytes"),utf8ToBytes:u(function(i){if(typeof i!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(i))},"utf8ToBytes"),inRange:Dm,aInRange:On,bitLen:HE,bitGet:u(function(i,e){return i>>BigInt(e)&tm},"bitGet"),bitSet:u(function(i,e,t){return i|(t?tm:Nm)<<BigInt(e)},"bitSet"),bitMask:jw,createHmacDrbg:YE,validateObject:Ru,notImplemented:u(()=>{throw new Error("not implemented")},"notImplemented"),memoized:jf}),Je=BigInt(0),Te=BigInt(1),pa=BigInt(2),RI=BigInt(3),Lm=BigInt(4),xp=BigInt(5),Tp=BigInt(8);function pt(i,e){let t=i%e;return t>=Je?t:e+t}u(pt,"En");function jE(i,e,t){if(e<Je)throw new Error("invalid exponent, negatives unsupported");if(t<=Je)throw new Error("invalid modulus");if(t===Te)return Je;let s=Te;for(;e>Je;)e&Te&&(s=s*i%t),i=i*i%t,e>>=Te;return s}u(jE,"pn");function zt(i,e,t){let s=i;for(;e-- >Je;)s*=s,s%=t;return s}u(zt,"In");function Jf(i,e){if(i===Je)throw new Error("invert: expected non-zero number");if(e<=Je)throw new Error("invert: expected positive modulus, got "+e);let t=pt(i,e),s=e,n=Je,r=Te;for(;t!==Je;){let a=s%t,o=n-r*(s/t);s=t,t=a,n=r,r=o}if(s!==Te)throw new Error("invert: does not exist");return pt(n,e)}u(Jf,"yn");function GI(i){if(i%Lm===RI){let e=(i+Te)/Lm;return function(t,s){let n=t.pow(s,e);if(!t.eql(t.sqr(n),s))throw new Error("Cannot find square root");return n}}if(i%Tp===xp){let e=(i-xp)/Tp;return function(t,s){let n=t.mul(s,pa),r=t.pow(n,e),a=t.mul(s,r),o=t.mul(t.mul(a,pa),r),c=t.mul(a,t.sub(o,t.ONE));if(!t.eql(t.sqr(c),s))throw new Error("Cannot find square root");return c}}return function(e){let t=(e-Te)/pa,s,n,r;for(s=e-Te,n=0;s%pa===Je;s/=pa,n++);for(r=pa;r<e&&jE(r,t,e)!==e-Te;r++)if(r>1e3)throw new Error("Cannot find square root: likely non-prime P");if(n===1){let o=(e+Te)/Lm;return function(c,l){let A=c.pow(l,o);if(!c.eql(c.sqr(A),l))throw new Error("Cannot find square root");return A}}let a=(s+Te)/pa;return function(o,c){if(o.pow(c,t)===o.neg(o.ONE))throw new Error("Cannot find square root");let l=n,A=o.pow(o.mul(o.ONE,r),s),h=o.pow(c,a),d=o.pow(c,s);for(;!o.eql(d,o.ONE);){if(o.eql(d,o.ZERO))return o.ZERO;let m=1;for(let y=o.sqr(d);m<l&&!o.eql(y,o.ONE);m++)y=o.sqr(y);let E=o.pow(A,Te<<BigInt(l-m-1));A=o.sqr(E),h=o.mul(h,E),d=o.mul(d,A),l=m}return h}}(i)}u(GI,"Cn");var FI=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function JE(i,e){let t=e!==void 0?e:i.toString(2).length;return{nBitLength:t,nByteLength:Math.ceil(t/8)}}u(JE,"Dn");function Jw(i,e,t=!1,s={}){if(i<=Je)throw new Error("invalid field: expected ORDER > 0, got "+i);let{nBitLength:n,nByteLength:r}=JE(i,e);if(r>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let a,o=Object.freeze({ORDER:i,isLE:t,BITS:n,BYTES:r,MASK:jw(n),ZERO:Je,ONE:Te,create:u(c=>pt(c,i),"create"),isValid:u(c=>{if(typeof c!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof c);return Je<=c&&c<i},"isValid"),is0:u(c=>c===Je,"is0"),isOdd:u(c=>(c&Te)===Te,"isOdd"),neg:u(c=>pt(-c,i),"neg"),eql:u((c,l)=>c===l,"eql"),sqr:u(c=>pt(c*c,i),"sqr"),add:u((c,l)=>pt(c+l,i),"add"),sub:u((c,l)=>pt(c-l,i),"sub"),mul:u((c,l)=>pt(c*l,i),"mul"),pow:u((c,l)=>function(A,h,d){if(d<Je)throw new Error("invalid exponent, negatives unsupported");if(d===Je)return A.ONE;if(d===Te)return h;let m=A.ONE,E=h;for(;d>Je;)d&Te&&(m=A.mul(m,E)),E=A.sqr(E),d>>=Te;return m}(o,c,l),"pow"),div:u((c,l)=>pt(c*Jf(l,i),i),"div"),sqrN:u(c=>c*c,"sqrN"),addN:u((c,l)=>c+l,"addN"),subN:u((c,l)=>c-l,"subN"),mulN:u((c,l)=>c*l,"mulN"),inv:u(c=>Jf(c,i),"inv"),sqrt:s.sqrt||(c=>(a||(a=GI(i)),a(o,c))),invertBatch:u(c=>function(l,A){let h=new Array(A.length),d=A.reduce((E,y,f)=>l.is0(y)?E:(h[f]=E,l.mul(E,y)),l.ONE),m=l.inv(d);return A.reduceRight((E,y,f)=>l.is0(y)?E:(h[f]=l.mul(E,h[f]),l.mul(E,y)),m),h}(o,c),"invertBatch"),cmov:u((c,l,A)=>A?l:c,"cmov"),toBytes:u(c=>t?vm(c,r):Jc(c,r),"toBytes"),fromBytes:u(c=>{if(c.length!==r)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+c.length);return t?fg(c):ki(c)},"fromBytes")});return Object.freeze(o)}u(Jw,"Nn");function LE(i){if(typeof i!="bigint")throw new Error("field order must be bigint");let e=i.toString(2).length;return Math.ceil(e/8)}u(LE,"bn");function Up(i){let e=LE(i);return e+Math.ceil(e/2)}u(Up,"Qn");var Rp=BigInt(0),Rg=BigInt(1);function Om(i,e){let t=e.negate();return i?t:e}u(Om,"Sn");function OE(i,e){if(!Number.isSafeInteger(i)||i<=0||i>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+i)}u(OE,"kn");function Wm(i,e){return OE(i,e),{windows:Math.ceil(e/i)+1,windowSize:2**(i-1)}}u(Wm,"Tn");var Pm=new WeakMap,WE=new WeakMap;function zm(i){return WE.get(i)||1}u(zm,"xn");function HI(i,e,t,s){if(function(A,h){if(!Array.isArray(A))throw new Error("array expected");A.forEach((d,m)=>{if(!(d instanceof h))throw new Error("invalid point at index "+m)})}(t,i),function(A,h){if(!Array.isArray(A))throw new Error("array of scalars expected");A.forEach((d,m)=>{if(!h.isValid(d))throw new Error("invalid scalar at index "+m)})}(s,e),t.length!==s.length)throw new Error("arrays of points and scalars must have equal length");let n=i.ZERO,r=HE(BigInt(t.length)),a=r>12?r-3:r>4?r-2:r?2:1,o=(1<<a)-1,c=new Array(o+1).fill(n),l=n;for(let A=Math.floor((e.BITS-1)/a)*a;A>=0;A-=a){c.fill(n);for(let d=0;d<s.length;d++){let m=s[d],E=Number(m>>BigInt(A)&BigInt(o));c[E]=c[E].add(t[d])}let h=n;for(let d=c.length-1,m=n;d>0;d--)m=m.add(c[d]),h=h.add(m);if(l=l.add(h),A!==0)for(let d=0;d<a;d++)l=l.double()}return l}u(HI,"Rn");function PE(i){return Ru(i.Fp,FI.reduce((e,t)=>(e[t]="function",e),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"})),Ru(i,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...JE(i.n,i.nBitLength),...i,p:i.Fp.ORDER})}u(PE,"Fn");var oo=BigInt(0),Zm=BigInt(1);function YI(i){let e=(Ru(t=i,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...t}));var t;let{P:s}=e,n=u(f=>pt(f,s),"r"),r=e.montgomeryBits,a=Math.ceil(r/8),o=e.nByteLength,c=e.adjustScalarBytes||(f=>f),l=e.powPminus2||(f=>jE(f,s-BigInt(2),s));function A(f,p,B){let C=n(f*(p-B));return[p=n(p-C),B=n(B+C)]}u(A,"h");let h=(e.a-BigInt(2))/BigInt(4);function d(f){return vm(n(f),a)}u(d,"A");function m(f,p){let B=function(I){let b=Mt("u coordinate",I,a);return o===32&&(b[31]&=127),fg(b)}(p),C=function(I,b){On("u",I,oo,s),On("scalar",b,oo,s);let V=b,G=I,D,S=Zm,Q=oo,N=I,T=Zm,j=oo;for(let L=BigInt(r-1);L>=oo;L--){let q=V>>L&Zm;j^=q,D=A(j,S,N),S=D[0],N=D[1],D=A(j,Q,T),Q=D[0],T=D[1],j=q;let K=S+Q,$=n(K*K),_=S-Q,O=n(_*_),X=$-O,P=N+T,ee=n((N-T)*K),oe=n(P*_),fe=ee+oe,Me=ee-oe;N=n(fe*fe),T=n(G*n(Me*Me)),S=n($*O),Q=n(X*($+n(h*X)))}D=A(j,S,N),S=D[0],N=D[1],D=A(j,Q,T),Q=D[0],T=D[1];let U=l(Q);return n(S*U)}(B,function(I){let b=Mt("scalar",I),V=b.length;if(V!==a&&V!==o)throw new Error("invalid scalar, expected "+a+" or "+o+" bytes, got "+V);return fg(c(b))}(f));if(C===oo)throw new Error("invalid private or public key received");return d(C)}u(m,"g");let E=d(e.Gu);function y(f){return m(f,E)}return u(y,"w"),{scalarMult:m,scalarMultBase:y,getSharedSecret:u((f,p)=>m(f,p),"getSharedSecret"),getPublicKey:u(f=>y(f),"getPublicKey"),utils:{randomPrivateKey:u(()=>e.randomBytes(e.nByteLength),"randomPrivateKey")},GuBytes:E}}u(YI,"Jn");var Km=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949");BigInt(0);var jI=BigInt(1),Gp=BigInt(2),JI=BigInt(3),LI=BigInt(5);function OI(i){return i[0]&=248,i[31]&=127,i[31]|=64,i}u(OI,"Zn");BigInt(8);var qm=YI({P:Km,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:u(i=>{let e=Km,{pow_p_5_8:t,b2:s}=function(n){let r=BigInt(10),a=BigInt(20),o=BigInt(40),c=BigInt(80),l=Km,A=n*n%l*n%l,h=zt(A,Gp,l)*A%l,d=zt(h,jI,l)*n%l,m=zt(d,LI,l)*d%l,E=zt(m,r,l)*m%l,y=zt(E,a,l)*E%l,f=zt(y,o,l)*y%l,p=zt(f,c,l)*f%l,B=zt(p,c,l)*f%l,C=zt(B,r,l)*m%l;return{pow_p_5_8:zt(C,Gp,l)*n%l,b2:A}}(i);return pt(zt(t,JI,e)*s,e)},"powPminus2"),adjustScalarBytes:OI,randomBytes:TE}),ru,zE=(ru=class extends xE{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,function(a){if(typeof a!="function"||typeof a.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Np(a.outputLen),Np(a.blockLen)}(e);let s=Gw(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,r=new Uint8Array(n);r.set(s.length>n?e.create().update(s).digest():s);for(let a=0;a<r.length;a++)r[a]^=54;this.iHash.update(r),this.oHash=e.create();for(let a=0;a<r.length;a++)r[a]^=106;this.oHash.update(r),r.fill(0)}update(e){return em(this),this.iHash.update(e),this}digestInto(e){em(this),Mm(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:s,finished:n,destroyed:r,blockLen:a,outputLen:o}=this;return e.finished=n,e.destroyed=r,e.blockLen=a,e.outputLen=o,e.oHash=t._cloneInto(e.oHash),e.iHash=s._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},u(ru,"Pn"),ru),ZE=u((i,e,t)=>new zE(i,e).update(t).digest(),"Xn");function Fp(i){i.lowS!==void 0&&xu("lowS",i.lowS),i.prehash!==void 0&&xu("prehash",i.prehash)}u(Fp,"qn");ZE.create=(i,e)=>new zE(i,e);var{bytesToNumberBE:WI,hexToBytes:PI}=UI,au,zI=(au=class extends Error{constructor(e=""){super(e)}},u(au,"er"),au),un={Err:zI,_tlv:{encode:u((i,e)=>{let{Err:t}=un;if(i<0||i>256)throw new t("tlv.encode: wrong tag");if(1&e.length)throw new t("tlv.encode: unpadded data");let s=e.length/2,n=Fc(s);if(n.length/2&128)throw new t("tlv.encode: long form length too big");let r=s>127?Fc(n.length/2|128):"";return Fc(i)+r+n+e},"encode"),decode(i,e){let{Err:t}=un,s=0;if(i<0||i>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[s++]!==i)throw new t("tlv.decode: wrong tlv");let n=e[s++],r=0;if(128&n){let o=127&n;if(!o)throw new t("tlv.decode(long): indefinite length not supported");if(o>4)throw new t("tlv.decode(long): byte length is too big");let c=e.subarray(s,s+o);if(c.length!==o)throw new t("tlv.decode: length bytes not complete");if(c[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let l of c)r=r<<8|l;if(s+=o,r<128)throw new t("tlv.decode(long): not minimal encoding")}else r=n;let a=e.subarray(s,s+r);if(a.length!==r)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(s+r)}}},_int:{encode(i){let{Err:e}=un;if(i<An)throw new e("integer: negative integers are not allowed");let t=Fc(i);if(8&Number.parseInt(t[0],16)&&(t="00"+t),1&t.length)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(i){let{Err:e}=un;if(128&i[0])throw new e("invalid signature integer: negative");if(i[0]===0&&!(128&i[1]))throw new e("invalid signature integer: unnecessary leading zero");return WI(i)}},toSig(i){let{Err:e,_int:t,_tlv:s}=un,n=typeof i=="string"?PI(i):i;Cg(n);let{v:r,l:a}=s.decode(48,n);if(a.length)throw new e("invalid signature: left bytes after parsing");let{v:o,l:c}=s.decode(2,r),{v:l,l:A}=s.decode(2,c);if(A.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(o),s:t.decode(l)}},hexFromSig(i){let{_tlv:e,_int:t}=un,s=e.encode(2,t.encode(i.r))+e.encode(2,t.encode(i.s));return e.encode(48,s)}},An=BigInt(0),je=BigInt(1);BigInt(2);var Hp=BigInt(3);function ZI(i){var f;let e=function(p){let B=PE(p);Ru(B,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:C,Fp:I,a:b}=B;if(C){if(!I.eql(b,I.ZERO))throw new Error("invalid endomorphism, can only be defined for Koblitz curves that have a=0");if(typeof C!="object"||typeof C.beta!="bigint"||typeof C.splitScalar!="function")throw new Error("invalid endomorphism, expected beta: bigint and splitScalar: function")}return Object.freeze({...B})}(i),{Fp:t}=e,s=Jw(e.n,e.nBitLength),n=e.toBytes||((p,B,C)=>{let I=B.toAffine();return wg(Uint8Array.from([4]),t.toBytes(I.x),t.toBytes(I.y))}),r=e.fromBytes||(p=>{let B=p.subarray(1);return{x:t.fromBytes(B.subarray(0,t.BYTES)),y:t.fromBytes(B.subarray(t.BYTES,2*t.BYTES))}});function a(p){let{a:B,b:C}=e,I=t.sqr(p),b=t.mul(I,p);return t.add(t.add(b,t.mul(p,B)),C)}if(u(a,"i"),!t.eql(t.sqr(e.Gy),a(e.Gx)))throw new Error("bad generator point: equation left != right");function o(p){let{allowedPrivateKeyLengths:B,nByteLength:C,wrapPrivateKey:I,n:b}=e;if(B&&typeof p!="bigint"){if(Xi(p)&&(p=Tu(p)),typeof p!="string"||!B.includes(p.length))throw new Error("invalid private key");p=p.padStart(2*C,"0")}let V;try{V=typeof p=="bigint"?p:ki(Mt("private key",p,C))}catch{throw new Error("invalid private key, expected hex or "+C+" bytes, got "+typeof p)}return I&&(V=pt(V,b)),On("private key",V,je,b),V}u(o,"o");function c(p){if(!(p instanceof h))throw new Error("ProjectivePoint expected")}u(c,"l");let l=jf((p,B)=>{let{px:C,py:I,pz:b}=p;if(t.eql(b,t.ONE))return{x:C,y:I};let V=p.is0();B==null&&(B=V?t.ONE:t.inv(b));let G=t.mul(C,B),D=t.mul(I,B),S=t.mul(b,B);if(V)return{x:t.ZERO,y:t.ZERO};if(!t.eql(S,t.ONE))throw new Error("invZ was invalid");return{x:G,y:D}}),A=jf(p=>{if(p.is0()){if(e.allowInfinityPoint&&!t.is0(p.py))return;throw new Error("bad point: ZERO")}let{x:B,y:C}=p.toAffine();if(!t.isValid(B)||!t.isValid(C))throw new Error("bad point: x or y not FE");let I=t.sqr(C),b=a(B);if(!t.eql(I,b))throw new Error("bad point: equation left != right");if(!p.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0}),h=(f=class{constructor(B,C,I){if(this.px=B,this.py=C,this.pz=I,B==null||!t.isValid(B))throw new Error("x required");if(C==null||!t.isValid(C))throw new Error("y required");if(I==null||!t.isValid(I))throw new Error("z required");Object.freeze(this)}static fromAffine(B){let{x:C,y:I}=B||{};if(!B||!t.isValid(C)||!t.isValid(I))throw new Error("invalid affine point");if(B instanceof f)throw new Error("projective point not allowed");let b=u(V=>t.eql(V,t.ZERO),"r");return b(C)&&b(I)?f.ZERO:new f(C,I,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(B){let C=t.invertBatch(B.map(I=>I.pz));return B.map((I,b)=>I.toAffine(C[b])).map(f.fromAffine)}static fromHex(B){let C=f.fromAffine(r(Mt("pointHex",B)));return C.assertValidity(),C}static fromPrivateKey(B){return f.BASE.multiply(o(B))}static msm(B,C){return HI(f,s,B,C)}_setWindowSize(B){m.setWindowSize(this,B)}assertValidity(){A(this)}hasEvenY(){let{y:B}=this.toAffine();if(t.isOdd)return!t.isOdd(B);throw new Error("Field doesn't support isOdd")}equals(B){c(B);let{px:C,py:I,pz:b}=this,{px:V,py:G,pz:D}=B,S=t.eql(t.mul(C,D),t.mul(V,b)),Q=t.eql(t.mul(I,D),t.mul(G,b));return S&&Q}negate(){return new f(this.px,t.neg(this.py),this.pz)}double(){let{a:B,b:C}=e,I=t.mul(C,Hp),{px:b,py:V,pz:G}=this,D=t.ZERO,S=t.ZERO,Q=t.ZERO,N=t.mul(b,b),T=t.mul(V,V),j=t.mul(G,G),U=t.mul(b,V);return U=t.add(U,U),Q=t.mul(b,G),Q=t.add(Q,Q),D=t.mul(B,Q),S=t.mul(I,j),S=t.add(D,S),D=t.sub(T,S),S=t.add(T,S),S=t.mul(D,S),D=t.mul(U,D),Q=t.mul(I,Q),j=t.mul(B,j),U=t.sub(N,j),U=t.mul(B,U),U=t.add(U,Q),Q=t.add(N,N),N=t.add(Q,N),N=t.add(N,j),N=t.mul(N,U),S=t.add(S,N),j=t.mul(V,G),j=t.add(j,j),N=t.mul(j,U),D=t.sub(D,N),Q=t.mul(j,T),Q=t.add(Q,Q),Q=t.add(Q,Q),new f(D,S,Q)}add(B){c(B);let{px:C,py:I,pz:b}=this,{px:V,py:G,pz:D}=B,S=t.ZERO,Q=t.ZERO,N=t.ZERO,T=e.a,j=t.mul(e.b,Hp),U=t.mul(C,V),L=t.mul(I,G),q=t.mul(b,D),K=t.add(C,I),$=t.add(V,G);K=t.mul(K,$),$=t.add(U,L),K=t.sub(K,$),$=t.add(C,b);let _=t.add(V,D);return $=t.mul($,_),_=t.add(U,q),$=t.sub($,_),_=t.add(I,b),S=t.add(G,D),_=t.mul(_,S),S=t.add(L,q),_=t.sub(_,S),N=t.mul(T,$),S=t.mul(j,q),N=t.add(S,N),S=t.sub(L,N),N=t.add(L,N),Q=t.mul(S,N),L=t.add(U,U),L=t.add(L,U),q=t.mul(T,q),$=t.mul(j,$),L=t.add(L,q),q=t.sub(U,q),q=t.mul(T,q),$=t.add($,q),U=t.mul(L,$),Q=t.add(Q,U),U=t.mul(_,$),S=t.mul(K,S),S=t.sub(S,U),U=t.mul(K,L),N=t.mul(_,N),N=t.add(N,U),new f(S,Q,N)}subtract(B){return this.add(B.negate())}is0(){return this.equals(f.ZERO)}wNAF(B){return m.wNAFCached(this,B,f.normalizeZ)}multiplyUnsafe(B){let{endo:C,n:I}=e;On("scalar",B,An,I);let b=f.ZERO;if(B===An)return b;if(this.is0()||B===je)return this;if(!C||m.hasPrecomputes(this))return m.wNAFCachedUnsafe(this,B,f.normalizeZ);let{k1neg:V,k1:G,k2neg:D,k2:S}=C.splitScalar(B),Q=b,N=b,T=this;for(;G>An||S>An;)G&je&&(Q=Q.add(T)),S&je&&(N=N.add(T)),T=T.double(),G>>=je,S>>=je;return V&&(Q=Q.negate()),D&&(N=N.negate()),N=new f(t.mul(N.px,C.beta),N.py,N.pz),Q.add(N)}multiply(B){let{endo:C,n:I}=e,b,V;if(On("scalar",B,je,I),C){let{k1neg:G,k1:D,k2neg:S,k2:Q}=C.splitScalar(B),{p:N,f:T}=this.wNAF(D),{p:j,f:U}=this.wNAF(Q);N=m.constTimeNegate(G,N),j=m.constTimeNegate(S,j),j=new f(t.mul(j.px,C.beta),j.py,j.pz),b=N.add(j),V=T.add(U)}else{let{p:G,f:D}=this.wNAF(B);b=G,V=D}return f.normalizeZ([b,V])[0]}multiplyAndAddUnsafe(B,C,I){let b=f.BASE,V=u((D,S)=>S!==An&&S!==je&&D.equals(b)?D.multiply(S):D.multiplyUnsafe(S),"r"),G=V(this,C).add(V(B,I));return G.is0()?void 0:G}toAffine(B){return l(this,B)}isTorsionFree(){let{h:B,isTorsionFree:C}=e;if(B===je)return!0;if(C)return C(f,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:B,clearCofactor:C}=e;return B===je?this:C?C(f,this):this.multiplyUnsafe(e.h)}toRawBytes(B=!0){return xu("isCompressed",B),this.assertValidity(),n(f,this,B)}toHex(B=!0){return xu("isCompressed",B),Tu(this.toRawBytes(B))}},u(f,"u"),f);h.BASE=new h(e.Gx,e.Gy,t.ONE),h.ZERO=new h(t.ZERO,t.ONE,t.ZERO);let d=e.nBitLength,m=(E=h,y=e.endo?Math.ceil(d/2):d,{constTimeNegate:Om,hasPrecomputes:u(p=>zm(p)!==1,"hasPrecomputes"),unsafeLadder(p,B,C=E.ZERO){let I=p;for(;B>Rp;)B&Rg&&(C=C.add(I)),I=I.double(),B>>=Rg;return C},precomputeWindow(p,B){let{windows:C,windowSize:I}=Wm(B,y),b=[],V=p,G=V;for(let D=0;D<C;D++){G=V,b.push(G);for(let S=1;S<I;S++)G=G.add(V),b.push(G);V=G.double()}return b},wNAF(p,B,C){let{windows:I,windowSize:b}=Wm(p,y),V=E.ZERO,G=E.BASE,D=BigInt(2**p-1),S=2**p,Q=BigInt(p);for(let N=0;N<I;N++){let T=N*b,j=Number(C&D);C>>=Q,j>b&&(j-=S,C+=Rg);let U=T,L=T+Math.abs(j)-1,q=N%2!=0,K=j<0;j===0?G=G.add(Om(q,B[U])):V=V.add(Om(K,B[L]))}return{p:V,f:G}},wNAFUnsafe(p,B,C,I=E.ZERO){let{windows:b,windowSize:V}=Wm(p,y),G=BigInt(2**p-1),D=2**p,S=BigInt(p);for(let Q=0;Q<b;Q++){let N=Q*V;if(C===Rp)break;let T=Number(C&G);if(C>>=S,T>V&&(T-=D,C+=Rg),T===0)continue;let j=B[N+Math.abs(T)-1];T<0&&(j=j.negate()),I=I.add(j)}return I},getPrecomputes(p,B,C){let I=Pm.get(B);return I||(I=this.precomputeWindow(B,p),p!==1&&Pm.set(B,C(I))),I},wNAFCached(p,B,C){let I=zm(p);return this.wNAF(I,this.getPrecomputes(I,p,C),B)},wNAFCachedUnsafe(p,B,C,I){let b=zm(p);return b===1?this.unsafeLadder(p,B,I):this.wNAFUnsafe(b,this.getPrecomputes(b,p,C),B,I)},setWindowSize(p,B){OE(B,y),WE.set(p,B),Pm.delete(p)}});var E,y;return{CURVE:e,ProjectivePoint:h,normPrivateKeyToScalar:o,weierstrassEquation:a,isWithinCurveOrder:u(function(p){return Dm(p,je,e.n)},"isWithinCurveOrder")}}u(ZI,"ar");function KI(i){var S;let e=function(Q){let N=PE(Q);return Ru(N,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...N})}(i),{Fp:t,n:s}=e,n=t.BYTES+1,r=2*t.BYTES+1;function a(Q){return pt(Q,s)}u(a,"i");function o(Q){return Jf(Q,s)}u(o,"o");let{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:A,isWithinCurveOrder:h}=ZI({...e,toBytes(Q,N,T){let j=N.toAffine(),U=t.toBytes(j.x),L=wg;return xu("isCompressed",T),T?L(Uint8Array.from([N.hasEvenY()?2:3]),U):L(Uint8Array.from([4]),U,t.toBytes(j.y))},fromBytes(Q){let N=Q.length,T=Q[0],j=Q.subarray(1);if(N!==n||T!==2&&T!==3){if(N===r&&T===4)return{x:t.fromBytes(j.subarray(0,t.BYTES)),y:t.fromBytes(j.subarray(t.BYTES,2*t.BYTES))};throw new Error("invalid Point, expected length of "+n+", or uncompressed "+r+", got "+N)}{let U=ki(j);if(!Dm(U,je,t.ORDER))throw new Error("Point is not on curve");let L=A(U),q;try{q=t.sqrt(L)}catch(K){let $=K instanceof Error?": "+K.message:"";throw new Error("Point is not on curve"+$)}return!(1&~T)!=((q&je)===je)&&(q=t.neg(q)),{x:U,y:q}}}}),d=u(Q=>Tu(Jc(Q,e.nByteLength)),"A");function m(Q){return Q>s>>je}u(m,"g");let E=u((Q,N,T)=>ki(Q.slice(N,T)),"m"),y=(S=class{constructor(N,T,j){this.r=N,this.s=T,this.recovery=j,this.assertValidity()}static fromCompact(N){let T=e.nByteLength;return N=Mt("compactSignature",N,2*T),new S(E(N,0,T),E(N,T,2*T))}static fromDER(N){let{r:T,s:j}=un.toSig(Mt("DER",N));return new S(T,j)}assertValidity(){On("r",this.r,je,s),On("s",this.s,je,s)}addRecoveryBit(N){return new S(this.r,this.s,N)}recoverPublicKey(N){let{r:T,s:j,recovery:U}=this,L=C(Mt("msgHash",N));if(U==null||![0,1,2,3].includes(U))throw new Error("recovery id invalid");let q=U===2||U===3?T+e.n:T;if(q>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let K=1&U?"03":"02",$=c.fromHex(K+d(q)),_=o(q),O=a(-L*_),X=a(j*_),P=c.BASE.multiplyAndAddUnsafe($,O,X);if(!P)throw new Error("point at infinify");return P.assertValidity(),P}hasHighS(){return m(this.s)}normalizeS(){return this.hasHighS()?new S(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return Uu(this.toDERHex())}toDERHex(){return un.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Uu(this.toCompactHex())}toCompactHex(){return d(this.r)+d(this.s)}},u(S,"w"),S),f={isValidPrivateKey(Q){try{return l(Q),!0}catch{return!1}},normPrivateKeyToScalar:l,randomPrivateKey:u(()=>{let Q=Up(e.n);return function(N,T,j=!1){let U=N.length,L=LE(T),q=Up(T);if(U<16||U<q||U>1024)throw new Error("expected "+q+"-1024 bytes of input, got "+U);let K=pt(j?fg(N):ki(N),T-Te)+Te;return j?vm(K,L):Jc(K,L)}(e.randomBytes(Q),e.n)},"randomPrivateKey"),precompute:u((Q=8,N=c.BASE)=>(N._setWindowSize(Q),N.multiply(BigInt(3)),N),"precompute")};function p(Q){let N=Xi(Q),T=typeof Q=="string",j=(N||T)&&Q.length;return N?j===n||j===r:T?j===2*n||j===2*r:Q instanceof c}u(p,"B");let B=e.bits2int||function(Q){if(Q.length>8192)throw new Error("input is too large");let N=ki(Q),T=8*Q.length-e.nBitLength;return T>0?N>>BigInt(T):N},C=e.bits2int_modN||function(Q){return a(B(Q))},I=jw(e.nBitLength);function b(Q){return On("num < 2^"+e.nBitLength,Q,An,I),Jc(Q,e.nByteLength)}u(b,"I");function V(Q,N,T=G){if(["recovered","canonical"].some(ee=>ee in T))throw new Error("sign() legacy options not supported");let{hash:j,randomBytes:U}=e,{lowS:L,prehash:q,extraEntropy:K}=T;L==null&&(L=!0),Q=Mt("msgHash",Q),Fp(T),q&&(Q=Mt("prehashed msgHash",j(Q)));let $=C(Q),_=l(N),O=[b(_),b($)];if(K!=null&&K!==!1){let ee=K===!0?U(t.BYTES):K;O.push(Mt("extraEntropy",ee))}let X=wg(...O),P=$;return{seed:X,k2sig:u(function(ee){let oe=B(ee);if(!h(oe))return;let fe=o(oe),Me=c.BASE.multiply(oe).toAffine(),ge=a(Me.x);if(ge===An)return;let te=a(fe*a(P+ge*_));if(te===An)return;let W=(Me.x===ge?0:2)|Number(Me.y&je),Ye=te;return L&&m(te)&&(Ye=function(qe){return m(qe)?a(-qe):qe}(te),W^=1),new y(ge,Ye,W)},"k2sig")}}u(V,"y");let G={lowS:e.lowS,prehash:!1},D={lowS:e.lowS,prehash:!1};return c.BASE._setWindowSize(8),{CURVE:e,getPublicKey:u(function(Q,N=!0){return c.fromPrivateKey(Q).toRawBytes(N)},"getPublicKey"),getSharedSecret:u(function(Q,N,T=!0){if(p(Q))throw new Error("first arg must be private key");if(!p(N))throw new Error("second arg must be public key");return c.fromHex(N).multiply(l(Q)).toRawBytes(T)},"getSharedSecret"),sign:u(function(Q,N,T=G){let{seed:j,k2sig:U}=V(Q,N,T),L=e;return YE(L.hash.outputLen,L.nByteLength,L.hmac)(j,U)},"sign"),verify:u(function(Q,N,T,j=D){let U=Q;N=Mt("msgHash",N),T=Mt("publicKey",T);let{lowS:L,prehash:q,format:K}=j;if(Fp(j),"strict"in j)throw new Error("options.strict was renamed to lowS");if(K!==void 0&&K!=="compact"&&K!=="der")throw new Error("format must be compact or der");let $=typeof U=="string"||Xi(U),_=!$&&!K&&typeof U=="object"&&U!==null&&typeof U.r=="bigint"&&typeof U.s=="bigint";if(!$&&!_)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let O,X;try{if(_&&(O=new y(U.r,U.s)),$){try{K!=="compact"&&(O=y.fromDER(U))}catch(W){if(!(W instanceof un.Err))throw W}O||K==="der"||(O=y.fromCompact(U))}X=c.fromHex(T)}catch{return!1}if(!O||L&&O.hasHighS())return!1;q&&(N=e.hash(N));let{r:P,s:ee}=O,oe=C(N),fe=o(ee),Me=a(oe*fe),ge=a(P*fe),te=c.BASE.multiplyAndAddUnsafe(X,Me,ge)?.toAffine();return!!te&&a(te.x)===P},"verify"),ProjectivePoint:c,Signature:y,utils:f}}u(KI,"ir");function qI(i){return{hash:i,hmac:u((e,...t)=>ZE(i,e,function(...s){let n=0;for(let a=0;a<s.length;a++){let o=s[a];Mm(o),n+=o.length}let r=new Uint8Array(n);for(let a=0,o=0;a<s.length;a++){let c=s[a];r.set(c,o),o+=c.length}return r}(...t)),"hmac"),randomBytes:TE}}u(qI,"or");function KE(i,e){let t=u(s=>KI({...i,...qI(s)}),"s");return{...t(e),create:t}}u(KE,"lr");BigInt(4);var Yp=Jw(BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff")),Xm=KE({a:Yp.create(BigInt("-3")),b:BigInt("0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b"),Fp:Yp,n:BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),Gx:BigInt("0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296"),Gy:BigInt("0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"),h:BigInt(1),lowS:!1},Hw),jp=Jw(BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff")),$m=KE({a:jp.create(BigInt("-3")),b:BigInt("0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef"),Fp:jp,n:BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973"),Gx:BigInt("0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7"),Gy:BigInt("0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f"),h:BigInt(1),lowS:!1},FE),iu,XI=(iu=class{constructor(){this.client_seq_number=0,this.server_seq_number=0,this.client_sk=null,this.server_pk=null,this.ms=null,this.client_random=null,this.server_random=null,this.client_write_key=null,this.client_write_iv=null,this.client_write_nonce=null,this.request_cipher_bytes=null,this.server_write_key=null,this.server_write_iv=null,this.curve_type=null,this.named_curve=null,this.support_extended_master_secret=!1,this.support_session_ticket=!1,this.cipher_suite=null,this.message_buf=new Ne}incClientSeq(){this.client_seq_number++}incServerSeq(){this.server_seq_number++}keep(e){this.message_buf.writeBytes(e)}hash(){let e=this.message_buf.Bytes();return Hw(e)}generateClientKeys(){switch(this.named_curve.val){case 29:this.client_sk=qm.utils.randomPrivateKey(),this.client_pk=qm.getPublicKey(this.client_sk),this.pms=qm.getSharedSecret(this.client_sk,this.server_pk);break;case 23:this.client_sk=Xm.utils.randomPrivateKey(),this.client_pk=Xm.getPublicKey(this.client_sk,!1),this.pms=Xm.getSharedSecret(this.client_sk,this.server_pk).slice(1);break;case 24:this.client_sk=$m.utils.randomPrivateKey(),this.client_pk=$m.getPublicKey(this.client_sk,!1),this.pms=$m.getSharedSecret(this.client_sk,this.server_pk).slice(1);break;default:throw new Error(`Unsupported curve type: ${this.named_curve.hex()}`)}}async derivateSessionKeys(){let e=new Ne;if(this.support_extended_master_secret){let a=this.hash();e.writeBytes(xi("extended master secret")).writeBytes(a)}else e.writeBytes(xi("master secret")).writeBytes(this.client_random).writeBytes(this.server_random);this.ms=await async function(a,o){return(await Hf(a,o,4)).slice(0,48)}(this.pms,e.Bytes());let{client_write_key:t,server_write_key:s,client_write_iv:n,server_write_iv:r}=await async function(a,o,c){let l=new Ne;l.writeBytes(xi("key expansion")).writeBytes(c).writeBytes(o);let A=l.Bytes(),h=await Hf(a,A,4);return{client_write_key:h.slice(0,16),server_write_key:h.slice(16,32),client_write_iv:h.slice(32,36),server_write_iv:h.slice(36,40)}}(this.ms,this.client_random,this.server_random);this.client_write_key=t,this.client_write_iv=n,this.server_write_key=s,this.server_write_iv=r}toString(){let e=`session:
`;return e+=` client_seq_number: ${this.client_seq_number}
`,e+=` server_seq_number: ${this.server_seq_number}
`,e+=` client_sk: ${this.client_sk}
`,e+=` client_pk: ${this.client_pk}
`,e+=` server_pk: ${this.server_pk}
`,e+=` ms: ${this.ms}
`,e+=` pms: ${this.pms}
`,e+=` client_random: ${this.client_random}
`,e+=` server_random: ${this.server_random}
`,e+=` client_write_key: ${this.client_write_key}
`,e+=` client_write_iv: ${this.client_write_iv}
`,e+=` server_write_key: ${this.server_write_key}
`,e+=` server_write_iv: ${this.server_write_iv}
`,e+=` curve_type: ${this.curve_type}
`,e+=` named_curve: ${this.named_curve.hex()}
`,e+=` support_extended_master_secret: ${this.support_extended_master_secret}
`,e+=` support_session_ticket: ${this.support_session_ticket}
`,e+=` cipher_suite: ${this.cipher_suite.hex()}
`,e}},u(iu,"gr"),iu),ou,$I=(ou=class{constructor({level:e,description:t}){this.level=e,this.description=t}toString(){let e=`
------- Alert ------
`;return e+=`Level: ${_I[this.level]} (${this.level})
`,e+=`Description: ${e0[this.description]} (${this.description})
`,e}},u(ou,"mr"),ou),_I={1:"Warning",2:"Fatal"},e0={0:"close notify",10:"unexpected message",20:"bad record MAC",21:"decryption failed",22:"record overflow",30:"decompression failure",40:"handshake failure",42:"bad certificate",43:"unsupported certificate",44:"revoked certificate",45:"expired certificate",46:"unknown certificate",47:"illegal parameter",48:"unknown certificate authority",49:"access denied",50:"error decoding message",51:"error decrypting message",60:"export restriction",70:"protocol version not supported",71:"insufficient security level",80:"internal error",86:"inappropriate fallback",90:"user canceled",100:"no renegotiation",109:"missing extension",110:"unsupported extension",111:"certificate unobtainable",112:"unrecognized name",113:"bad certificate status response",114:"bad certificate hash value",115:"unknown PSK identity",116:"certificate required",120:"no application protocol",121:"encrypted client hello required"},t0=0,qE=23,s0=65281,n0=10,r0=11,XE=35,$E=5,a0=13,i0=18,cu,Ct=(cu=class{constructor(e,t){this.type=new Ee(e),this.data=t||[],this.length=new Ee(this.data.length)}size(){return this.data.length+4}toBytes(){return[...this.type.bytes(),...this.length.bytes(),...this.data]}toString(){return`{type:${this.type.hex()}, length:${this.length.hex()}, data:${ga(this.data)}}`}},u(cu,"Nr"),cu),Wt=22,_E=20,Gg=23,Ji,Et=(Ji=class{constructor(e,t,s){this.type=e,this.version=new Ee(t),this.length=new Ee(s)}static fromBuffer(e){let t=e.readUint8(),s=e.readBytes(2),n=e.readBytes(2);return new Ji(t,s,n)}isType(e){return this.type===e}toBytes(){return[this.type,...this.version.bytes(),...this.length.bytes()]}toString(){return`Record Header: { Content Type: ${this.type}, Version: ${this.version.hex()}, Length: ${this.length.hex()} }
`}},u(Ji,"Vr"),Ji),o0=1,c0=2,l0=11,u0=22,h0=12,A0=14,g0=4,d0=16,ey=20,Li,zs=(Li=class{constructor(e,t){this.type=e,this.length=new ug(t)}static fromBuffer(e){let t=e.readUint8(),s=e.readBytes(3);return new Li(t,s)}isType(e){return this.type===e}toBytes(){return[this.type,...this.length.bytes()]}toString(){return`Handshake Header: { Handshake Type: ${this.type}, Length: ${this.length.hex()} }
`}},u(Li,"Yr"),Li),lu,m0=(lu=class{constructor({host:e,version:t}){let s=this.randomGreases(4);this.version=new Ee(t),this.random=Rw(32),this.session_id_len=0,this.cipher_suite=[new Ee(s[0]),new Ee(49195),new Ee(49199)],this.cipher_suite_len=new Ee(2*this.cipher_suite.length),this.compression_methods=[0],this.extensions=[],this.extensions.push(new Ct(s[1],null));let n=xi(e),r=new Ne;r.writeUint16(n.length+3).writeUint8(0).writeUint16(n.length).writeBytes(n),this.extensions.push(new Ct(t0,r.drain())),this.extensions.push(new Ct(qE,null)),this.extensions.push(new Ct(s0,[0])),this.extensions.push(new Ct(n0,[0,8,s[2]>>8&255,255&s[2],0,29,0,23,0,24])),this.extensions.push(new Ct(r0,[1,0])),this.extensions.push(new Ct(XE,null)),this.extensions.push(new Ct($E,[1,0,0,0,0])),this.extensions.push(new Ct(a0,[0,16,4,3,8,4,4,1,5,3,8,5,5,1,8,6,6,1])),this.extensions.push(new Ct(i0,null)),this.extensions.push(new Ct(s[3],[0]));let a=0;this.extensions.forEach(o=>{a+=o.size()}),this.extension_length=new Ee(a)}randomGreases(e){if(e>=Tg.length)return Tg;let t=[];for(;t.length<e;){let s=Math.floor(Math.random()*Tg.length),n=Tg[s];t.includes(n)||t.push(n)}return t}size(){let e=8;return e+=this.random.length,e+=this.session_id_len,e+=2*this.cipher_suite.length,e+=this.compression_methods.length,this.extensions.forEach(t=>e+=t.size()),e}toBytes(){let e=new Ne;return e.writeBytes(this.version.bytes()),e.writeBytes(this.random),e.writeUint8(this.session_id_len),e.writeUint16(this.cipher_suite_len),this.cipher_suite.forEach(t=>e.writeBytes(t.bytes())),e.writeUint8(this.compression_methods.length),e.writeBytes(this.compression_methods),e.writeBytes(this.extension_length.bytes()),this.extensions.forEach(t=>e.writeBytes(t.toBytes())),e.drain()}toString(){let e="";return e+=` Version: ${this.version.hex()}
`,e+=` Random: ${ga(this.random)}
`,e+=` Session ID Length: ${this.session_id_len}
`,e+=` Cipher Suite Length: ${this.cipher_suite_len.hex()}
`,e+=` Cipher Suites:
`,this.cipher_suite.forEach(t=>e+=` ${t.hex()}
`),e+=` Compression Methods Length: ${this.compression_methods.length}
`,e+=` Compression Methods:
`,this.compression_methods.forEach(t=>e+=` ${t}
`),e+=` Extension Length: ${this.extension_length.hex()}
`,e+=` Extensions:
`,this.extensions.forEach(t=>e+=` ${t.toString()}
`),e}},u(lu,"Jr"),lu),uu,f0=(uu=class{constructor({host:e,version:t}){let s=new m0({host:e,version:t});this.record_header=new Et(Wt,gI,s.size()+4),this.handshake_header=new zs(o0,s.size()),this.message=s}toBytes(){return[...this.record_header.toBytes(),...this.handshake_header.toBytes(),...this.message.toBytes()]}toString(){let e=`-------------------------------Client Hello---------------------------------------
`;return e+=this.record_header.toString(),e+=this.handshake_header.toString(),e+=this.message.toString(),e}},u(uu,"jr"),uu),hu,w0=(hu=class{constructor(e){if(this.record_header=Et.fromBuffer(e),!this.record_header.isType(Wt))throw new Error("bad record type",this.record_header.type);if(this.handshake_header=zs.fromBuffer(e),!this.handshake_header.isType(c0))throw new Error("bad handshake type",this.handshake_header.type);let t=e.bytesRead();if(this.server_version=new Ee(e.readBytes(2)),this.server_random=e.readBytes(32),this.session_id_len=e.readUint8(),this.session_id=0,this.session_id_len>0&&(this.session_id=e.readBytes(this.session_id_len)),this.cipher_suite=new Ee(e.readBytes(2)),this.compression_method=e.readUint8(),this.extensions=[],e.bytesRead()-t<this.handshake_header.length.val){this.extensions_len=new Ee(e.readUint16());let n=0;for(;n<this.extensions_len.val;){let r=new Ee(e.readUint16()),a=new Ee(e.readUint16());if(a.val>0){let o=e.readBytes(a.val),c=new Ct(r.val,o);this.extensions.push(c)}else{let o=new Ct(r.val,null);this.extensions.push(o)}n+=4+a.val}}let s=e.bytesRead()-t;if(s!=this.handshake_header.length.val)throw new Error("bad handshake size");e.size()>0&&(this.record_header.length=new Ee(s+4))}supportExtension(e){return this.extensions.some(t=>t.type.val===e)}toString(){let e=`-------------------------------Server Hello---------------------------------------
`;return e+=this.record_header.toString(),e+=this.handshake_header.toString(),e+=` Version: ${this.server_version.hex()}
`,e+=` Random: ${ga(this.server_random)}
`,e+=` Session ID Length: ${this.session_id_len}
`,this.session_id_len>0&&(e+=` Session ID: ${this.session_id}
`),e+=` Cipher Suite: ${this.cipher_suite.hex()}
`,e+=` Compression Method: ${this.compression_method}
`,e+=` Extensions Length: ${this.extensions_len.hex()}
`,e+=` Extensions:
`,this.extensions.forEach(t=>e+=` ${t.toString()}
`),e}},u(hu,"Or"),hu),We,Gt=(We=class{constructor(e={}){if("view"in e)this.fromUint8Array(e.view);else if("buffer"in e)this.fromArrayBuffer(e.buffer);else if("string"in e)this.fromString(e.string);else if("hexstring"in e)this.fromHexString(e.hexstring);else if("length"in e&&e.length>0){if(this.length=e.length,e.stub)for(let t=0;t<this._view.length;t++)this._view[t]=e.stub}else this.length=0}set buffer(e){this._buffer=e,this._view=new Uint8Array(this._buffer)}get buffer(){return this._buffer}set view(e){this._buffer=new ArrayBuffer(e.length),this._view=new Uint8Array(this._buffer),this._view.set(e)}get view(){return this._view}get length(){return this.view.byteLength}set length(e){this._buffer=new ArrayBuffer(e),this._view=new Uint8Array(this._buffer)}clear(){this._buffer=new ArrayBuffer(0),this._view=new Uint8Array(this._buffer)}fromArrayBuffer(e){this._buffer=e,this._view=new Uint8Array(this._buffer)}fromUint8Array(e){this.fromArrayBuffer(new Uint8Array(e).buffer)}fromString(e){let t=e.length;this.length=t;for(let s=0;s<t;s++)this.view[s]=e.charCodeAt(s)}toString(e=0,t=this.view.length-e){let s="";(e>=this.view.length||e<0)&&(e=0),(t>=this.view.length||t<0)&&(t=this.view.length-e);for(let n=e;n<e+t;n++)s+=String.fromCharCode(this.view[n]);return s}fromHexString(e){let t=e.length;this.buffer=new ArrayBuffer(t>>1),this.view=new Uint8Array(this.buffer);let s=new Map;s.set("0",0),s.set("1",1),s.set("2",2),s.set("3",3),s.set("4",4),s.set("5",5),s.set("6",6),s.set("7",7),s.set("8",8),s.set("9",9),s.set("A",10),s.set("a",10),s.set("B",11),s.set("b",11),s.set("C",12),s.set("c",12),s.set("D",13),s.set("d",13),s.set("E",14),s.set("e",14),s.set("F",15),s.set("f",15);let n=0,r=0;for(let a=0;a<t;a++)a%2?(r|=s.get(e.charAt(a)),this.view[n]=r,n++):r=s.get(e.charAt(a))<<4}toHexString(e=0,t=this.view.length-e){let s="";(e>=this.view.length||e<0)&&(e=0),(t>=this.view.length||t<0)&&(t=this.view.length-e);for(let n=e;n<e+t;n++){let r=this.view[n].toString(16).toUpperCase();s=s+(r.length==1?"0":"")+r}return s}copy(e=0,t=this.length-e){if(!e&&!this.length)return new We;if(e<0||e>this.length-1)throw new Error(`Wrong start position: ${e}`);return new We({buffer:this._buffer.slice(e,e+t)})}slice(e=0,t=this.length){if(!e&&!this.length)return new We;if(e<0||e>this.length-1)throw new Error(`Wrong start position: ${e}`);return new We({buffer:this._buffer.slice(e,t)})}realloc(e){let t=new ArrayBuffer(e),s=new Uint8Array(t);e>this._view.length?s.set(this._view):s.set(new Uint8Array(this._buffer,0,e)),this._buffer=t,this._view=new Uint8Array(this._buffer)}append(e){let t=this.length,s=e.length,n=e._view.subarray();this.realloc(t+s),this._view.set(n,t)}insert(e,t=0,s=this.length-t){return!(t>this.length-1)&&(s>this.length-t&&(s=this.length-t),s>e.length&&(s=e.length),s==e.length?this._view.set(e._view,t):this._view.set(e._view.subarray(0,s),t),!0)}isEqual(e){if(this.length!=e.length)return!1;for(let t=0;t<e.length;t++)if(this.view[t]!=e.view[t])return!1;return!0}isEqualView(e){if(e.length!=this.view.length)return!1;for(let t=0;t<e.length;t++)if(this.view[t]!=e[t])return!1;return!0}findPattern(e,t,s,n){let{start:r,length:a,backward:o}=this.prepareFindParameters(t,s,n),c=e.length;if(c>a)return-1;let l=[];for(let A=0;A<c;A++)l.push(e.view[A]);for(let A=0;A<=a-c;A++){let h=!0,d=o?r-c-A:r+A;for(let m=0;m<c;m++)if(this.view[m+d]!=l[m]){h=!1;break}if(h)return o?r-c-A:r+c+A}return-1}findFirstIn(e,t,s,n){let{start:r,length:a,backward:o}=this.prepareFindParameters(t,s,n),c={id:-1,position:o?0:r+a,length:0};for(let l=0;l<e.length;l++){let A=this.findPattern(e[l],r,a,o);if(A!=-1){let h=!1,d=e[l].length;o?A-d>=c.position-c.length&&(h=!0):A-d<=c.position-c.length&&(h=!0),h&&(c.position=A,c.id=l,c.length=d)}}return c}findAllIn(e,t,s){let{start:n,length:r}=this.prepareFindParameters(t,s),a=[],o={id:-1,position:n};for(;;){let c=o.position;if(o=this.findFirstIn(e,o.position,r),o.id==-1)break;r-=o.position-c,a.push({id:o.id,position:o.position})}return a}findAllPatternIn(e,t,s){let{start:n,length:r}=this.prepareFindParameters(t,s),a=[],o=e.length;if(o>r)return-1;let c=Array.from(e.view);for(let l=0;l<=r-o;l++){let A=!0,h=n+l;for(let d=0;d<o;d++)if(this.view[d+h]!=c[d]){A=!1;break}A&&(a.push(n+o+l),l+=o-1)}return a}findFirstNotIn(e,t,s,n){let{start:r,length:a,backward:o}=this.prepareFindParameters(t,s,n),c={left:{id:-1,position:r},right:{id:-1,position:0},value:new We},l=a;for(;l>0;){if(c.right=this.findFirstIn(e,o?r-a+l:r+a-l,l,o),c.right.id==-1){a=l,o?r-=a:r=c.left.position,c.value=new We({buffer:this._buffer.slice(r,r+a)});break}if(c.right.position!=(o?c.left.position-e[c.right.id].length:c.left.position+e[c.right.id].length)){o?(r=c.right.position+e[c.right.id].length,a=c.left.position-c.right.position-e[c.right.id].length):(r=c.left.position,a=c.right.position-c.left.position-e[c.right.id].length),c.value=new We({buffer:this._buffer.slice(r,r+a)});break}c.left=c.right,l-=e[c.right.id].length}if(o){let A=c.right;c.right=c.left,c.left=A}return c}findAllNotIn(e,t,s){let{start:n,length:r}=this.prepareFindParameters(t,s),a=[],o={left:{id:-1,position:n},right:{id:-1,position:n},value:new We};do{let c=o.right.position;o=this.findFirstNotIn(e,o.right.position,r),r-=o.right.position-c,a.push({left:{id:o.left.id,position:o.left.position},right:{id:o.right.id,position:o.right.position},value:o.value})}while(o.right.id!=-1);return a}findFirstSequence(e,t,s,n){let{start:r,length:a,backward:o}=this.prepareFindParameters(t,s,n),c=this.skipNotPatterns(e,r,a,o);if(c==-1)return{position:-1,value:new We};let l=this.skipPatterns(e,c,a-(o?r-c:c-r),o);return o?(r=l,a=c-l):(r=c,a=l-c),{position:l,value:new We({buffer:this._buffer.slice(r,r+a)})}}findAllSequences(e,t,s){let{start:n,length:r}=this.prepareFindParameters(t,s),a=[],o={position:n,value:new We};do{let c=o.position;o=this.findFirstSequence(e,o.position,r),o.position!=-1&&(r-=o.position-c,a.push({position:o.position,value:o.value}))}while(o.position!=-1);return a}findPairedPatterns(e,t,s,n){let r=[];if(e.isEqual(t))return r;let{start:a,length:o}=this.prepareFindParameters(s,n),c=0,l=this.findAllPatternIn(e,a,o);if(!Array.isArray(l)||l.length==0)return r;let A=this.findAllPatternIn(t,a,o);if(!Array.isArray(A)||A.length==0)return r;for(;c<l.length&&A.length!=0;)if(l[0]!=A[0]){if(l[c]>A[0])break;for(;l[c]<A[0]&&(c++,!(c>=l.length)););r.push({left:l[c-1],right:A[0]}),l.splice(c-1,1),A.splice(0,1),c=0}else r.push({left:l[0],right:A[0]}),l.splice(0,1),A.splice(0,1);return r.sort((h,d)=>h.left-d.left),r}findPairedArrays(e,t,s,n){let{start:r,length:a}=this.prepareFindParameters(s,n),o=[],c=0,l=this.findAllIn(e,r,a);if(l.length==0)return o;let A=this.findAllIn(t,r,a);if(A.length==0)return o;for(;c<l.length&&A.length!=0;)if(l[0].position!=A[0].position){if(l[c].position>A[0].position)break;for(;l[c].position<A[0].position&&(c++,!(c>=l.length)););o.push({left:l[c-1],right:A[0]}),l.splice(c-1,1),A.splice(0,1),c=0}else o.push({left:l[0],right:A[0]}),l.splice(0,1),A.splice(0,1);return o.sort((h,d)=>h.left.position-d.left.position),o}replacePattern(e,t,s,n,r=null){let a,o=[],c={status:-1,searchPatternPositions:[],replacePatternPositions:[]},{start:l,length:A}=this.prepareFindParameters(s,n);if(r==null){if(o=this.findAllIn([e],l,A),o.length==0)return c}else o=r;c.searchPatternPositions.push(...Array.from(o,E=>E.position));let h=e.length-t.length,d=new ArrayBuffer(this.view.length-o.length*h),m=new Uint8Array(d);for(m.set(new Uint8Array(this.buffer,0,l)),a=0;a<o.length;a++){let E=a==0?l:o[a-1].position;m.set(new Uint8Array(this.buffer,E,o[a].position-e.length-E),E-a*h),m.set(t.view,o[a].position-e.length-a*h),c.replacePatternPositions.push(o[a].position-e.length-a*h)}return a--,m.set(new Uint8Array(this.buffer,o[a].position,this.length-o[a].position),o[a].position-e.length+t.length-a*h),this.buffer=d,this.view=new Uint8Array(this.buffer),c.status=1,c}skipPatterns(e,t,s,n){let{start:r,length:a,backward:o}=this.prepareFindParameters(t,s,n),c=r;for(let l=0;l<e.length;l++){let A=e[l].length,h=o?c-A:c,d=!0;for(let m=0;m<A;m++)if(this.view[m+h]!=e[l].view[m]){d=!1;break}if(d){if(l=-1,o){if(c-=A,c<=0)return c}else if(c+=A,c>=r+a)return c}}return c}skipNotPatterns(e,t,s,n){let{start:r,length:a,backward:o}=this.prepareFindParameters(t,s,n),c=-1;for(let l=0;l<a;l++){for(let A=0;A<e.length;A++){let h=e[A].length,d=o?r-l-h:r+l,m=!0;for(let E=0;E<h;E++)if(this.view[E+d]!=e[A].view[E]){m=!1;break}if(m){c=o?r-l:r+l;break}}if(c!=-1)break}return c}prepareFindParameters(e=null,t=null,s=!1){return e===null&&(e=s?this.length:0),e>this.length&&(e=this.length),s?(t===null&&(t=e),t>e&&(t=e)):(t===null&&(t=this.length-e),t>this.length-e&&(t=this.length-e)),{start:e,length:t,backward:s}}},u(We,"Lr"),We),Oi,Lc=(Oi=class{constructor(e={}){this._stream=new Gt,this._length=0,this._start=0,this.backward=!1,this.appendBlock=0,this.prevLength=0,this.prevStart=0,this.stream="view"in e?new Gt({view:e.view}):"buffer"in e?new Gt({buffer:e.buffer}):"string"in e?new Gt({string:e.string}):"hexstring"in e?new Gt({hexstring:e.hexstring}):"stream"in e?e.stream.slice():new Gt,"backward"in e&&e.backward&&(this.backward=e.backward,this._start=this.stream.length),"length"in e&&e.length>0&&(this._length=e.length),"start"in e&&e.start&&e.start>0&&(this._start=e.start),"appendBlock"in e&&e.appendBlock&&e.appendBlock>0&&(this.appendBlock=e.appendBlock)}set stream(e){this._stream=e,this.prevLength=this._length,this._length=e.length,this.prevStart=this._start,this._start=0}get stream(){return this._stream}set length(e){this.prevLength=this._length,this._length=e}get length(){return this.appendBlock?this.start:this._length}set start(e){e>this.stream.length||(this.prevStart=this._start,this.prevLength=this._length,this._length-=this.backward?this._start-e:e-this._start,this._start=e)}get start(){return this._start}get buffer(){return this._stream.buffer.slice(0,this._length)}resetPosition(){this._start=this.prevStart,this._length=this.prevLength}findPattern(e,t=null){(t==null||t>this.length)&&(t=this.length);let s=this.stream.findPattern(e,this.start,this.length,this.backward);if(s==-1)return s;if(this.backward){if(s<this.start-e.length-t)return-1}else if(s>this.start+e.length+t)return-1;return this.start=s,s}findFirstIn(e,t=null){(t==null||t>this.length)&&(t=this.length);let s=this.stream.findFirstIn(e,this.start,this.length,this.backward);if(s.id==-1)return s;if(this.backward){if(s.position<this.start-e[s.id].length-t)return{id:-1,position:this.backward?0:this.start+this.length}}else if(s.position>this.start+e[s.id].length+t)return{id:-1,position:this.backward?0:this.start+this.length};return this.start=s.position,s}findAllIn(e){let t=this.backward?this.start-this.length:this.start;return this.stream.findAllIn(e,t,this.length)}findFirstNotIn(e,t=null){(t==null||t>this._length)&&(t=this._length);let s=this._stream.findFirstNotIn(e,this._start,this._length,this.backward);if(s.left.id==-1&&s.right.id==-1)return s;if(this.backward){if(s.right.id!=-1&&s.right.position<this._start-e[s.right.id].length-t)return{left:{id:-1,position:this._start},right:{id:-1,position:0},value:new Gt}}else if(s.left.id!=-1&&s.left.position>this._start+e[s.left.id].length+t)return{left:{id:-1,position:this._start},right:{id:-1,position:0},value:new Gt};return this.backward?s.left.id==-1?this.start=0:this.start=s.left.position:s.right.id==-1?this.start=this._start+this._length:this.start=s.right.position,s}findAllNotIn(e){let t=this.backward?this._start-this._length:this._start;return this._stream.findAllNotIn(e,t,this._length)}findFirstSequence(e,t=null,s=null){(t==null||t>this._length)&&(t=this._length),(s==null||s>t)&&(s=t);let n=this._stream.findFirstSequence(e,this._start,t,this.backward);if(n.value.length==0)return n;if(this.backward){if(n.position<this._start-n.value.length-s)return{position:-1,value:new Gt}}else if(n.position>this._start+n.value.length+s)return{position:-1,value:new Gt};return this.start=n.position,n}findAllSequences(e){let t=this.backward?this.start-this.length:this.start;return this.stream.findAllSequences(e,t,this.length)}findPairedPatterns(e,t,s=null){(s==null||s>this.length)&&(s=this.length);let n=this.backward?this.start-this.length:this.start,r=this.stream.findPairedPatterns(e,t,n,this.length);if(r.length){if(this.backward){if(r[0].right<this.start-t.length-s)return[]}else if(r[0].left>this.start+e.length+s)return[]}return r}findPairedArrays(e,t,s=null){(s==null||s>this.length)&&(s=this.length);let n=this.backward?this.start-this.length:this.start,r=this.stream.findPairedArrays(e,t,n,this.length);if(r.length){if(this.backward){if(r[0].right.position<this.start-t[r[0].right.id].length-s)return[]}else if(r[0].left.position>this.start+e[r[0].left.id].length+s)return[]}return r}replacePattern(e,t){let s=this.backward?this.start-this.length:this.start;return this.stream.replacePattern(e,t,s,this.length)}skipPatterns(e){let t=this.stream.skipPatterns(e,this.start,this.length,this.backward);return this.start=t,t}skipNotPatterns(e){let t=this.stream.skipNotPatterns(e,this.start,this.length,this.backward);return t==-1?-1:(this.start=t,t)}append(e){this.beforeAppend(e.length),this._stream.view.set(e.view,this._start),this._length+=2*e.length,this.start=this._start+e.length,this.prevLength-=2*e.length}appendView(e){this.beforeAppend(e.length),this._stream.view.set(e,this._start),this._length+=2*e.length,this.start=this._start+e.length,this.prevLength-=2*e.length}appendChar(e){this.beforeAppend(1),this._stream.view[this._start]=e,this._length+=2,this.start=this._start+1,this.prevLength-=2}appendUint16(e){this.beforeAppend(2);let t=new Uint16Array([e]),s=new Uint8Array(t.buffer);this.stream.view[this._start]=s[1],this._stream.view[this._start+1]=s[0],this._length+=4,this.start=this._start+2,this.prevLength-=4}appendUint24(e){this.beforeAppend(3);let t=new Uint32Array([e]),s=new Uint8Array(t.buffer);this._stream.view[this._start]=s[2],this._stream.view[this._start+1]=s[1],this._stream.view[this._start+2]=s[0],this._length+=6,this.start=this._start+3,this.prevLength-=6}appendUint32(e){this.beforeAppend(4);let t=new Uint32Array([e]),s=new Uint8Array(t.buffer);this._stream.view[this._start]=s[3],this._stream.view[this._start+1]=s[2],this._stream.view[this._start+2]=s[1],this._stream.view[this._start+3]=s[0],this._length+=8,this.start=this._start+4,this.prevLength-=8}appendInt16(e){this.beforeAppend(2);let t=new Int16Array([e]),s=new Uint8Array(t.buffer);this._stream.view[this._start]=s[1],this._stream.view[this._start+1]=s[0],this._length+=4,this.start=this._start+2,this.prevLength-=4}appendInt32(e){this.beforeAppend(4);let t=new Int32Array([e]),s=new Uint8Array(t.buffer);this._stream.view[this._start]=s[3],this._stream.view[this._start+1]=s[2],this._stream.view[this._start+2]=s[1],this._stream.view[this._start+3]=s[0],this._length+=8,this.start=this._start+4,this.prevLength-=8}getBlock(e,t=!0){if(this._length<=0)return new Uint8Array(0);let s;if(this._length<e&&(e=this._length),this.backward){let n=this._stream.view.subarray(this._length-e,this._length);s=new Uint8Array(e);for(let r=0;r<e;r++)s[e-1-r]=n[r]}else s=this._stream.view.subarray(this._start,this._start+e);return t&&(this.start+=this.backward?-1*e:e),s}getUint16(e=!0){let t=this.getBlock(2,e);return t.length<2?0:t[0]<<8|t[1]}getInt16(e=!0){let t=this.getUint16(e),s=32768;return t&s?-(s-(t^s)):t}getUint24(e=!0){let t=this.getBlock(4,e);return t.length<3?0:t[0]<<16|t[1]<<8|t[2]}getUint32(e=!0){let t=this.getBlock(4,e);return t.length<4?0:16777216*t[0]+(t[1]<<16)+(t[2]<<8)+t[3]}getInt32(e=!0){let t=this.getUint32(e),s=2147483648;return t&s?-(s-(t^s)):t}beforeAppend(e){this._start+e>this._stream.length&&(e>this.appendBlock&&(this.appendBlock=e+Oi.APPEND_BLOCK),this._stream.realloc(this._stream.length+this.appendBlock))}},u(Oi,"zr"),Oi);Lc.APPEND_BLOCK=1e3;var Pu=new Uint32Array([1732584193,4023233417,2562383102,271733878,3285377520]),nr=new Uint32Array(80),Au,B0=(Au=class extends Fw{constructor(){super(64,20,8,!1),this.A=0|Pu[0],this.B=0|Pu[1],this.C=0|Pu[2],this.D=0|Pu[3],this.E=0|Pu[4]}get(){let{A:e,B:t,C:s,D:n,E:r}=this;return[e,t,s,n,r]}set(e,t,s,n,r){this.A=0|e,this.B=0|t,this.C=0|s,this.D=0|n,this.E=0|r}process(e,t){for(let c=0;c<16;c++,t+=4)nr[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)nr[c]=Ym(nr[c-3]^nr[c-8]^nr[c-14]^nr[c-16],1);let{A:s,B:n,C:r,D:a,E:o}=this;for(let c=0;c<80;c++){let l,A;c<20?(l=UE(n,r,a),A=1518500249):c<40?(l=n^r^a,A=1859775393):c<60?(l=RE(n,r,a),A=2400959708):(l=n^r^a,A=3395469782);let h=Ym(s,5)+l+o+A+nr[c]|0;o=a,a=r,r=Ym(n,30),n=s,s=h}s=s+this.A|0,n=n+this.B|0,r=r+this.C|0,a=a+this.D|0,o=o+this.E|0,this.set(s,n,r,a,o)}roundClean(){nr.fill(0)}destroy(){this.set(0,0,0,0,0),this.buffer.fill(0)}},u(Au,"Kr"),Au),p0=bm(()=>new B0),Re=new ArrayBuffer(0),w="";var qr,Be=(qr=class extends TypeError{constructor(){super(...arguments),this.name=qr.NAME}static isType(e,t){if(typeof t=="string"){if(t==="Array"&&Array.isArray(e)||t==="ArrayBuffer"&&e instanceof ArrayBuffer||t==="ArrayBufferView"&&ArrayBuffer.isView(e)||typeof e===t)return!0}else if(e instanceof t)return!0;return!1}static assert(e,t,...s){for(let r of s)if(this.isType(e,r))return;let n=s.map(r=>r instanceof Function&&"name"in r?r.name:`${r}`);throw new qr(`Parameter '${t}' is not of type ${n.length>1?`(${n.join(" or ")})`:n[0]}`)}},u(qr,"_r"),qr);Be.NAME="ArgumentError";var dn,de=(dn=class extends TypeError{static assert(...e){let t,s,n=null;typeof e[0]=="string"?(n=e[0],t=e[1],s=e.slice(2)):(t=e[0],s=e.slice(1)),Be.assert(t,"parameters","object");for(let r of s)if(t[r]==null)throw new dn(r,n)}static assertEmpty(e,t,s){if(e==null)throw new dn(t,s)}constructor(e,t=null,s){super(),this.name=dn.NAME,this.field=e,t&&(this.target=t),this.message=s||`Absent mandatory parameter '${e}' ${t?` in '${t}'`:w}`}},u(dn,"$r"),dn);de.NAME="ParameterError";var Wi,R=(Wi=class extends Error{static assertSchema(e,t){if(!e.verified)throw new Error(`Object's schema was not verified against input data for ${t}`)}static assert(e,t){if(e.offset===-1)throw new Wi(`Error during parsing of ASN.1 data. Data is not correct for '${t}'.`)}constructor(e){super(e),this.name="AsnError"}},u(Wi,"ea"),Wi),gu,F=(gu=class{static blockName(){return this.CLASS_NAME}static fromBER(e){let t=Qe(e);R.assert(t,this.name);try{return new this({schema:t.result})}catch{throw new R(`Cannot create '${this.CLASS_NAME}' from ASN.1 object`)}}static defaultValues(e){throw new Error(`Invalid member name for ${this.CLASS_NAME} class: ${e}`)}static schema(e={}){throw new Error(`Method '${this.CLASS_NAME}.schema' should be overridden`)}get className(){return this.constructor.CLASS_NAME}toString(e="hex"){let t;try{t=this.toSchema()}catch{t=this.toSchema(!0)}return ie.ToString(t.toBER(),e)}},u(gu,"ta"),gu);function Wr(i){let e=!1,t=w,s=i.trim();for(let n=0;n<s.length;n++)s.charCodeAt(n)===32?e===!1&&(e=!0):(e&&(t+=" ",e=!1),t+=s[n]);return t.toLowerCase()}u(Wr,"sa");F.CLASS_NAME="PkiObject";var zu="type",_m="value",Bs,Lf=(Bs=class extends F{constructor(e={}){super(),this.type=g(e,zu,Bs.defaultValues(zu)),this.value=g(e,_m,Bs.defaultValues(_m)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case zu:return w;case _m:return{};default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.type||w}),new re({name:t.value||w})]})}fromSchema(e){Y(e,[zu,"typeValue"]);let t=H(e,e,Bs.schema({names:{type:zu,value:"typeValue"}}));R.assertSchema(t,this.className),this.type=t.result.type.valueBlock.toString(),this.value=t.result.typeValue}toSchema(){return new M({value:[new z({value:this.type}),this.value]})}toJSON(){let e={type:this.type};return Object.keys(this.value).length!==0?e.value=this.value.toJSON():e.value=this.value,e}isEqual(e){let t=[hs.blockName(),gg.blockName(),dg.blockName(),jc.blockName(),ls.blockName(),mg.blockName(),Uf.blockName(),Xd.blockName(),Rf.blockName(),$d.blockName(),Gf.blockName(),Ff.blockName()];if(e instanceof ArrayBuffer)return ne.isEqual(this.value.valueBeforeDecodeView,e);if(e.constructor.blockName()===Bs.blockName()){if(this.type!==e.type)return!1;let s=[!1,!1],n=this.value.constructor.blockName();for(let r of t)n===r&&(s[0]=!0),e.value.constructor.blockName()===r&&(s[1]=!0);if(s[0]!==s[1])return!1;if(s[0]&&s[1]){let r=Wr(this.value.valueBlock.value),a=Wr(e.value.valueBlock.value);if(r.localeCompare(a)!==0)return!1}else if(!ne.isEqual(this.value.valueBeforeDecodeView,e.value.valueBeforeDecodeView))return!1;return!0}return!1}},u(Bs,"aa"),Bs);Lf.CLASS_NAME="AttributeTypeAndValue";var Ea="typesAndValues",Fg="valueBeforeDecode",ps,ye=(ps=class extends F{constructor(e={}){super(),this.typesAndValues=g(e,Ea,ps.defaultValues(Ea)),this.valueBeforeDecode=g(e,Fg,ps.defaultValues(Fg)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ea:return[];case Fg:return Re;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ea:return t.length===0;case Fg:return t.byteLength===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new ae({name:t.repeatedSequence||w,value:new Se({value:[new ae({name:t.repeatedSet||w,value:Lf.schema(t.typeAndValue||{})})]})})]})}fromSchema(e){Y(e,["RDN",Ea]);let t=H(e,e,ps.schema({names:{blockName:"RDN",repeatedSet:Ea}}));R.assertSchema(t,this.className),Ea in t.result&&(this.typesAndValues=Array.from(t.result.typesAndValues,s=>new Lf({schema:s}))),this.valueBeforeDecode=t.result.RDN.valueBeforeDecodeView.slice().buffer}toSchema(){if(this.valueBeforeDecode.byteLength===0)return new M({value:[new Se({value:Array.from(this.typesAndValues,t=>t.toSchema())})]});let e=Qe(this.valueBeforeDecode);if(R.assert(e,"RelativeDistinguishedNames"),!(e.result instanceof M))throw new Error("ASN.1 result should be SEQUENCE");return e.result}toJSON(){return{typesAndValues:Array.from(this.typesAndValues,e=>e.toJSON())}}isEqual(e){if(e instanceof ps){if(this.typesAndValues.length!==e.typesAndValues.length)return!1;for(let[t,s]of this.typesAndValues.entries())if(s.isEqual(e.typesAndValues[t])===!1)return!1;return!0}return e instanceof ArrayBuffer&&Vu(this.valueBeforeDecode,e)}},u(ps,"la"),ps);ye.CLASS_NAME="RelativeDistinguishedNames";var ih="type",oh="value";function E0(i={},e=!1){let t=g(i,"names",{});return new M({optional:e,value:[new v({optional:!0,idBlock:{tagClass:2,tagNumber:1},name:t.country_name||w,value:[new Ce({value:[new jc,new ls]})]}),new v({optional:!0,idBlock:{tagClass:2,tagNumber:2},name:t.administration_domain_name||w,value:[new Ce({value:[new jc,new ls]})]}),new se({optional:!0,idBlock:{tagClass:3,tagNumber:0},name:t.network_address||w,isHexOnly:!0}),new se({optional:!0,idBlock:{tagClass:3,tagNumber:1},name:t.terminal_identifier||w,isHexOnly:!0}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:2},name:t.private_domain_name||w,value:[new Ce({value:[new jc,new ls]})]}),new se({optional:!0,idBlock:{tagClass:3,tagNumber:3},name:t.organization_name||w,isHexOnly:!0}),new se({optional:!0,name:t.numeric_user_identifier||w,idBlock:{tagClass:3,tagNumber:4},isHexOnly:!0}),new v({optional:!0,name:t.personal_name||w,idBlock:{tagClass:3,tagNumber:5},value:[new se({idBlock:{tagClass:3,tagNumber:0},isHexOnly:!0}),new se({optional:!0,idBlock:{tagClass:3,tagNumber:1},isHexOnly:!0}),new se({optional:!0,idBlock:{tagClass:3,tagNumber:2},isHexOnly:!0}),new se({optional:!0,idBlock:{tagClass:3,tagNumber:3},isHexOnly:!0})]}),new v({optional:!0,name:t.organizational_unit_names||w,idBlock:{tagClass:3,tagNumber:6},value:[new ae({value:new ls})]})]})}u(E0,"ua");function y0(i=!1){return new M({optional:i,value:[new ls,new ls]})}u(y0,"Aa");function I0(i=!1){return new Se({optional:i,value:[new se({optional:!0,idBlock:{tagClass:3,tagNumber:0},isHexOnly:!0}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new re]})]})}u(I0,"ga");var $t,pe=($t=class extends F{constructor(e={}){super(),this.type=g(e,ih,$t.defaultValues(ih)),this.value=g(e,oh,$t.defaultValues(oh)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ih:return 9;case oh:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ih:return t===$t.defaultValues(e);case oh:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new Ce({value:[new v({idBlock:{tagClass:3,tagNumber:0},name:t.blockName||w,value:[new z,new v({idBlock:{tagClass:3,tagNumber:0},value:[new re]})]}),new se({name:t.blockName||w,idBlock:{tagClass:3,tagNumber:1}}),new se({name:t.blockName||w,idBlock:{tagClass:3,tagNumber:2}}),new v({idBlock:{tagClass:3,tagNumber:3},name:t.blockName||w,value:[E0(t.builtInStandardAttributes||{},!1),y0(!0),I0(!0)]}),new v({idBlock:{tagClass:3,tagNumber:4},name:t.blockName||w,value:[ye.schema(t.directoryName||{})]}),new v({idBlock:{tagClass:3,tagNumber:5},name:t.blockName||w,value:[new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Ce({value:[new mg,new ls,new dg,new hs,new gg]})]}),new v({idBlock:{tagClass:3,tagNumber:1},value:[new Ce({value:[new mg,new ls,new dg,new hs,new gg]})]})]}),new se({name:t.blockName||w,idBlock:{tagClass:3,tagNumber:6}}),new se({name:t.blockName||w,idBlock:{tagClass:3,tagNumber:7}}),new se({name:t.blockName||w,idBlock:{tagClass:3,tagNumber:8}})]})}fromSchema(e){Y(e,["blockName","otherName","rfc822Name","dNSName","x400Address","directoryName","ediPartyName","uniformResourceIdentifier","iPAddress","registeredID"]);let t=H(e,e,$t.schema({names:{blockName:"blockName",otherName:"otherName",rfc822Name:"rfc822Name",dNSName:"dNSName",x400Address:"x400Address",directoryName:{names:{blockName:"directoryName"}},ediPartyName:"ediPartyName",uniformResourceIdentifier:"uniformResourceIdentifier",iPAddress:"iPAddress",registeredID:"registeredID"}}));switch(R.assertSchema(t,this.className),this.type=t.result.blockName.idBlock.tagNumber,this.type){case 0:case 3:this.value=t.result.blockName;break;case 1:case 2:case 6:{let s=t.result.blockName;s.idBlock.tagClass=1,s.idBlock.tagNumber=22;let n=Qe(s.toBER(!1));R.assert(n,"GeneralName value"),this.value=n.result.valueBlock.value}break;case 4:this.value=new ye({schema:t.result.directoryName});break;case 5:this.value=t.result.ediPartyName;break;case 7:this.value=new J({valueHex:t.result.blockName.valueBlock.valueHex});break;case 8:{let s=t.result.blockName;s.idBlock.tagClass=1,s.idBlock.tagNumber=6;let n=Qe(s.toBER(!1));R.assert(n,"GeneralName registeredID"),this.value=n.result.valueBlock.toString()}}}toSchema(){switch(this.type){case 0:case 3:case 5:return new v({idBlock:{tagClass:3,tagNumber:this.type},value:[this.value]});case 1:case 2:case 6:{let e=new Xd({value:this.value});return e.idBlock.tagClass=3,e.idBlock.tagNumber=this.type,e}case 4:return new v({idBlock:{tagClass:3,tagNumber:4},value:[this.value.toSchema()]});case 7:{let e=this.value;return e.idBlock.tagClass=3,e.idBlock.tagNumber=this.type,e}case 8:{let e=new z({value:this.value});return e.idBlock.tagClass=3,e.idBlock.tagNumber=this.type,e}default:return $t.schema()}}toJSON(){let e={type:this.type,value:w};if(typeof this.value=="string")e.value=this.value;else try{e.value=this.value.toJSON()}catch{}return e}},u($t,"ma"),$t);pe.CLASS_NAME="GeneralName";var ch="accessMethod",lh="accessLocation",C0=[ch,lh],mn,Of=(mn=class extends F{constructor(e={}){super(),this.accessMethod=g(e,ch,mn.defaultValues(ch)),this.accessLocation=g(e,lh,mn.defaultValues(lh)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ch:return w;case lh:return new pe;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.accessMethod||w}),pe.schema(t.accessLocation||{})]})}fromSchema(e){Y(e,C0);let t=H(e,e,mn.schema({names:{accessMethod:ch,accessLocation:{names:{blockName:lh}}}}));R.assertSchema(t,this.className),this.accessMethod=t.result.accessMethod.valueBlock.toString(),this.accessLocation=new pe({schema:t.result.accessLocation})}toSchema(){return new M({value:[new z({value:this.accessMethod}),this.accessLocation.toSchema()]})}toJSON(){return{accessMethod:this.accessMethod,accessLocation:this.accessLocation.toJSON()}}},u(mn,"fa"),mn);Of.CLASS_NAME="AccessDescription";var ir="seconds",or="millis",cr="micros",_t,ba=(_t=class extends F{constructor(e={}){super(),ir in e&&(this.seconds=g(e,ir,_t.defaultValues(ir))),or in e&&(this.millis=g(e,or,_t.defaultValues(or))),cr in e&&(this.micros=g(e,cr,_t.defaultValues(cr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ir:case or:case cr:return 0;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ir:case or:case cr:return t===_t.defaultValues(e);default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,optional:!0,value:[new x({optional:!0,name:t.seconds||w}),new se({name:t.millis||w,optional:!0,idBlock:{tagClass:3,tagNumber:0}}),new se({name:t.micros||w,optional:!0,idBlock:{tagClass:3,tagNumber:1}})]})}fromSchema(e){Y(e,[ir,or,cr]);let t=H(e,e,_t.schema({names:{seconds:ir,millis:or,micros:cr}}));if(R.assertSchema(t,this.className),"seconds"in t.result&&(this.seconds=t.result.seconds.valueBlock.valueDec),"millis"in t.result){let s=new x({valueHex:t.result.millis.valueBlock.valueHex});this.millis=s.valueBlock.valueDec}if("micros"in t.result){let s=new x({valueHex:t.result.micros.valueBlock.valueHex});this.micros=s.valueBlock.valueDec}}toSchema(){let e=[];if(this.seconds!==void 0&&e.push(new x({value:this.seconds})),this.millis!==void 0){let t=new x({value:this.millis});e.push(new se({idBlock:{tagClass:3,tagNumber:0},valueHex:t.valueBlock.valueHexView}))}if(this.micros!==void 0){let t=new x({value:this.micros});e.push(new se({idBlock:{tagClass:3,tagNumber:1},valueHex:t.valueBlock.valueHexView}))}return new M({value:e})}toJSON(){let e={};return this.seconds!==void 0&&(e.seconds=this.seconds),this.millis!==void 0&&(e.millis=this.millis),this.micros!==void 0&&(e.micros=this.micros),e}},u(_t,"ya"),_t);ba.CLASS_NAME="Accuracy";var Hg="algorithmId",Zu="algorithmParams",ty="algorithm",Wf="params",M0=[ty,Wf],Es,k=(Es=class extends F{constructor(e={}){super(),this.algorithmId=g(e,Hg,Es.defaultValues(Hg)),Zu in e&&(this.algorithmParams=g(e,Zu,Es.defaultValues(Zu))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Hg:return w;case Zu:return new re;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Hg:return t===w;case Zu:return t instanceof re;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,optional:t.optional||!1,value:[new z({name:t.algorithmIdentifier||w}),new re({name:t.algorithmParams||w,optional:!0})]})}fromSchema(e){Y(e,M0);let t=H(e,e,Es.schema({names:{algorithmIdentifier:ty,algorithmParams:Wf}}));R.assertSchema(t,this.className),this.algorithmId=t.result.algorithm.valueBlock.toString(),Wf in t.result&&(this.algorithmParams=t.result.params)}toSchema(){let e=[];return e.push(new z({value:this.algorithmId})),!this.algorithmParams||this.algorithmParams instanceof re||e.push(this.algorithmParams),new M({value:e})}toJSON(){let e={algorithmId:this.algorithmId};return!this.algorithmParams||this.algorithmParams instanceof re||(e.algorithmParams=this.algorithmParams.toJSON()),e}isEqual(e){return e instanceof Es&&this.algorithmId===e.algorithmId&&(this.algorithmParams?!!e.algorithmParams&&JSON.stringify(this.algorithmParams)===JSON.stringify(e.algorithmParams):!e.algorithmParams)}},u(Es,"Qa"),Es);k.CLASS_NAME="AlgorithmIdentifier";var fo="altNames",b0=[fo],Xr,Pf=(Xr=class extends F{constructor(e={}){super(),this.altNames=g(e,fo,Xr.defaultValues(fo)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===fo?[]:super.defaultValues(e)}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new ae({name:t.altNames||w,value:pe.schema()})]})}fromSchema(e){Y(e,b0);let t=H(e,e,Xr.schema({names:{altNames:fo}}));R.assertSchema(t,this.className),fo in t.result&&(this.altNames=Array.from(t.result.altNames,s=>new pe({schema:s})))}toSchema(){return new M({value:Array.from(this.altNames,e=>e.toSchema())})}toJSON(){return{altNames:Array.from(this.altNames,e=>e.toJSON())}}},u(Xr,"Sa"),Xr);Pf.CLASS_NAME="AltName";var wo="type",Bo="values",N0=[wo,Bo],fn,ke=(fn=class extends F{constructor(e={}){super(),this.type=g(e,wo,fn.defaultValues(wo)),this.values=g(e,Bo,fn.defaultValues(Bo)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case wo:return w;case Bo:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case wo:return t===w;case Bo:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.type||w}),new Se({name:t.setName||w,value:[new ae({name:t.values||w,value:new re})]})]})}fromSchema(e){Y(e,N0);let t=H(e,e,fn.schema({names:{type:wo,values:Bo}}));R.assertSchema(t,this.className),this.type=t.result.type.valueBlock.toString(),this.values=t.result.values}toSchema(){return new M({value:[new z({value:this.type}),new Se({value:this.values})]})}toJSON(){return{type:this.type,values:Array.from(this.values,e=>e.toJSON())}}},u(fn,"Ga"),fn);ke.CLASS_NAME="Attribute";var uh="notBeforeTime",hh="notAfterTime",v0=[uh,hh],wn,Ti=(wn=class extends F{constructor(e={}){super(),this.notBeforeTime=g(e,uh,wn.defaultValues(uh)),this.notAfterTime=g(e,hh,wn.defaultValues(hh)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case uh:case hh:return new Date(0,0,0);default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new Ie({name:t.notBeforeTime||w}),new Ie({name:t.notAfterTime||w})]})}fromSchema(e){Y(e,v0);let t=H(e,e,wn.schema({names:{notBeforeTime:uh,notAfterTime:hh}}));R.assertSchema(t,this.className),this.notBeforeTime=t.result.notBeforeTime.toDate(),this.notAfterTime=t.result.notAfterTime.toDate()}toSchema(){return new M({value:[new Ie({valueDate:this.notBeforeTime}),new Ie({valueDate:this.notAfterTime})]})}toJSON(){return{notBeforeTime:this.notBeforeTime,notAfterTime:this.notAfterTime}}},u(wn,"Ha"),wn);Ti.CLASS_NAME="AttCertValidityPeriod";var Ku="names",Jp="generalNames",$r,nt=($r=class extends F{constructor(e={}){super(),this.names=g(e,Ku,$r.defaultValues(Ku)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e==="names"?[]:super.defaultValues(e)}static schema(e={},t=!1){let s=g(e,Ku,{});return new M({optional:t,name:s.blockName||w,value:[new ae({name:s.generalNames||w,value:pe.schema()})]})}fromSchema(e){Y(e,[Ku,Jp]);let t=H(e,e,$r.schema({names:{blockName:Ku,generalNames:Jp}}));R.assertSchema(t,this.className),this.names=Array.from(t.result.generalNames,s=>new pe({schema:s}))}toSchema(){return new M({value:Array.from(this.names,e=>e.toSchema())})}toJSON(){return{names:Array.from(this.names,e=>e.toJSON())}}},u($r,"ja"),$r);nt.CLASS_NAME="GeneralNames";var sy="2.5.29.17",ny="2.5.29.18",Lw="2.5.29.19",ry="2.5.29.28",ay="2.5.29.29",iy="2.5.29.30",oy="2.5.29.31",Ow="2.5.29.46",cy="2.5.29.32",Rt="2.5.29.32.0",ly="2.5.29.33",Ww="2.5.29.35",uy="2.5.29.36",Pw="1.3.6.1.5.5.7.1.1",zw="1.2.840.113549.1.7.1",hy="1.2.840.113549.1.7.2",Ay="1.2.840.113549.1.7.3",gy="1.2.840.113549.1.7.6",Lp="1.2.840.113549.1.9.22.1",Op="1.2.840.113549.1.9.22.3",Wp="1.2.840.113549.1.9.23.1",ud="1.3.6.1.5.5.7.48.1.1",Na="keyIdentifier",va="authorityCertIssuer",Da="authorityCertSerialNumber",D0=[Na,va,Da],ys,Zw=(ys=class extends F{constructor(e={}){super(),Na in e&&(this.keyIdentifier=g(e,Na,ys.defaultValues(Na))),va in e&&(this.authorityCertIssuer=g(e,va,ys.defaultValues(va))),Da in e&&(this.authorityCertSerialNumber=g(e,Da,ys.defaultValues(Da))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Na:return new J;case va:return[];case Da:return new x;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new se({name:t.keyIdentifier||w,optional:!0,idBlock:{tagClass:3,tagNumber:0}}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new ae({name:t.authorityCertIssuer||w,value:pe.schema()})]}),new se({name:t.authorityCertSerialNumber||w,optional:!0,idBlock:{tagClass:3,tagNumber:2}})]})}fromSchema(e){Y(e,D0);let t=H(e,e,ys.schema({names:{keyIdentifier:Na,authorityCertIssuer:va,authorityCertSerialNumber:Da}}));R.assertSchema(t,this.className),Na in t.result&&(this.keyIdentifier=new J({valueHex:t.result.keyIdentifier.valueBlock.valueHex})),va in t.result&&(this.authorityCertIssuer=Array.from(t.result.authorityCertIssuer,s=>new pe({schema:s}))),Da in t.result&&(this.authorityCertSerialNumber=new x({valueHex:t.result.authorityCertSerialNumber.valueBlock.valueHex}))}toSchema(){let e=[];return this.keyIdentifier&&e.push(new se({idBlock:{tagClass:3,tagNumber:0},valueHex:this.keyIdentifier.valueBlock.valueHexView})),this.authorityCertIssuer&&e.push(new v({idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.authorityCertIssuer,t=>t.toSchema())})),this.authorityCertSerialNumber&&e.push(new se({idBlock:{tagClass:3,tagNumber:2},valueHex:this.authorityCertSerialNumber.valueBlock.valueHexView})),new M({value:e})}toJSON(){let e={};return this.keyIdentifier&&(e.keyIdentifier=this.keyIdentifier.toJSON()),this.authorityCertIssuer&&(e.authorityCertIssuer=Array.from(this.authorityCertIssuer,t=>t.toJSON())),this.authorityCertSerialNumber&&(e.authorityCertSerialNumber=this.authorityCertSerialNumber.toJSON()),e}},u(ys,"wi"),ys);Zw.CLASS_NAME="AuthorityKeyIdentifier";var ya="pathLenConstraint",Ia="cA",Bn,Kw=(Bn=class extends F{constructor(e={}){super(),this.cA=g(e,Ia,!1),ya in e&&(this.pathLenConstraint=g(e,ya,0)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e!==Ia&&super.defaultValues(e)}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new Ps({optional:!0,name:t.cA||w}),new x({optional:!0,name:t.pathLenConstraint||w})]})}fromSchema(e){Y(e,[Ia,ya]);let t=H(e,e,Bn.schema({names:{cA:Ia,pathLenConstraint:ya}}));R.assertSchema(t,this.className),Ia in t.result&&(this.cA=t.result.cA.valueBlock.value),ya in t.result&&(t.result.pathLenConstraint.valueBlock.isHexOnly?this.pathLenConstraint=t.result.pathLenConstraint:this.pathLenConstraint=t.result.pathLenConstraint.valueBlock.valueDec)}toSchema(){let e=[];return this.cA!==Bn.defaultValues(Ia)&&e.push(new Ps({value:this.cA})),ya in this&&(this.pathLenConstraint instanceof x?e.push(this.pathLenConstraint):e.push(new x({value:this.pathLenConstraint}))),new M({value:e})}toJSON(){let e={};return this.cA!==Bn.defaultValues(Ia)&&(e.cA=this.cA),ya in this&&(this.pathLenConstraint instanceof x?e.pathLenConstraint=this.pathLenConstraint.toJSON():e.pathLenConstraint=this.pathLenConstraint),e}},u(Bn,"fi"),Bn);Kw.CLASS_NAME="BasicConstraints";var ef="certificateIndex",tf="keyIndex",_r,dy=(_r=class extends F{constructor(e={}){super(),this.certificateIndex=g(e,ef,_r.defaultValues(ef)),this.keyIndex=g(e,tf,_r.defaultValues(tf)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ef:case tf:return 0;default:return super.defaultValues(e)}}static schema(){return new x}fromSchema(e){if(e.constructor.blockName()!==x.blockName())throw new Error("Object's schema was not verified against input data for CAVersion");let t=e.valueBlock.valueHex.slice(0),s=new Uint8Array(t);switch(!0){case t.byteLength<4:{let h=new ArrayBuffer(4);new Uint8Array(h).set(s,4-t.byteLength),t=h.slice(0)}break;case t.byteLength>4:{let h=new ArrayBuffer(4);new Uint8Array(h).set(s.slice(0,4)),t=h.slice(0)}}let n=t.slice(0,2),r=new Uint8Array(n),a=r[0];r[0]=r[1],r[1]=a;let o=new Uint16Array(n);this.keyIndex=o[0];let c=t.slice(2),l=new Uint8Array(c);a=l[0],l[0]=l[1],l[1]=a;let A=new Uint16Array(c);this.certificateIndex=A[0]}toSchema(){let e=new ArrayBuffer(2);new Uint16Array(e)[0]=this.certificateIndex;let t=new Uint8Array(e),s=t[0];t[0]=t[1],t[1]=s;let n=new ArrayBuffer(2);new Uint16Array(n)[0]=this.keyIndex;let r=new Uint8Array(n);return s=r[0],r[0]=r[1],r[1]=s,new x({valueHex:Yc(n,e)})}toJSON(){return{certificateIndex:this.certificateIndex,keyIndex:this.keyIndex}}},u(_r,"Ii"),_r);dy.CLASS_NAME="CAVersion";var Ah="policyQualifierId",gh="qualifier",Q0=[Ah,gh],pn,zf=(pn=class extends F{constructor(e={}){super(),this.policyQualifierId=g(e,Ah,pn.defaultValues(Ah)),this.qualifier=g(e,gh,pn.defaultValues(gh)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ah:return w;case gh:return new re;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.policyQualifierId||w}),new re({name:t.qualifier||w})]})}fromSchema(e){Y(e,Q0);let t=H(e,e,pn.schema({names:{policyQualifierId:Ah,qualifier:gh}}));R.assertSchema(t,this.className),this.policyQualifierId=t.result.policyQualifierId.valueBlock.toString(),this.qualifier=t.result.qualifier}toSchema(){return new M({value:[new z({value:this.policyQualifierId}),this.qualifier]})}toJSON(){return{policyQualifierId:this.policyQualifierId,qualifier:this.qualifier.toJSON()}}},u(pn,"Di"),pn);zf.CLASS_NAME="PolicyQualifierInfo";var dh="policyIdentifier",Qa="policyQualifiers",V0=[dh,Qa],En,Zf=(En=class extends F{constructor(e={}){super(),this.policyIdentifier=g(e,dh,En.defaultValues(dh)),Qa in e&&(this.policyQualifiers=g(e,Qa,En.defaultValues(Qa))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case dh:return w;case Qa:return[];default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.policyIdentifier||w}),new M({optional:!0,value:[new ae({name:t.policyQualifiers||w,value:zf.schema()})]})]})}fromSchema(e){Y(e,V0);let t=H(e,e,En.schema({names:{policyIdentifier:dh,policyQualifiers:Qa}}));R.assertSchema(t,this.className),this.policyIdentifier=t.result.policyIdentifier.valueBlock.toString(),Qa in t.result&&(this.policyQualifiers=Array.from(t.result.policyQualifiers,s=>new zf({schema:s})))}toSchema(){let e=[];return e.push(new z({value:this.policyIdentifier})),this.policyQualifiers&&e.push(new M({value:Array.from(this.policyQualifiers,t=>t.toSchema())})),new M({value:e})}toJSON(){let e={policyIdentifier:this.policyIdentifier};return this.policyQualifiers&&(e.policyQualifiers=Array.from(this.policyQualifiers,t=>t.toJSON())),e}},u(En,"vi"),En);Zf.CLASS_NAME="PolicyInformation";var mh="certificatePolicies",S0=[mh],ea,Kf=(ea=class extends F{constructor(e={}){super(),this.certificatePolicies=g(e,mh,ea.defaultValues(mh)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===mh?[]:super.defaultValues(e)}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new ae({name:t.certificatePolicies||w,value:Zf.schema()})]})}fromSchema(e){Y(e,S0);let t=H(e,e,ea.schema({names:{certificatePolicies:mh}}));R.assertSchema(t,this.className),this.certificatePolicies=Array.from(t.result.certificatePolicies,s=>new Zf({schema:s}))}toSchema(){return new M({value:Array.from(this.certificatePolicies,e=>e.toSchema())})}toJSON(){return{certificatePolicies:Array.from(this.certificatePolicies,e=>e.toJSON())}}},u(ea,"ki"),ea);Kf.CLASS_NAME="CertificatePolicies";var fh="templateID",Ks="templateMajorVersion",qs="templateMinorVersion",k0=[fh,Ks,qs],Is,x0=(Is=class extends F{constructor(e={}){super(),this.templateID=g(e,fh,Is.defaultValues(fh)),Ks in e&&(this.templateMajorVersion=g(e,Ks,Is.defaultValues(Ks))),qs in e&&(this.templateMinorVersion=g(e,qs,Is.defaultValues(qs))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case fh:return w;case Ks:case qs:return 0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.templateID||w}),new x({name:t.templateMajorVersion||w,optional:!0}),new x({name:t.templateMinorVersion||w,optional:!0})]})}fromSchema(e){Y(e,k0);let t=H(e,e,Is.schema({names:{templateID:fh,templateMajorVersion:Ks,templateMinorVersion:qs}}));R.assertSchema(t,this.className),this.templateID=t.result.templateID.valueBlock.toString(),Ks in t.result&&(this.templateMajorVersion=t.result.templateMajorVersion.valueBlock.valueDec),qs in t.result&&(this.templateMinorVersion=t.result.templateMinorVersion.valueBlock.valueDec)}toSchema(){let e=[];return e.push(new z({value:this.templateID})),Ks in this&&e.push(new x({value:this.templateMajorVersion})),qs in this&&e.push(new x({value:this.templateMinorVersion})),new M({value:e})}toJSON(){let e={templateID:this.templateID};return Ks in this&&(e.templateMajorVersion=this.templateMajorVersion),qs in this&&(e.templateMinorVersion=this.templateMinorVersion),e}},u(Is,"Ri"),Is),Va="distributionPoint",my="distributionPointNames",Sa="reasons",ka="cRLIssuer",fy="cRLIssuerNames",T0=[Va,my,Sa,ka,fy],Cs,qf=(Cs=class extends F{constructor(e={}){super(),Va in e&&(this.distributionPoint=g(e,Va,Cs.defaultValues(Va))),Sa in e&&(this.reasons=g(e,Sa,Cs.defaultValues(Sa))),ka in e&&(this.cRLIssuer=g(e,ka,Cs.defaultValues(ka))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Va:return[];case Sa:return new ue;case ka:return[];default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Ce({value:[new v({name:t.distributionPoint||w,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new ae({name:t.distributionPointNames||w,value:pe.schema()})]}),new v({name:t.distributionPoint||w,optional:!0,idBlock:{tagClass:3,tagNumber:1},value:ye.schema().valueBlock.value})]})]}),new se({name:t.reasons||w,optional:!0,idBlock:{tagClass:3,tagNumber:1}}),new v({name:t.cRLIssuer||w,optional:!0,idBlock:{tagClass:3,tagNumber:2},value:[new ae({name:t.cRLIssuerNames||w,value:pe.schema()})]})]})}fromSchema(e){Y(e,T0);let t=H(e,e,Cs.schema({names:{distributionPoint:Va,distributionPointNames:my,reasons:Sa,cRLIssuer:ka,cRLIssuerNames:fy}}));R.assertSchema(t,this.className),Va in t.result&&(t.result.distributionPoint.idBlock.tagNumber===0&&(this.distributionPoint=Array.from(t.result.distributionPointNames,s=>new pe({schema:s}))),t.result.distributionPoint.idBlock.tagNumber===1&&(this.distributionPoint=new ye({schema:new M({value:t.result.distributionPoint.valueBlock.value})}))),Sa in t.result&&(this.reasons=new ue({valueHex:t.result.reasons.valueBlock.valueHex})),ka in t.result&&(this.cRLIssuer=Array.from(t.result.cRLIssuerNames,s=>new pe({schema:s})))}toSchema(){let e=[];if(this.distributionPoint){let t;t=this.distributionPoint instanceof Array?new v({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.distributionPoint,s=>s.toSchema())}):new v({idBlock:{tagClass:3,tagNumber:1},value:[this.distributionPoint.toSchema()]}),e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:[t]}))}return this.reasons&&e.push(new se({idBlock:{tagClass:3,tagNumber:1},valueHex:this.reasons.valueBlock.valueHexView})),this.cRLIssuer&&e.push(new v({idBlock:{tagClass:3,tagNumber:2},value:Array.from(this.cRLIssuer,t=>t.toSchema())})),new M({value:e})}toJSON(){let e={};return this.distributionPoint&&(this.distributionPoint instanceof Array?e.distributionPoint=Array.from(this.distributionPoint,t=>t.toJSON()):e.distributionPoint=this.distributionPoint.toJSON()),this.reasons&&(e.reasons=this.reasons.toJSON()),this.cRLIssuer&&(e.cRLIssuer=Array.from(this.cRLIssuer,t=>t.toJSON())),e}},u(Cs,"Li"),Cs);qf.CLASS_NAME="DistributionPoint";var wh="distributionPoints",U0=[wh],ta,Xf=(ta=class extends F{constructor(e={}){super(),this.distributionPoints=g(e,wh,ta.defaultValues(wh)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===wh?[]:super.defaultValues(e)}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new ae({name:t.distributionPoints||w,value:qf.schema()})]})}fromSchema(e){Y(e,U0);let t=H(e,e,ta.schema({names:{distributionPoints:wh}}));R.assertSchema(t,this.className),this.distributionPoints=Array.from(t.result.distributionPoints,s=>new qf({schema:s}))}toSchema(){return new M({value:Array.from(this.distributionPoints,e=>e.toSchema())})}toJSON(){return{distributionPoints:Array.from(this.distributionPoints,e=>e.toJSON())}}},u(ta,"Zi"),ta);Xf.CLASS_NAME="CRLDistributionPoints";var Bh="keyPurposes",R0=[Bh],sa,wy=(sa=class extends F{constructor(e={}){super(),this.keyPurposes=g(e,Bh,sa.defaultValues(Bh)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===Bh?[]:super.defaultValues(e)}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new ae({name:t.keyPurposes||w,value:new z})]})}fromSchema(e){Y(e,R0);let t=H(e,e,sa.schema({names:{keyPurposes:Bh}}));R.assertSchema(t,this.className),this.keyPurposes=Array.from(t.result.keyPurposes,s=>s.valueBlock.toString())}toSchema(){return new M({value:Array.from(this.keyPurposes,e=>new z({value:e}))})}toJSON(){return{keyPurposes:Array.from(this.keyPurposes)}}},u(sa,"Xi"),sa);wy.CLASS_NAME="ExtKeyUsage";var qu="accessDescriptions",na,$f=(na=class extends F{constructor(e={}){super(),this.accessDescriptions=g(e,qu,na.defaultValues(qu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===qu?[]:super.defaultValues(e)}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new ae({name:t.accessDescriptions||w,value:Of.schema()})]})}fromSchema(e){Y(e,[qu]);let t=H(e,e,na.schema({names:{accessDescriptions:qu}}));R.assertSchema(t,this.className),this.accessDescriptions=Array.from(t.result.accessDescriptions,s=>new Of({schema:s}))}toSchema(){return new M({value:Array.from(this.accessDescriptions,e=>e.toSchema())})}toJSON(){return{accessDescriptions:Array.from(this.accessDescriptions,e=>e.toJSON())}}},u(na,"_i"),na);$f.CLASS_NAME="InfoAccess";var xa="distributionPoint",By="distributionPointNames",lr="onlyContainsUserCerts",ur="onlyContainsCACerts",hr="onlySomeReasons",Ar="indirectCRL",gr="onlyContainsAttributeCerts",G0=[xa,By,lr,ur,hr,Ar,gr],xe,py=(xe=class extends F{constructor(e={}){super(),xa in e&&(this.distributionPoint=g(e,xa,xe.defaultValues(xa))),this.onlyContainsUserCerts=g(e,lr,xe.defaultValues(lr)),this.onlyContainsCACerts=g(e,ur,xe.defaultValues(ur)),hr in e&&(this.onlySomeReasons=g(e,hr,xe.defaultValues(hr))),this.indirectCRL=g(e,Ar,xe.defaultValues(Ar)),this.onlyContainsAttributeCerts=g(e,gr,xe.defaultValues(gr)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case xa:return[];case lr:case ur:return!1;case hr:return 0;case Ar:case gr:return!1;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Ce({value:[new v({name:t.distributionPoint||w,idBlock:{tagClass:3,tagNumber:0},value:[new ae({name:t.distributionPointNames||w,value:pe.schema()})]}),new v({name:t.distributionPoint||w,idBlock:{tagClass:3,tagNumber:1},value:ye.schema().valueBlock.value})]})]}),new se({name:t.onlyContainsUserCerts||w,optional:!0,idBlock:{tagClass:3,tagNumber:1}}),new se({name:t.onlyContainsCACerts||w,optional:!0,idBlock:{tagClass:3,tagNumber:2}}),new se({name:t.onlySomeReasons||w,optional:!0,idBlock:{tagClass:3,tagNumber:3}}),new se({name:t.indirectCRL||w,optional:!0,idBlock:{tagClass:3,tagNumber:4}}),new se({name:t.onlyContainsAttributeCerts||w,optional:!0,idBlock:{tagClass:3,tagNumber:5}})]})}fromSchema(e){Y(e,G0);let t=H(e,e,xe.schema({names:{distributionPoint:xa,distributionPointNames:By,onlyContainsUserCerts:lr,onlyContainsCACerts:ur,onlySomeReasons:hr,indirectCRL:Ar,onlyContainsAttributeCerts:gr}}));if(R.assertSchema(t,this.className),xa in t.result)switch(!0){case t.result.distributionPoint.idBlock.tagNumber===0:this.distributionPoint=Array.from(t.result.distributionPointNames,s=>new pe({schema:s}));break;case t.result.distributionPoint.idBlock.tagNumber===1:this.distributionPoint=new ye({schema:new M({value:t.result.distributionPoint.valueBlock.value})});break;default:throw new Error("Unknown tagNumber for distributionPoint: {$asn1.result.distributionPoint.idBlock.tagNumber}")}if(lr in t.result){let s=new Uint8Array(t.result.onlyContainsUserCerts.valueBlock.valueHex);this.onlyContainsUserCerts=s[0]!==0}if(ur in t.result){let s=new Uint8Array(t.result.onlyContainsCACerts.valueBlock.valueHex);this.onlyContainsCACerts=s[0]!==0}if(hr in t.result){let s=new Uint8Array(t.result.onlySomeReasons.valueBlock.valueHex);this.onlySomeReasons=s[0]}if(Ar in t.result){let s=new Uint8Array(t.result.indirectCRL.valueBlock.valueHex);this.indirectCRL=s[0]!==0}if(gr in t.result){let s=new Uint8Array(t.result.onlyContainsAttributeCerts.valueBlock.valueHex);this.onlyContainsAttributeCerts=s[0]!==0}}toSchema(){let e=[];if(this.distributionPoint){let t;this.distributionPoint instanceof Array?t=new v({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.distributionPoint,s=>s.toSchema())}):(t=this.distributionPoint.toSchema(),t.idBlock.tagClass=3,t.idBlock.tagNumber=1),e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:[t]}))}if(this.onlyContainsUserCerts!==xe.defaultValues(lr)&&e.push(new se({idBlock:{tagClass:3,tagNumber:1},valueHex:new Uint8Array([255]).buffer})),this.onlyContainsCACerts!==xe.defaultValues(ur)&&e.push(new se({idBlock:{tagClass:3,tagNumber:2},valueHex:new Uint8Array([255]).buffer})),this.onlySomeReasons!==void 0){let t=new ArrayBuffer(1);new Uint8Array(t)[0]=this.onlySomeReasons,e.push(new se({idBlock:{tagClass:3,tagNumber:3},valueHex:t}))}return this.indirectCRL!==xe.defaultValues(Ar)&&e.push(new se({idBlock:{tagClass:3,tagNumber:4},valueHex:new Uint8Array([255]).buffer})),this.onlyContainsAttributeCerts!==xe.defaultValues(gr)&&e.push(new se({idBlock:{tagClass:3,tagNumber:5},valueHex:new Uint8Array([255]).buffer})),new M({value:e})}toJSON(){let e={};return this.distributionPoint&&(this.distributionPoint instanceof Array?e.distributionPoint=Array.from(this.distributionPoint,t=>t.toJSON()):e.distributionPoint=this.distributionPoint.toJSON()),this.onlyContainsUserCerts!==xe.defaultValues(lr)&&(e.onlyContainsUserCerts=this.onlyContainsUserCerts),this.onlyContainsCACerts!==xe.defaultValues(ur)&&(e.onlyContainsCACerts=this.onlyContainsCACerts),hr in this&&(e.onlySomeReasons=this.onlySomeReasons),this.indirectCRL!==xe.defaultValues(Ar)&&(e.indirectCRL=this.indirectCRL),this.onlyContainsAttributeCerts!==xe.defaultValues(gr)&&(e.onlyContainsAttributeCerts=this.onlyContainsAttributeCerts),e}},u(xe,"oo"),xe);py.CLASS_NAME="IssuingDistributionPoint";var ph="base",po="minimum",dr="maximum",F0=[ph,po,dr],Ms,Eh=(Ms=class extends F{constructor(e={}){super(),this.base=g(e,ph,Ms.defaultValues(ph)),this.minimum=g(e,po,Ms.defaultValues(po)),dr in e&&(this.maximum=g(e,dr,Ms.defaultValues(dr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ph:return new pe;case po:case dr:return 0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[pe.schema(t.base||{}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new x({name:t.minimum||w})]}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new x({name:t.maximum||w})]})]})}fromSchema(e){Y(e,F0);let t=H(e,e,Ms.schema({names:{base:{names:{blockName:ph}},minimum:po,maximum:dr}}));R.assertSchema(t,this.className),this.base=new pe({schema:t.result.base}),po in t.result&&(t.result.minimum.valueBlock.isHexOnly?this.minimum=t.result.minimum:this.minimum=t.result.minimum.valueBlock.valueDec),dr in t.result&&(t.result.maximum.valueBlock.isHexOnly?this.maximum=t.result.maximum:this.maximum=t.result.maximum.valueBlock.valueDec)}toSchema(){let e=[];if(e.push(this.base.toSchema()),this.minimum!==0){let t=0;t=this.minimum instanceof x?this.minimum:new x({value:this.minimum}),e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[t]}))}if(dr in this){let t=0;t=this.maximum instanceof x?this.maximum:new x({value:this.maximum}),e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[t]}))}return new M({value:e})}toJSON(){let e={base:this.base.toJSON()};return this.minimum!==0&&(typeof this.minimum=="number"?e.minimum=this.minimum:e.minimum=this.minimum.toJSON()),this.maximum!==void 0&&(typeof this.maximum=="number"?e.maximum=this.maximum:e.maximum=this.maximum.toJSON()),e}},u(Ms,"Ao"),Ms);Eh.CLASS_NAME="GeneralSubtree";var Ta="permittedSubtrees",Ua="excludedSubtrees",H0=[Ta,Ua],yn,Ey=(yn=class extends F{constructor(e={}){super(),Ta in e&&(this.permittedSubtrees=g(e,Ta,yn.defaultValues(Ta))),Ua in e&&(this.excludedSubtrees=g(e,Ua,yn.defaultValues(Ua))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ta:case Ua:return[];default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new ae({name:t.permittedSubtrees||w,value:Eh.schema()})]}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new ae({name:t.excludedSubtrees||w,value:Eh.schema()})]})]})}fromSchema(e){Y(e,H0);let t=H(e,e,yn.schema({names:{permittedSubtrees:Ta,excludedSubtrees:Ua}}));R.assertSchema(t,this.className),Ta in t.result&&(this.permittedSubtrees=Array.from(t.result.permittedSubtrees,s=>new Eh({schema:s}))),Ua in t.result&&(this.excludedSubtrees=Array.from(t.result.excludedSubtrees,s=>new Eh({schema:s})))}toSchema(){let e=[];return this.permittedSubtrees&&e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.permittedSubtrees,t=>t.toSchema())})),this.excludedSubtrees&&e.push(new v({idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.excludedSubtrees,t=>t.toSchema())})),new M({value:e})}toJSON(){let e={};return this.permittedSubtrees&&(e.permittedSubtrees=Array.from(this.permittedSubtrees,t=>t.toJSON())),this.excludedSubtrees&&(e.excludedSubtrees=Array.from(this.excludedSubtrees,t=>t.toJSON())),e}},u(yn,"Bo"),yn);Ey.CLASS_NAME="NameConstraints";var Xs="requireExplicitPolicy",$s="inhibitPolicyMapping",Y0=[Xs,$s],In,yy=(In=class extends F{constructor(e={}){super(),Xs in e&&(this.requireExplicitPolicy=g(e,Xs,In.defaultValues(Xs))),$s in e&&(this.inhibitPolicyMapping=g(e,$s,In.defaultValues($s))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Xs:case $s:return 0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new se({name:t.requireExplicitPolicy||w,optional:!0,idBlock:{tagClass:3,tagNumber:0}}),new se({name:t.inhibitPolicyMapping||w,optional:!0,idBlock:{tagClass:3,tagNumber:1}})]})}fromSchema(e){Y(e,Y0);let t=H(e,e,In.schema({names:{requireExplicitPolicy:Xs,inhibitPolicyMapping:$s}}));if(R.assertSchema(t,this.className),Xs in t.result){let s=t.result.requireExplicitPolicy;s.idBlock.tagClass=1,s.idBlock.tagNumber=2;let n=Qe(s.toBER(!1));R.assert(n,"Integer"),this.requireExplicitPolicy=n.result.valueBlock.valueDec}if($s in t.result){let s=t.result.inhibitPolicyMapping;s.idBlock.tagClass=1,s.idBlock.tagNumber=2;let n=Qe(s.toBER(!1));R.assert(n,"Integer"),this.inhibitPolicyMapping=n.result.valueBlock.valueDec}}toSchema(){let e=[];if(Xs in this){let t=new x({value:this.requireExplicitPolicy});t.idBlock.tagClass=3,t.idBlock.tagNumber=0,e.push(t)}if($s in this){let t=new x({value:this.inhibitPolicyMapping});t.idBlock.tagClass=3,t.idBlock.tagNumber=1,e.push(t)}return new M({value:e})}toJSON(){let e={};return Xs in this&&(e.requireExplicitPolicy=this.requireExplicitPolicy),$s in this&&(e.inhibitPolicyMapping=this.inhibitPolicyMapping),e}},u(In,"Io"),In);yy.CLASS_NAME="PolicyConstraints";var yh="issuerDomainPolicy",Ih="subjectDomainPolicy",j0=[yh,Ih],Cn,_f=(Cn=class extends F{constructor(e={}){super(),this.issuerDomainPolicy=g(e,yh,Cn.defaultValues(yh)),this.subjectDomainPolicy=g(e,Ih,Cn.defaultValues(Ih)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case yh:case Ih:return w;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.issuerDomainPolicy||w}),new z({name:t.subjectDomainPolicy||w})]})}fromSchema(e){Y(e,j0);let t=H(e,e,Cn.schema({names:{issuerDomainPolicy:yh,subjectDomainPolicy:Ih}}));R.assertSchema(t,this.className),this.issuerDomainPolicy=t.result.issuerDomainPolicy.valueBlock.toString(),this.subjectDomainPolicy=t.result.subjectDomainPolicy.valueBlock.toString()}toSchema(){return new M({value:[new z({value:this.issuerDomainPolicy}),new z({value:this.subjectDomainPolicy})]})}toJSON(){return{issuerDomainPolicy:this.issuerDomainPolicy,subjectDomainPolicy:this.subjectDomainPolicy}}},u(Cn,"Do"),Cn);_f.CLASS_NAME="PolicyMapping";var Ch="mappings",J0=[Ch],ra,Iy=(ra=class extends F{constructor(e={}){super(),this.mappings=g(e,Ch,ra.defaultValues(Ch)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===Ch?[]:super.defaultValues(e)}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new ae({name:t.mappings||w,value:_f.schema()})]})}fromSchema(e){Y(e,J0);let t=H(e,e,ra.schema({names:{mappings:Ch}}));R.assertSchema(t,this.className),this.mappings=Array.from(t.result.mappings,s=>new _f({schema:s}))}toSchema(){return new M({value:Array.from(this.mappings,e=>e.toSchema())})}toJSON(){return{mappings:Array.from(this.mappings,e=>e.toJSON())}}},u(ra,"Qo"),ra);Iy.CLASS_NAME="PolicyMappings";var mr="notBefore",fr="notAfter",L0=[mr,fr],Mn,Cy=(Mn=class extends F{constructor(e={}){super(),mr in e&&(this.notBefore=g(e,mr,Mn.defaultValues(mr))),fr in e&&(this.notAfter=g(e,fr,Mn.defaultValues(fr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case mr:case fr:return new Date;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new se({name:t.notBefore||w,optional:!0,idBlock:{tagClass:3,tagNumber:0}}),new se({name:t.notAfter||w,optional:!0,idBlock:{tagClass:3,tagNumber:1}})]})}fromSchema(e){Y(e,L0);let t=H(e,e,Mn.schema({names:{notBefore:mr,notAfter:fr}}));if(R.assertSchema(t,this.className),mr in t.result){let s=new Ie;s.fromBuffer(t.result.notBefore.valueBlock.valueHex),this.notBefore=s.toDate()}if(fr in t.result){let s=new Ie({valueHex:t.result.notAfter.valueBlock.valueHex});s.fromBuffer(t.result.notAfter.valueBlock.valueHex),this.notAfter=s.toDate()}}toSchema(){let e=[];return mr in this&&e.push(new se({idBlock:{tagClass:3,tagNumber:0},valueHex:new Ie({valueDate:this.notBefore}).valueBlock.valueHexView})),fr in this&&e.push(new se({idBlock:{tagClass:3,tagNumber:1},valueHex:new Ie({valueDate:this.notAfter}).valueBlock.valueHexView})),new M({value:e})}toJSON(){let e={};return this.notBefore&&(e.notBefore=this.notBefore),this.notAfter&&(e.notAfter=this.notAfter),e}},u(Mn,"ko"),Mn);Cy.CLASS_NAME="PrivateKeyUsagePeriod";var Eo="id",_s="type",yo="values",O0=[Eo,_s],W0=[yo],bn,ew=(bn=class extends F{constructor(e={}){super(),this.id=g(e,Eo,bn.defaultValues(Eo)),_s in e&&(this.type=g(e,_s,bn.defaultValues(_s))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Eo:return w;case _s:return new Ve;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Eo:return t===w;case _s:return t instanceof Ve;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.id||w}),new re({name:t.type||w,optional:!0})]})}fromSchema(e){Y(e,O0);let t=H(e,e,bn.schema({names:{id:Eo,type:_s}}));R.assertSchema(t,this.className),this.id=t.result.id.valueBlock.toString(),_s in t.result&&(this.type=t.result.type)}toSchema(){let e=[new z({value:this.id})];return _s in this&&e.push(this.type),new M({value:e})}toJSON(){let e={id:this.id};return this.type&&(e.type=this.type.toJSON()),e}},u(bn,"Fo"),bn);ew.CLASS_NAME="QCStatement";var aa,My=(aa=class extends F{constructor(e={}){super(),this.values=g(e,yo,aa.defaultValues(yo)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===yo?[]:super.defaultValues(e)}static compareWithDefault(e,t){return e===yo?t.length===0:super.defaultValues(e)}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new ae({name:t.values||w,value:ew.schema(t.value||{})})]})}fromSchema(e){Y(e,W0);let t=H(e,e,aa.schema({names:{values:yo}}));R.assertSchema(t,this.className),this.values=Array.from(t.result.values,s=>new ew({schema:s}))}toSchema(){return new M({value:Array.from(this.values,e=>e.toSchema())})}toJSON(){return{values:Array.from(this.values,e=>e.toJSON())}}},u(aa,"Ho"),aa),Ca;My.CLASS_NAME="QCStatements";var du,Zr=(du=class{static register(e,t,s){this.namedCurves[e.toLowerCase()]=this.namedCurves[t]={name:e,id:t,size:s}}static find(e){return this.namedCurves[e.toLowerCase()]||null}},u(du,"Jo"),du);Ca=Zr,Zr.namedCurves={},Ca.register("P-256","1.2.840.10045.3.1.7",32),Ca.register("P-384","1.3.132.0.34",48),Ca.register("P-521","1.3.132.0.35",66),Ca.register("brainpoolP256r1","1.3.36.3.3.2.8.1.1.7",32),Ca.register("brainpoolP384r1","1.3.36.3.3.2.8.1.1.11",48),Ca.register("brainpoolP512r1","1.3.36.3.3.2.8.1.1.13",64);var Yg="x",jg="y",Jg="namedCurve",es,hn=(es=class extends F{constructor(e={}){super(),this.x=g(e,Yg,es.defaultValues(Yg)),this.y=g(e,jg,es.defaultValues(jg)),this.namedCurve=g(e,Jg,es.defaultValues(Jg)),e.json&&this.fromJSON(e.json),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Yg:case jg:return Re;case Jg:return w;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Yg:case jg:return t instanceof ArrayBuffer&&Vu(t,es.defaultValues(e));case Jg:return typeof t=="string"&&t===es.defaultValues(e);default:return super.defaultValues(e)}}static schema(){return new _d}fromSchema(e){let t=ne.toUint8Array(e);if(t[0]!==4)throw new Error("Object's schema was not verified against input data for ECPublicKey");let s=Zr.find(this.namedCurve);if(!s)throw new Error(`Incorrect curve OID: ${this.namedCurve}`);let n=s.size;if(t.byteLength!==2*n+1)throw new Error("Object's schema was not verified against input data for ECPublicKey");this.namedCurve=s.name,this.x=t.slice(1,n+1).buffer,this.y=t.slice(1+n,2*n+1).buffer}toSchema(){return new _d({data:Yc(new Uint8Array([4]).buffer,this.x,this.y)})}toJSON(){let e=Zr.find(this.namedCurve);return{crv:e?e.name:this.namedCurve,x:Sf(Kd(this.x),!0,!0,!1),y:Sf(Kd(this.y),!0,!0,!1)}}fromJSON(e){de.assert("json",e,"crv","x","y");let t=0,s=Zr.find(e.crv);s&&(this.namedCurve=s.id,t=s.size);let n=Su(hg(e.x,!0));if(n.byteLength<t){this.x=new ArrayBuffer(t);let a=new Uint8Array(this.x),o=new Uint8Array(n);a.set(o,1)}else this.x=n.slice(0,t);let r=Su(hg(e.y,!0));if(r.byteLength<t){this.y=new ArrayBuffer(t);let a=new Uint8Array(this.y),o=new Uint8Array(r);a.set(o,1)}else this.y=r.slice(0,t)}},u(es,"zo"),es);hn.CLASS_NAME="ECPublicKey";var Mh="modulus",bh="publicExponent",P0=[Mh,bh],Nn,tw=(Nn=class extends F{constructor(e={}){super(),this.modulus=g(e,Mh,Nn.defaultValues(Mh)),this.publicExponent=g(e,bh,Nn.defaultValues(bh)),e.json&&this.fromJSON(e.json),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Mh:case bh:return new x;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.modulus||w}),new x({name:t.publicExponent||w})]})}fromSchema(e){Y(e,P0);let t=H(e,e,Nn.schema({names:{modulus:Mh,publicExponent:bh}}));R.assertSchema(t,this.className),this.modulus=t.result.modulus.convertFromDER(256),this.publicExponent=t.result.publicExponent}toSchema(){return new M({value:[this.modulus.convertToDER(),this.publicExponent]})}toJSON(){return{n:ie.ToBase64Url(this.modulus.valueBlock.valueHexView),e:ie.ToBase64Url(this.publicExponent.valueBlock.valueHexView)}}fromJSON(e){de.assert("json",e,"n","e");let t=Su(hg(e.n,!0));this.modulus=new x({valueHex:t.slice(0,Math.pow(2,pI(t.byteLength)))}),this.publicExponent=new x({valueHex:Su(hg(e.e,!0)).slice(0,3)})}},u(Nn,"Po"),Nn);tw.CLASS_NAME="RSAPublicKey";var Nh="algorithm",vh="subjectPublicKey",z0=[Nh,vh],vn,us=(vn=class extends F{get parsedKey(){if(this._parsedKey===void 0){switch(this.algorithm.algorithmId){case"1.2.840.10045.2.1":if("algorithmParams"in this.algorithm&&this.algorithm.algorithmParams.constructor.blockName()===z.blockName())try{this._parsedKey=new hn({namedCurve:this.algorithm.algorithmParams.valueBlock.toString(),schema:this.subjectPublicKey.valueBlock.valueHexView})}catch{}break;case"1.2.840.113549.1.1.1":{let e=Qe(this.subjectPublicKey.valueBlock.valueHexView);if(e.offset!==-1)try{this._parsedKey=new tw({schema:e.result})}catch{}}}this._parsedKey||(this._parsedKey=null)}return this._parsedKey||void 0}set parsedKey(e){this._parsedKey=e}constructor(e={}){super(),this.algorithm=g(e,Nh,vn.defaultValues(Nh)),this.subjectPublicKey=g(e,vh,vn.defaultValues(vh));let t=g(e,"parsedKey",null);t&&(this.parsedKey=t),e.json&&this.fromJSON(e.json),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Nh:return new k;case vh:return new ue;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[k.schema(t.algorithm||{}),new ue({name:t.subjectPublicKey||w})]})}fromSchema(e){Y(e,z0);let t=H(e,e,vn.schema({names:{algorithm:{names:{blockName:Nh}},subjectPublicKey:vh}}));R.assertSchema(t,this.className),this.algorithm=new k({schema:t.result.algorithm}),this.subjectPublicKey=t.result.subjectPublicKey}toSchema(){return new M({value:[this.algorithm.toSchema(),this.subjectPublicKey]})}toJSON(){if(!this.parsedKey)return{algorithm:this.algorithm.toJSON(),subjectPublicKey:this.subjectPublicKey.toJSON()};let e={};switch(this.algorithm.algorithmId){case"1.2.840.10045.2.1":e.kty="EC";break;case"1.2.840.113549.1.1.1":e.kty="RSA"}let t=this.parsedKey.toJSON();return Object.assign(e,t),e}fromJSON(e){if("kty"in e){switch(e.kty.toUpperCase()){case"EC":this.parsedKey=new hn({json:e}),this.algorithm=new k({algorithmId:"1.2.840.10045.2.1",algorithmParams:new z({value:this.parsedKey.namedCurve})});break;case"RSA":this.parsedKey=new tw({json:e}),this.algorithm=new k({algorithmId:"1.2.840.113549.1.1.1",algorithmParams:new Ve});break;default:throw new Error(`Invalid value for "kty" parameter: ${e.kty}`)}this.subjectPublicKey=new ue({valueHex:this.parsedKey.toSchema().toBER(!1)})}}async importKey(e,t=ce(!0)){try{if(!e)throw new Error("Need to provide publicKey input parameter");let s=Qe(await t.exportKey("spki",e));try{this.fromSchema(s.result)}catch{throw new Error("Error during initializing object from schema")}}catch(s){let n=s instanceof Error?s.message:`${s}`;throw new Error(`Error during exporting public key: ${n}`)}}},u(vn,"$o"),vn);us.CLASS_NAME="PublicKeyInfo";var Io="version",Co="privateKey",Zt="namedCurve",wr="publicKey",Z0=[Io,Co,Zt,wr],mt,sw=(mt=class extends F{constructor(e={}){super(),this.version=g(e,Io,mt.defaultValues(Io)),this.privateKey=g(e,Co,mt.defaultValues(Co)),Zt in e&&(this.namedCurve=g(e,Zt,mt.defaultValues(Zt))),wr in e&&(this.publicKey=g(e,wr,mt.defaultValues(wr))),e.json&&this.fromJSON(e.json),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Io:return 1;case Co:return new J;case Zt:return w;case wr:return new hn;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Io:return t===mt.defaultValues(e);case Co:return t.isEqual(mt.defaultValues(e));case Zt:return t===w;case wr:return hn.compareWithDefault(Zt,t.namedCurve)&&hn.compareWithDefault("x",t.x)&&hn.compareWithDefault("y",t.y);default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.version||w}),new J({name:t.privateKey||w}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new z({name:t.namedCurve||w})]}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new ue({name:t.publicKey||w})]})]})}fromSchema(e){Y(e,Z0);let t=H(e,e,mt.schema({names:{version:Io,privateKey:Co,namedCurve:Zt,publicKey:wr}}));if(R.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.privateKey=t.result.privateKey,Zt in t.result&&(this.namedCurve=t.result.namedCurve.valueBlock.toString()),wr in t.result){let s={schema:t.result.publicKey.valueBlock.valueHex};Zt in this&&(s.namedCurve=this.namedCurve),this.publicKey=new hn(s)}}toSchema(){let e=[new x({value:this.version}),this.privateKey];return this.namedCurve&&e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:[new z({value:this.namedCurve})]})),this.publicKey&&e.push(new v({idBlock:{tagClass:3,tagNumber:1},value:[new ue({valueHex:this.publicKey.toSchema().toBER(!1)})]})),new M({value:e})}toJSON(){if(!this.namedCurve||mt.compareWithDefault(Zt,this.namedCurve))throw new Error('Not enough information for making JSON: absent "namedCurve" value');let e=Zr.find(this.namedCurve),t={crv:e?e.name:this.namedCurve,d:ie.ToBase64Url(this.privateKey.valueBlock.valueHexView)};if(this.publicKey){let s=this.publicKey.toJSON();t.x=s.x,t.y=s.y}return t}fromJSON(e){de.assert("json",e,"crv","d");let t=0,s=Zr.find(e.crv);s&&(this.namedCurve=s.id,t=s.size);let n=ie.FromBase64Url(e.d);if(n.byteLength<t){let r=new ArrayBuffer(t),a=new Uint8Array(r),o=new Uint8Array(n);a.set(o,1),this.privateKey=new J({valueHex:r})}else this.privateKey=new J({valueHex:n.slice(0,t)});e.x&&e.y&&(this.publicKey=new hn({json:e}))}},u(mt,"al"),mt);sw.CLASS_NAME="ECPrivateKey";var Dh="prime",Qh="exponent",Vh="coefficient",K0=[Dh,Qh,Vh],bs,hd=(bs=class extends F{constructor(e={}){super(),this.prime=g(e,Dh,bs.defaultValues(Dh)),this.exponent=g(e,Qh,bs.defaultValues(Qh)),this.coefficient=g(e,Vh,bs.defaultValues(Vh)),e.json&&this.fromJSON(e.json),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Dh:case Qh:case Vh:return new x;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.prime||w}),new x({name:t.exponent||w}),new x({name:t.coefficient||w})]})}fromSchema(e){Y(e,K0);let t=H(e,e,bs.schema({names:{prime:Dh,exponent:Qh,coefficient:Vh}}));R.assertSchema(t,this.className),this.prime=t.result.prime.convertFromDER(),this.exponent=t.result.exponent.convertFromDER(),this.coefficient=t.result.coefficient.convertFromDER()}toSchema(){return new M({value:[this.prime.convertToDER(),this.exponent.convertToDER(),this.coefficient.convertToDER()]})}toJSON(){return{r:ie.ToBase64Url(this.prime.valueBlock.valueHexView),d:ie.ToBase64Url(this.exponent.valueBlock.valueHexView),t:ie.ToBase64Url(this.coefficient.valueBlock.valueHexView)}}fromJSON(e){de.assert("json",e,"r","d","r"),this.prime=new x({valueHex:ie.FromBase64Url(e.r)}),this.exponent=new x({valueHex:ie.FromBase64Url(e.d)}),this.coefficient=new x({valueHex:ie.FromBase64Url(e.t)})}},u(bs,"hl"),bs);hd.CLASS_NAME="OtherPrimeInfo";var Sh="version",kh="modulus",xh="publicExponent",Th="privateExponent",Uh="prime1",Rh="prime2",Gh="exponent1",Fh="exponent2",Hh="coefficient",Ra="otherPrimeInfos",q0=[Sh,kh,xh,Th,Uh,Rh,Gh,Fh,Hh,Ra],Pe,nw=(Pe=class extends F{constructor(e={}){super(),this.version=g(e,Sh,Pe.defaultValues(Sh)),this.modulus=g(e,kh,Pe.defaultValues(kh)),this.publicExponent=g(e,xh,Pe.defaultValues(xh)),this.privateExponent=g(e,Th,Pe.defaultValues(Th)),this.prime1=g(e,Uh,Pe.defaultValues(Uh)),this.prime2=g(e,Rh,Pe.defaultValues(Rh)),this.exponent1=g(e,Gh,Pe.defaultValues(Gh)),this.exponent2=g(e,Fh,Pe.defaultValues(Fh)),this.coefficient=g(e,Hh,Pe.defaultValues(Hh)),Ra in e&&(this.otherPrimeInfos=g(e,Ra,Pe.defaultValues(Ra))),e.json&&this.fromJSON(e.json),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Sh:return 0;case kh:case xh:case Th:case Uh:case Rh:case Gh:case Fh:case Hh:return new x;case Ra:return[];default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.version||w}),new x({name:t.modulus||w}),new x({name:t.publicExponent||w}),new x({name:t.privateExponent||w}),new x({name:t.prime1||w}),new x({name:t.prime2||w}),new x({name:t.exponent1||w}),new x({name:t.exponent2||w}),new x({name:t.coefficient||w}),new M({optional:!0,value:[new ae({name:t.otherPrimeInfosName||w,value:hd.schema(t.otherPrimeInfo||{})})]})]})}fromSchema(e){Y(e,q0);let t=H(e,e,Pe.schema({names:{version:Sh,modulus:kh,publicExponent:xh,privateExponent:Th,prime1:Uh,prime2:Rh,exponent1:Gh,exponent2:Fh,coefficient:Hh,otherPrimeInfo:{names:{blockName:Ra}}}}));R.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.modulus=t.result.modulus.convertFromDER(256),this.publicExponent=t.result.publicExponent,this.privateExponent=t.result.privateExponent.convertFromDER(256),this.prime1=t.result.prime1.convertFromDER(128),this.prime2=t.result.prime2.convertFromDER(128),this.exponent1=t.result.exponent1.convertFromDER(128),this.exponent2=t.result.exponent2.convertFromDER(128),this.coefficient=t.result.coefficient.convertFromDER(128),Ra in t.result&&(this.otherPrimeInfos=Array.from(t.result.otherPrimeInfos,s=>new hd({schema:s})))}toSchema(){let e=[];return e.push(new x({value:this.version})),e.push(this.modulus.convertToDER()),e.push(this.publicExponent),e.push(this.privateExponent.convertToDER()),e.push(this.prime1.convertToDER()),e.push(this.prime2.convertToDER()),e.push(this.exponent1.convertToDER()),e.push(this.exponent2.convertToDER()),e.push(this.coefficient.convertToDER()),this.otherPrimeInfos&&e.push(new M({value:Array.from(this.otherPrimeInfos,t=>t.toSchema())})),new M({value:e})}toJSON(){let e={n:ie.ToBase64Url(this.modulus.valueBlock.valueHexView),e:ie.ToBase64Url(this.publicExponent.valueBlock.valueHexView),d:ie.ToBase64Url(this.privateExponent.valueBlock.valueHexView),p:ie.ToBase64Url(this.prime1.valueBlock.valueHexView),q:ie.ToBase64Url(this.prime2.valueBlock.valueHexView),dp:ie.ToBase64Url(this.exponent1.valueBlock.valueHexView),dq:ie.ToBase64Url(this.exponent2.valueBlock.valueHexView),qi:ie.ToBase64Url(this.coefficient.valueBlock.valueHexView)};return this.otherPrimeInfos&&(e.oth=Array.from(this.otherPrimeInfos,t=>t.toJSON())),e}fromJSON(e){de.assert("json",e,"n","e","d","p","q","dp","dq","qi"),this.modulus=new x({valueHex:ie.FromBase64Url(e.n)}),this.publicExponent=new x({valueHex:ie.FromBase64Url(e.e)}),this.privateExponent=new x({valueHex:ie.FromBase64Url(e.d)}),this.prime1=new x({valueHex:ie.FromBase64Url(e.p)}),this.prime2=new x({valueHex:ie.FromBase64Url(e.q)}),this.exponent1=new x({valueHex:ie.FromBase64Url(e.dp)}),this.exponent2=new x({valueHex:ie.FromBase64Url(e.dq)}),this.coefficient=new x({valueHex:ie.FromBase64Url(e.qi)}),e.oth&&(this.otherPrimeInfos=Array.from(e.oth,t=>new hd({json:t})))}},u(Pe,"yl"),Pe);nw.CLASS_NAME="RSAPrivateKey";var Yh="version",jh="privateKeyAlgorithm",Jh="privateKey",Ga="attributes",Lg="parsedKey",X0=[Yh,jh,Jh,Ga],Ft,Bg=(Ft=class extends F{constructor(e={}){super(),this.version=g(e,Yh,Ft.defaultValues(Yh)),this.privateKeyAlgorithm=g(e,jh,Ft.defaultValues(jh)),this.privateKey=g(e,Jh,Ft.defaultValues(Jh)),Ga in e&&(this.attributes=g(e,Ga,Ft.defaultValues(Ga))),Lg in e&&(this.parsedKey=g(e,Lg,Ft.defaultValues(Lg))),e.json&&this.fromJSON(e.json),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Yh:return 0;case jh:return new k;case Jh:return new J;case Ga:return[];case Lg:return{};default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.version||w}),k.schema(t.privateKeyAlgorithm||{}),new J({name:t.privateKey||w}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new ae({name:t.attributes||w,value:ke.schema()})]})]})}fromSchema(e){Y(e,X0);let t=H(e,e,Ft.schema({names:{version:Yh,privateKeyAlgorithm:{names:{blockName:jh}},privateKey:Jh,attributes:Ga}}));switch(R.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.privateKeyAlgorithm=new k({schema:t.result.privateKeyAlgorithm}),this.privateKey=t.result.privateKey,Ga in t.result&&(this.attributes=Array.from(t.result.attributes,s=>new ke({schema:s}))),this.privateKeyAlgorithm.algorithmId){case"1.2.840.113549.1.1.1":{let s=Qe(this.privateKey.valueBlock.valueHexView);s.offset!==-1&&(this.parsedKey=new nw({schema:s.result}))}break;case"1.2.840.10045.2.1":if("algorithmParams"in this.privateKeyAlgorithm&&this.privateKeyAlgorithm.algorithmParams instanceof z){let s=Qe(this.privateKey.valueBlock.valueHexView);s.offset!==-1&&(this.parsedKey=new sw({namedCurve:this.privateKeyAlgorithm.algorithmParams.valueBlock.toString(),schema:s.result}))}}}toSchema(){let e=[new x({value:this.version}),this.privateKeyAlgorithm.toSchema(),this.privateKey];return this.attributes&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.attributes,t=>t.toSchema())})),new M({value:e})}toJSON(){if(!this.parsedKey){let s={version:this.version,privateKeyAlgorithm:this.privateKeyAlgorithm.toJSON(),privateKey:this.privateKey.toJSON()};return this.attributes&&(s.attributes=Array.from(this.attributes,n=>n.toJSON())),s}let e={};switch(this.privateKeyAlgorithm.algorithmId){case"1.2.840.10045.2.1":e.kty="EC";break;case"1.2.840.113549.1.1.1":e.kty="RSA"}let t=this.parsedKey.toJSON();return Object.assign(e,t),e}fromJSON(e){if("kty"in e){switch(e.kty.toUpperCase()){case"EC":this.parsedKey=new sw({json:e}),this.privateKeyAlgorithm=new k({algorithmId:"1.2.840.10045.2.1",algorithmParams:new z({value:this.parsedKey.namedCurve})});break;case"RSA":this.parsedKey=new nw({json:e}),this.privateKeyAlgorithm=new k({algorithmId:"1.2.840.113549.1.1.1",algorithmParams:new Ve});break;default:throw new Error(`Invalid value for "kty" parameter: ${e.kty}`)}this.privateKey=new J({valueHex:this.parsedKey.toSchema().toBER(!1)})}}},u(Ft,"vl"),Ft);Bg.CLASS_NAME="PrivateKeyInfo";var Mo="contentType",bo="contentEncryptionAlgorithm",Fa="encryptedContent",$0=[Mo,bo,Fa],Ns,st=(Ns=class extends F{constructor(e={}){if(super(),this.contentType=g(e,Mo,Ns.defaultValues(Mo)),this.contentEncryptionAlgorithm=g(e,bo,Ns.defaultValues(bo)),Fa in e&&e.encryptedContent&&(this.encryptedContent=e.encryptedContent,this.encryptedContent.idBlock.tagClass===1&&this.encryptedContent.idBlock.tagNumber===4&&this.encryptedContent.idBlock.isConstructed===!1&&!e.disableSplit)){let t=new J({idBlock:{isConstructed:!0},isConstructed:!0}),s=0,n=this.encryptedContent.valueBlock.valueHexView.slice().buffer,r=n.byteLength;for(;r>0;){let a=new Uint8Array(n,s,s+1024>n.byteLength?n.byteLength-s:1024),o=new ArrayBuffer(a.length),c=new Uint8Array(o);for(let l=0;l<c.length;l++)c[l]=a[l];t.valueBlock.value.push(new J({valueHex:o})),r-=a.length,s+=a.length}this.encryptedContent=t}e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Mo:return w;case bo:return new k;case Fa:return new J;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Mo:return t===w;case bo:return t.algorithmId===w&&!("algorithmParams"in t);case Fa:return t.isEqual(Ns.defaultValues(Fa));default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.contentType||w}),k.schema(t.contentEncryptionAlgorithm||{}),new Ce({value:[new v({name:t.encryptedContent||w,idBlock:{tagClass:3,tagNumber:0},value:[new ae({value:new J})]}),new se({name:t.encryptedContent||w,idBlock:{tagClass:3,tagNumber:0}})]})]})}fromSchema(e){Y(e,$0);let t=H(e,e,Ns.schema({names:{contentType:Mo,contentEncryptionAlgorithm:{names:{blockName:bo}},encryptedContent:Fa}}));R.assertSchema(t,this.className),this.contentType=t.result.contentType.valueBlock.toString(),this.contentEncryptionAlgorithm=new k({schema:t.result.contentEncryptionAlgorithm}),Fa in t.result&&(this.encryptedContent=t.result.encryptedContent,this.encryptedContent.idBlock.tagClass=1,this.encryptedContent.idBlock.tagNumber=4)}toSchema(){let e={isIndefiniteForm:!1},t=[];if(t.push(new z({value:this.contentType})),t.push(this.contentEncryptionAlgorithm.toSchema()),this.encryptedContent){e.isIndefiniteForm=this.encryptedContent.idBlock.isConstructed;let s=this.encryptedContent;s.idBlock.tagClass=3,s.idBlock.tagNumber=0,s.lenBlock.isIndefiniteForm=this.encryptedContent.idBlock.isConstructed,t.push(s)}return new M({lenBlock:e,value:t})}toJSON(){let e={contentType:this.contentType,contentEncryptionAlgorithm:this.contentEncryptionAlgorithm.toJSON()};return this.encryptedContent&&(e.encryptedContent=this.encryptedContent.toJSON()),e}getEncryptedContent(){if(!this.encryptedContent)throw new Error("Parameter 'encryptedContent' is undefined");return J.prototype.getValue.call(this.encryptedContent)}},u(Ns,"Ul"),Ns);st.CLASS_NAME="EncryptedContentInfo";var Br="hashAlgorithm",pr="maskGenAlgorithm",Er="saltLength",yr="trailerField",_0=[Br,pr,Er,yr],Ge,Ad=(Ge=class extends F{constructor(e={}){super(),this.hashAlgorithm=g(e,Br,Ge.defaultValues(Br)),this.maskGenAlgorithm=g(e,pr,Ge.defaultValues(pr)),this.saltLength=g(e,Er,Ge.defaultValues(Er)),this.trailerField=g(e,yr,Ge.defaultValues(yr)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Br:return new k({algorithmId:"1.3.14.3.2.26",algorithmParams:new Ve});case pr:return new k({algorithmId:"1.2.840.113549.1.1.8",algorithmParams:new k({algorithmId:"1.3.14.3.2.26",algorithmParams:new Ve}).toSchema()});case Er:return 20;case yr:return 1;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new v({idBlock:{tagClass:3,tagNumber:0},optional:!0,value:[k.schema(t.hashAlgorithm||{})]}),new v({idBlock:{tagClass:3,tagNumber:1},optional:!0,value:[k.schema(t.maskGenAlgorithm||{})]}),new v({idBlock:{tagClass:3,tagNumber:2},optional:!0,value:[new x({name:t.saltLength||w})]}),new v({idBlock:{tagClass:3,tagNumber:3},optional:!0,value:[new x({name:t.trailerField||w})]})]})}fromSchema(e){Y(e,_0);let t=H(e,e,Ge.schema({names:{hashAlgorithm:{names:{blockName:Br}},maskGenAlgorithm:{names:{blockName:pr}},saltLength:Er,trailerField:yr}}));R.assertSchema(t,this.className),Br in t.result&&(this.hashAlgorithm=new k({schema:t.result.hashAlgorithm})),pr in t.result&&(this.maskGenAlgorithm=new k({schema:t.result.maskGenAlgorithm})),Er in t.result&&(this.saltLength=t.result.saltLength.valueBlock.valueDec),yr in t.result&&(this.trailerField=t.result.trailerField.valueBlock.valueDec)}toSchema(){let e=[];return this.hashAlgorithm.isEqual(Ge.defaultValues(Br))||e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:[this.hashAlgorithm.toSchema()]})),this.maskGenAlgorithm.isEqual(Ge.defaultValues(pr))||e.push(new v({idBlock:{tagClass:3,tagNumber:1},value:[this.maskGenAlgorithm.toSchema()]})),this.saltLength!==Ge.defaultValues(Er)&&e.push(new v({idBlock:{tagClass:3,tagNumber:2},value:[new x({value:this.saltLength})]})),this.trailerField!==Ge.defaultValues(yr)&&e.push(new v({idBlock:{tagClass:3,tagNumber:3},value:[new x({value:this.trailerField})]})),new M({value:e})}toJSON(){let e={};return this.hashAlgorithm.isEqual(Ge.defaultValues(Br))||(e.hashAlgorithm=this.hashAlgorithm.toJSON()),this.maskGenAlgorithm.isEqual(Ge.defaultValues(pr))||(e.maskGenAlgorithm=this.maskGenAlgorithm.toJSON()),this.saltLength!==Ge.defaultValues(Er)&&(e.saltLength=this.saltLength),this.trailerField!==Ge.defaultValues(yr)&&(e.trailerField=this.trailerField),e}},u(Ge,"Yl"),Ge);Ad.CLASS_NAME="RSASSAPSSParams";var No="salt",Lh="iterationCount",Kt="keyLength",en="prf",eC=[No,Lh,Kt,en],at,Oc=(at=class extends F{constructor(e={}){super(),this.salt=g(e,No,at.defaultValues(No)),this.iterationCount=g(e,Lh,at.defaultValues(Lh)),Kt in e&&(this.keyLength=g(e,Kt,at.defaultValues(Kt))),en in e&&(this.prf=g(e,en,at.defaultValues(en))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case No:return{};case Lh:return-1;case Kt:return 0;case en:return new k({algorithmId:"1.3.14.3.2.26",algorithmParams:new Ve});default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new Ce({value:[new J({name:t.saltPrimitive||w}),k.schema(t.saltConstructed||{})]}),new x({name:t.iterationCount||w}),new x({name:t.keyLength||w,optional:!0}),k.schema(t.prf||{names:{optional:!0}})]})}fromSchema(e){Y(e,eC);let t=H(e,e,at.schema({names:{saltPrimitive:No,saltConstructed:{names:{blockName:No}},iterationCount:Lh,keyLength:Kt,prf:{names:{blockName:en,optional:!0}}}}));R.assertSchema(t,this.className),this.salt=t.result.salt,this.iterationCount=t.result.iterationCount.valueBlock.valueDec,Kt in t.result&&(this.keyLength=t.result.keyLength.valueBlock.valueDec),en in t.result&&(this.prf=new k({schema:t.result.prf}))}toSchema(){let e=[];return e.push(this.salt),e.push(new x({value:this.iterationCount})),Kt in this&&at.defaultValues(Kt)!==this.keyLength&&e.push(new x({value:this.keyLength})),this.prf&&at.defaultValues(en).isEqual(this.prf)===!1&&e.push(this.prf.toSchema()),new M({value:e})}toJSON(){let e={salt:this.salt.toJSON(),iterationCount:this.iterationCount};return Kt in this&&at.defaultValues(Kt)!==this.keyLength&&(e.keyLength=this.keyLength),this.prf&&at.defaultValues(en).isEqual(this.prf)===!1&&(e.prf=this.prf.toJSON()),e}},u(at,"Wl"),at);Oc.CLASS_NAME="PBKDF2Params";var Oh="keyDerivationFunc",Wh="encryptionScheme",tC=[Oh,Wh],Dn,rw=(Dn=class extends F{constructor(e={}){super(),this.keyDerivationFunc=g(e,Oh,Dn.defaultValues(Oh)),this.encryptionScheme=g(e,Wh,Dn.defaultValues(Wh)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Oh:case Wh:return new k;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[k.schema(t.keyDerivationFunc||{}),k.schema(t.encryptionScheme||{})]})}fromSchema(e){Y(e,tC);let t=H(e,e,Dn.schema({names:{keyDerivationFunc:{names:{blockName:Oh}},encryptionScheme:{names:{blockName:Wh}}}}));R.assertSchema(t,this.className),this.keyDerivationFunc=new k({schema:t.result.keyDerivationFunc}),this.encryptionScheme=new k({schema:t.result.encryptionScheme})}toSchema(){return new M({value:[this.keyDerivationFunc.toSchema(),this.encryptionScheme.toSchema()]})}toJSON(){return{keyDerivationFunc:this.keyDerivationFunc.toJSON(),encryptionScheme:this.encryptionScheme.toJSON()}}},u(Dn,"Xl"),Dn);rw.CLASS_NAME="PBES2Params";var mu,sC=(mu=class{constructor(e){this.crypto=e.crypto,this.subtle="webkitSubtle"in e.crypto?e.crypto.webkitSubtle:e.crypto.subtle,this.name=g(e,"name",w)}async encrypt(...e){return this.subtle.encrypt(...e)}async decrypt(...e){return this.subtle.decrypt(...e)}sign(...e){return this.subtle.sign(...e)}async verify(...e){return this.subtle.verify(...e)}async digest(...e){return this.subtle.digest(...e)}async generateKey(...e){return this.subtle.generateKey(...e)}async deriveKey(...e){return this.subtle.deriveKey(...e)}async deriveBits(...e){return this.subtle.deriveBits(...e)}async wrapKey(...e){return this.subtle.wrapKey(...e)}async unwrapKey(...e){return this.subtle.unwrapKey(...e)}exportKey(...e){return this.subtle.exportKey(...e)}importKey(...e){return this.subtle.importKey(...e)}getRandomValues(e){return this.crypto.getRandomValues(e)}},u(mu,"ql"),mu);async function Pp(i,e,t,s,n){let r,a,o;switch(i.toUpperCase()){case"SHA-1":r=20,a=64,o=p0;break;case"SHA-256":r=32,a=64,o=Hw;break;case"SHA-384":r=48,a=128,o=FE;break;case"SHA-512":r=64,a=128,o=DI;break;default:throw new Error("Unsupported hashing algorithm")}let c=new Uint8Array(t),l=new TextDecoder().decode(t);new TextEncoder().encode(l).some((C,I)=>C!==c[I])&&(l=String.fromCharCode(...c));let A=new Uint8Array(2*l.length+2),h=new DataView(A.buffer);for(let C=0;C<l.length;C++)h.setUint16(2*C,l.charCodeAt(C),!1);h.setUint16(2*l.length,0,!1);let d=new Uint8Array(a).fill(3),m=new Uint8Array(s),E=new Uint8Array(a*Math.ceil(m.length/a)).map((C,I)=>m[I%m.length]),y=new Uint8Array(a*Math.ceil(A.length/a)).map((C,I)=>A[I%A.length]),f=new Uint8Array(E.length+y.length);f.set(E),f.set(y,E.length);let p=Math.ceil((e>>3)/r),B=[];for(let C=0;C<p;C++){let I=new Uint8Array(d.length+f.length);I.set(d),I.set(f,d.length);for(let D=0;D<n;D++)I=o(I);let b=new Uint8Array(a).map((D,S)=>I[S%I.length]),V=Math.ceil(m.length/a)+Math.ceil(A.length/a),G=[];for(let D=0;D<V;D++){let S=Array.from(f.slice(D*a,(D+1)*a)),Q=511;for(let N=b.length-1;N>=0;N--)Q>>=8,Q+=b[N]+(S[N]||0),S[N]=255&Q;G.push(...S)}f=new Uint8Array(G),B.push(...I)}return new Uint8Array(B.slice(0,e>>3)).buffer}u(Pp,"_l");function by(i){let e=typeof i=="string"?{name:i}:i;return"hash"in e?{...e,hash:by(e.hash)}:e}u(by,"$l");var fu,sm=(fu=class extends sC{async importKey(e,t,s,n,r){var a,o,c,l,A,h;let d={},m=by(s);switch(e.toLowerCase()){case"raw":return this.subtle.importKey("raw",t,s,n,r);case"spki":{let E=Qe(ne.toArrayBuffer(t));R.assert(E,"keyData");let y=new us;try{y.fromSchema(E.result)}catch{throw new Be("Incorrect keyData")}switch(m.name.toUpperCase()){case"RSA-PSS":if(!m.hash)throw new de("hash","algorithm.hash","Incorrect hash algorithm: Hash algorithm is missed");switch(m.hash.name.toUpperCase()){case"SHA-1":d.alg="PS1";break;case"SHA-256":d.alg="PS256";break;case"SHA-384":d.alg="PS384";break;case"SHA-512":d.alg="PS512";break;default:throw new Error(`Incorrect hash algorithm: ${m.hash.name.toUpperCase()}`)}case"RSASSA-PKCS1-V1_5":{if(r=["verify"],d.kty="RSA",d.ext=n,d.key_ops=r,y.algorithm.algorithmId!=="1.2.840.113549.1.1.1")throw new Error(`Incorrect public key algorithm: ${y.algorithm.algorithmId}`);if(!d.alg){if(!m.hash)throw new de("hash","algorithm.hash","Incorrect hash algorithm: Hash algorithm is missed");switch(m.hash.name.toUpperCase()){case"SHA-1":d.alg="RS1";break;case"SHA-256":d.alg="RS256";break;case"SHA-384":d.alg="RS384";break;case"SHA-512":d.alg="RS512";break;default:throw new Error(`Incorrect hash algorithm: ${m.hash.name.toUpperCase()}`)}}let f=y.toJSON();Object.assign(d,f)}break;case"ECDSA":r=["verify"];case"ECDH":{if(d={kty:"EC",ext:n,key_ops:r},y.algorithm.algorithmId!=="1.2.840.10045.2.1")throw new Error(`Incorrect public key algorithm: ${y.algorithm.algorithmId}`);let f=y.toJSON();Object.assign(d,f)}break;case"RSA-OAEP":{if(d.kty="RSA",d.ext=n,d.key_ops=r,this.name.toLowerCase()==="safari")d.alg="RSA-OAEP";else{if(!m.hash)throw new de("hash","algorithm.hash","Incorrect hash algorithm: Hash algorithm is missed");switch(m.hash.name.toUpperCase()){case"SHA-1":d.alg="RSA-OAEP";break;case"SHA-256":d.alg="RSA-OAEP-256";break;case"SHA-384":d.alg="RSA-OAEP-384";break;case"SHA-512":d.alg="RSA-OAEP-512";break;default:throw new Error(`Incorrect hash algorithm: ${m.hash.name.toUpperCase()}`)}}let f=y.toJSON();Object.assign(d,f)}break;case"RSAES-PKCS1-V1_5":{d.kty="RSA",d.ext=n,d.key_ops=r,d.alg="PS1";let f=y.toJSON();Object.assign(d,f)}break;default:throw new Error(`Incorrect algorithm name: ${m.name.toUpperCase()}`)}}break;case"pkcs8":{let E=new Bg,y=Qe(ne.toArrayBuffer(t));R.assert(y,"keyData");try{E.fromSchema(y.result)}catch{throw new Error("Incorrect keyData")}if(!E.parsedKey)throw new Error("Incorrect keyData");switch(m.name.toUpperCase()){case"RSA-PSS":switch((a=m.hash)===null||a===void 0?void 0:a.name.toUpperCase()){case"SHA-1":d.alg="PS1";break;case"SHA-256":d.alg="PS256";break;case"SHA-384":d.alg="PS384";break;case"SHA-512":d.alg="PS512";break;default:throw new Error(`Incorrect hash algorithm: ${(o=m.hash)===null||o===void 0?void 0:o.name.toUpperCase()}`)}case"RSASSA-PKCS1-V1_5":{if(r=["sign"],d.kty="RSA",d.ext=n,d.key_ops=r,E.privateKeyAlgorithm.algorithmId!=="1.2.840.113549.1.1.1")throw new Error(`Incorrect private key algorithm: ${E.privateKeyAlgorithm.algorithmId}`);if(!("alg"in d))switch((c=m.hash)===null||c===void 0?void 0:c.name.toUpperCase()){case"SHA-1":d.alg="RS1";break;case"SHA-256":d.alg="RS256";break;case"SHA-384":d.alg="RS384";break;case"SHA-512":d.alg="RS512";break;default:throw new Error(`Incorrect hash algorithm: ${(l=m.hash)===null||l===void 0?void 0:l.name.toUpperCase()}`)}let f=E.toJSON();Object.assign(d,f)}break;case"ECDSA":r=["sign"];case"ECDH":{if(d={kty:"EC",ext:n,key_ops:r},E.privateKeyAlgorithm.algorithmId!=="1.2.840.10045.2.1")throw new Error(`Incorrect algorithm: ${E.privateKeyAlgorithm.algorithmId}`);let f=E.toJSON();Object.assign(d,f)}break;case"RSA-OAEP":{if(d.kty="RSA",d.ext=n,d.key_ops=r,this.name.toLowerCase()==="safari")d.alg="RSA-OAEP";else switch((A=m.hash)===null||A===void 0?void 0:A.name.toUpperCase()){case"SHA-1":d.alg="RSA-OAEP";break;case"SHA-256":d.alg="RSA-OAEP-256";break;case"SHA-384":d.alg="RSA-OAEP-384";break;case"SHA-512":d.alg="RSA-OAEP-512";break;default:throw new Error(`Incorrect hash algorithm: ${(h=m.hash)===null||h===void 0?void 0:h.name.toUpperCase()}`)}let f=E.toJSON();Object.assign(d,f)}break;case"RSAES-PKCS1-V1_5":{r=["decrypt"],d.kty="RSA",d.ext=n,d.key_ops=r,d.alg="PS1";let f=E.toJSON();Object.assign(d,f)}break;default:throw new Error(`Incorrect algorithm name: ${m.name.toUpperCase()}`)}}break;case"jwk":d=t;break;default:throw new Error(`Incorrect format: ${e}`)}if(this.name.toLowerCase()==="safari")try{return this.subtle.importKey("jwk",Su(JSON.stringify(d)),s,n,r)}catch{return this.subtle.importKey("jwk",d,s,n,r)}return this.subtle.importKey("jwk",d,s,n,r)}async exportKey(e,t){let s=await this.subtle.exportKey("jwk",t);switch(this.name.toLowerCase()==="safari"&&s instanceof ArrayBuffer&&(s=JSON.parse(Kd(s))),e.toLowerCase()){case"raw":return this.subtle.exportKey("raw",t);case"spki":{let n=new us;try{n.fromJSON(s)}catch{throw new Error("Incorrect key data")}return n.toSchema().toBER(!1)}case"pkcs8":{let n=new Bg;try{n.fromJSON(s)}catch{throw new Error("Incorrect key data")}return n.toSchema().toBER(!1)}case"jwk":return s;default:throw new Error(`Incorrect format: ${e}`)}}async convert(e,t,s,n,r,a){if(e.toLowerCase()===t.toLowerCase())return s;let o=await this.importKey(e,s,n,r,a);return this.exportKey(t,o)}getAlgorithmByOID(e,t=!1,s){switch(e){case"1.2.840.113549.1.1.1":return{name:"RSAES-PKCS1-v1_5"};case"1.2.840.113549.1.1.5":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-1"}};case"1.2.840.113549.1.1.11":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"1.2.840.113549.1.1.12":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-384"}};case"1.2.840.113549.1.1.13":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-512"}};case"1.2.840.113549.1.1.10":return{name:"RSA-PSS"};case"1.2.840.113549.1.1.7":return{name:"RSA-OAEP"};case"1.2.840.10045.2.1":case"1.2.840.10045.4.1":return{name:"ECDSA",hash:{name:"SHA-1"}};case"1.2.840.10045.4.3.2":return{name:"ECDSA",hash:{name:"SHA-256"}};case"1.2.840.10045.4.3.3":return{name:"ECDSA",hash:{name:"SHA-384"}};case"1.2.840.10045.4.3.4":return{name:"ECDSA",hash:{name:"SHA-512"}};case"1.3.133.16.840.63.0.2":return{name:"ECDH",kdf:"SHA-1"};case"1.3.132.1.11.1":return{name:"ECDH",kdf:"SHA-256"};case"1.3.132.1.11.2":return{name:"ECDH",kdf:"SHA-384"};case"1.3.132.1.11.3":return{name:"ECDH",kdf:"SHA-512"};case"2.16.840.1.101.3.4.1.2":return{name:"AES-CBC",length:128};case"2.16.840.1.101.3.4.1.22":return{name:"AES-CBC",length:192};case"2.16.840.1.101.3.4.1.42":return{name:"AES-CBC",length:256};case"2.16.840.1.101.3.4.1.6":return{name:"AES-GCM",length:128};case"2.16.840.1.101.3.4.1.26":return{name:"AES-GCM",length:192};case"2.16.840.1.101.3.4.1.46":return{name:"AES-GCM",length:256};case"2.16.840.1.101.3.4.1.4":return{name:"AES-CFB",length:128};case"2.16.840.1.101.3.4.1.24":return{name:"AES-CFB",length:192};case"2.16.840.1.101.3.4.1.44":return{name:"AES-CFB",length:256};case"2.16.840.1.101.3.4.1.5":return{name:"AES-KW",length:128};case"2.16.840.1.101.3.4.1.25":return{name:"AES-KW",length:192};case"2.16.840.1.101.3.4.1.45":return{name:"AES-KW",length:256};case"1.2.840.113549.2.7":return{name:"HMAC",hash:{name:"SHA-1"}};case"1.2.840.113549.2.9":return{name:"HMAC",hash:{name:"SHA-256"}};case"1.2.840.113549.2.10":return{name:"HMAC",hash:{name:"SHA-384"}};case"1.2.840.113549.2.11":return{name:"HMAC",hash:{name:"SHA-512"}};case"1.2.840.113549.1.9.16.3.5":return{name:"DH"};case"1.3.14.3.2.26":return{name:"SHA-1"};case"2.16.840.1.101.3.4.2.1":return{name:"SHA-256"};case"2.16.840.1.101.3.4.2.2":return{name:"SHA-384"};case"2.16.840.1.101.3.4.2.3":return{name:"SHA-512"};case"1.2.840.113549.1.5.12":return{name:"PBKDF2"};case"1.2.840.10045.3.1.7":return{name:"P-256"};case"1.3.132.0.34":return{name:"P-384"};case"1.3.132.0.35":return{name:"P-521"}}if(t)throw new Error(`Unsupported algorithm identifier ${s?`for ${s} `:w}: ${e}`);return{}}getOIDByAlgorithm(e,t=!1,s){let n=w;switch(e.name.toUpperCase()){case"RSAES-PKCS1-V1_5":n="1.2.840.113549.1.1.1";break;case"RSASSA-PKCS1-V1_5":switch(e.hash.name.toUpperCase()){case"SHA-1":n="1.2.840.113549.1.1.5";break;case"SHA-256":n="1.2.840.113549.1.1.11";break;case"SHA-384":n="1.2.840.113549.1.1.12";break;case"SHA-512":n="1.2.840.113549.1.1.13"}break;case"RSA-PSS":n="1.2.840.113549.1.1.10";break;case"RSA-OAEP":n="1.2.840.113549.1.1.7";break;case"ECDSA":switch(e.hash.name.toUpperCase()){case"SHA-1":n="1.2.840.10045.4.1";break;case"SHA-256":n="1.2.840.10045.4.3.2";break;case"SHA-384":n="1.2.840.10045.4.3.3";break;case"SHA-512":n="1.2.840.10045.4.3.4"}break;case"ECDH":switch(e.kdf.toUpperCase()){case"SHA-1":n="1.3.133.16.840.63.0.2";break;case"SHA-256":n="1.3.132.1.11.1";break;case"SHA-384":n="1.3.132.1.11.2";break;case"SHA-512":n="1.3.132.1.11.3"}break;case"AES-CTR":case"AES-CMAC":case"CONCAT":case"HKDF":break;case"AES-CBC":switch(e.length){case 128:n="2.16.840.1.101.3.4.1.2";break;case 192:n="2.16.840.1.101.3.4.1.22";break;case 256:n="2.16.840.1.101.3.4.1.42"}break;case"AES-GCM":switch(e.length){case 128:n="2.16.840.1.101.3.4.1.6";break;case 192:n="2.16.840.1.101.3.4.1.26";break;case 256:n="2.16.840.1.101.3.4.1.46"}break;case"AES-CFB":switch(e.length){case 128:n="2.16.840.1.101.3.4.1.4";break;case 192:n="2.16.840.1.101.3.4.1.24";break;case 256:n="2.16.840.1.101.3.4.1.44"}break;case"AES-KW":switch(e.length){case 128:n="2.16.840.1.101.3.4.1.5";break;case 192:n="2.16.840.1.101.3.4.1.25";break;case 256:n="2.16.840.1.101.3.4.1.45"}break;case"HMAC":switch(e.hash.name.toUpperCase()){case"SHA-1":n="1.2.840.113549.2.7";break;case"SHA-256":n="1.2.840.113549.2.9";break;case"SHA-384":n="1.2.840.113549.2.10";break;case"SHA-512":n="1.2.840.113549.2.11"}break;case"DH":n="1.2.840.113549.1.9.16.3.5";break;case"SHA-1":n="1.3.14.3.2.26";break;case"SHA-256":n="2.16.840.1.101.3.4.2.1";break;case"SHA-384":n="2.16.840.1.101.3.4.2.2";break;case"SHA-512":n="2.16.840.1.101.3.4.2.3";break;case"PBKDF2":n="1.2.840.113549.1.5.12";break;case"P-256":n="1.2.840.10045.3.1.7";break;case"P-384":n="1.3.132.0.34";break;case"P-521":n="1.3.132.0.35"}if(!n&&t)throw new Error(`Unsupported algorithm ${s?`for ${s} `:w}: ${e.name}`);return n}getAlgorithmParameters(e,t){let s={algorithm:{},usages:[]};switch(e.toUpperCase()){case"RSAES-PKCS1-V1_5":case"RSASSA-PKCS1-V1_5":switch(t.toLowerCase()){case"generatekey":s={algorithm:{name:"RSASSA-PKCS1-v1_5",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},usages:["sign","verify"]};break;case"verify":case"sign":case"importkey":s={algorithm:{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},usages:["verify"]};break;default:return{algorithm:{name:"RSASSA-PKCS1-v1_5"},usages:[]}}break;case"RSA-PSS":switch(t.toLowerCase()){case"sign":case"verify":s={algorithm:{name:"RSA-PSS",hash:{name:"SHA-1"},saltLength:20},usages:["sign","verify"]};break;case"generatekey":s={algorithm:{name:"RSA-PSS",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-1"}},usages:["sign","verify"]};break;case"importkey":s={algorithm:{name:"RSA-PSS",hash:{name:"SHA-1"}},usages:["verify"]};break;default:return{algorithm:{name:"RSA-PSS"},usages:[]}}break;case"RSA-OAEP":switch(t.toLowerCase()){case"encrypt":case"decrypt":s={algorithm:{name:"RSA-OAEP"},usages:["encrypt","decrypt"]};break;case"generatekey":s={algorithm:{name:"RSA-OAEP",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;case"importkey":s={algorithm:{name:"RSA-OAEP",hash:{name:"SHA-256"}},usages:["encrypt"]};break;default:return{algorithm:{name:"RSA-OAEP"},usages:[]}}break;case"ECDSA":switch(t.toLowerCase()){case"generatekey":s={algorithm:{name:"ECDSA",namedCurve:"P-256"},usages:["sign","verify"]};break;case"importkey":s={algorithm:{name:"ECDSA",namedCurve:"P-256"},usages:["verify"]};break;case"verify":case"sign":s={algorithm:{name:"ECDSA",hash:{name:"SHA-256"}},usages:["sign"]};break;default:return{algorithm:{name:"ECDSA"},usages:[]}}break;case"ECDH":switch(t.toLowerCase()){case"exportkey":case"importkey":case"generatekey":s={algorithm:{name:"ECDH",namedCurve:"P-256"},usages:["deriveKey","deriveBits"]};break;case"derivekey":case"derivebits":s={algorithm:{name:"ECDH",namedCurve:"P-256",public:[]},usages:["encrypt","decrypt"]};break;default:return{algorithm:{name:"ECDH"},usages:[]}}break;case"AES-CTR":switch(t.toLowerCase()){case"importkey":case"exportkey":case"generatekey":s={algorithm:{name:"AES-CTR",length:256},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;case"decrypt":case"encrypt":s={algorithm:{name:"AES-CTR",counter:new Uint8Array(16),length:10},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;default:return{algorithm:{name:"AES-CTR"},usages:[]}}break;case"AES-CBC":switch(t.toLowerCase()){case"importkey":case"exportkey":case"generatekey":s={algorithm:{name:"AES-CBC",length:256},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;case"decrypt":case"encrypt":s={algorithm:{name:"AES-CBC",iv:this.getRandomValues(new Uint8Array(16))},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;default:return{algorithm:{name:"AES-CBC"},usages:[]}}break;case"AES-GCM":switch(t.toLowerCase()){case"importkey":case"exportkey":case"generatekey":s={algorithm:{name:"AES-GCM",length:256},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;case"decrypt":case"encrypt":s={algorithm:{name:"AES-GCM",iv:this.getRandomValues(new Uint8Array(16))},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;default:return{algorithm:{name:"AES-GCM"},usages:[]}}break;case"AES-KW":switch(t.toLowerCase()){case"importkey":case"exportkey":case"generatekey":case"wrapkey":case"unwrapkey":s={algorithm:{name:"AES-KW",length:256},usages:["wrapKey","unwrapKey"]};break;default:return{algorithm:{name:"AES-KW"},usages:[]}}break;case"HMAC":switch(t.toLowerCase()){case"sign":case"verify":s={algorithm:{name:"HMAC"},usages:["sign","verify"]};break;case"importkey":case"exportkey":case"generatekey":s={algorithm:{name:"HMAC",length:32,hash:{name:"SHA-256"}},usages:["sign","verify"]};break;default:return{algorithm:{name:"HMAC"},usages:[]}}break;case"HKDF":if(t.toLowerCase()!=="derivekey")return{algorithm:{name:"HKDF"},usages:[]};s={algorithm:{name:"HKDF",hash:"SHA-256",salt:new Uint8Array([]),info:new Uint8Array([])},usages:["encrypt","decrypt"]};break;case"PBKDF2":if(t.toLowerCase()!=="derivekey")return{algorithm:{name:"PBKDF2"},usages:[]};s={algorithm:{name:"PBKDF2",hash:{name:"SHA-256"},salt:new Uint8Array([]),iterations:1e4},usages:["encrypt","decrypt"]}}return s}getHashAlgorithm(e){let t=w;switch(e.algorithmId){case"1.2.840.10045.4.1":case"1.2.840.113549.1.1.5":t="SHA-1";break;case"1.2.840.10045.4.3.2":case"1.2.840.113549.1.1.11":t="SHA-256";break;case"1.2.840.10045.4.3.3":case"1.2.840.113549.1.1.12":t="SHA-384";break;case"1.2.840.10045.4.3.4":case"1.2.840.113549.1.1.13":t="SHA-512";break;case"1.2.840.113549.1.1.10":try{let s=new Ad({schema:e.algorithmParams});if(s.hashAlgorithm){let n=this.getAlgorithmByOID(s.hashAlgorithm.algorithmId);if(!("name"in n))return w;t=n.name}else t="SHA-1"}catch{}}return t}async encryptEncryptedContentInfo(e){de.assert(e,"password","contentEncryptionAlgorithm","hmacHashAlgorithm","iterationCount","contentToEncrypt","contentToEncrypt","contentType");let t=this.getOIDByAlgorithm(e.contentEncryptionAlgorithm,!0,"contentEncryptionAlgorithm"),s=this.getOIDByAlgorithm({name:"PBKDF2"},!0,"PBKDF2"),n=this.getOIDByAlgorithm({name:"HMAC",hash:{name:e.hmacHashAlgorithm}},!0,"hmacHashAlgorithm"),r=new ArrayBuffer(16),a=new Uint8Array(r);this.getRandomValues(a);let o=new ArrayBuffer(64),c=new Uint8Array(o);this.getRandomValues(c);let l=new Uint8Array(e.contentToEncrypt),A=new Oc({salt:new J({valueHex:o}),iterationCount:e.iterationCount,prf:new k({algorithmId:n,algorithmParams:new Ve})}),h=new Uint8Array(e.password),d=await this.importKey("raw",h,"PBKDF2",!1,["deriveKey"]),m=await this.deriveKey({name:"PBKDF2",hash:{name:e.hmacHashAlgorithm},salt:c,iterations:e.iterationCount},d,e.contentEncryptionAlgorithm,!1,["encrypt"]),E=await this.encrypt({name:e.contentEncryptionAlgorithm.name,iv:a},m,l),y=new rw({keyDerivationFunc:new k({algorithmId:s,algorithmParams:A.toSchema()}),encryptionScheme:new k({algorithmId:t,algorithmParams:new J({valueHex:r})})});return new st({contentType:e.contentType,contentEncryptionAlgorithm:new k({algorithmId:"1.2.840.113549.1.5.13",algorithmParams:y.toSchema()}),encryptedContent:new J({valueHex:E})})}async decryptEncryptedContentInfo(e){if(de.assert(e,"password","encryptedContentInfo"),e.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId!=="1.2.840.113549.1.5.13")throw new Error(`Unknown "contentEncryptionAlgorithm": ${e.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId}`);let t,s;try{t=new rw({schema:e.encryptedContentInfo.contentEncryptionAlgorithm.algorithmParams})}catch{throw new Error('Incorrectly encoded "pbes2Parameters"')}try{s=new Oc({schema:t.keyDerivationFunc.algorithmParams})}catch{throw new Error('Incorrectly encoded "pbkdf2Params"')}let n=this.getAlgorithmByOID(t.encryptionScheme.algorithmId,!0),r=t.encryptionScheme.algorithmParams.valueBlock.valueHex,a=new Uint8Array(r),o=s.salt.valueBlock.valueHex,c=new Uint8Array(o),l=s.iterationCount,A="SHA-1";s.prf&&(A=this.getAlgorithmByOID(s.prf.algorithmId,!0).hash.name);let h=await this.importKey("raw",e.password,"PBKDF2",!1,["deriveKey"]),d=await this.deriveKey({name:"PBKDF2",hash:{name:A},salt:c,iterations:l},h,n,!1,["decrypt"]),m=e.encryptedContentInfo.getEncryptedContent();return this.decrypt({name:n.name,iv:a},d,m)}async stampDataWithPassword(e){if(!(e instanceof Object))throw new Error('Parameters must have type "Object"');let t;switch(de.assert(e,"password","hashAlgorithm","iterationCount","salt","contentToStamp"),e.hashAlgorithm.toLowerCase()){case"sha-1":t=160;break;case"sha-256":t=256;break;case"sha-384":t=384;break;case"sha-512":t=512;break;default:throw new Error(`Incorrect "parameters.hashAlgorithm" parameter: ${e.hashAlgorithm}`)}let s={name:"HMAC",length:t,hash:{name:e.hashAlgorithm}},n=await Pp(e.hashAlgorithm,t,e.password,e.salt,e.iterationCount),r=await this.importKey("raw",new Uint8Array(n),s,!1,["sign"]);return this.sign(s,r,new Uint8Array(e.contentToStamp))}async verifyDataStampedWithPassword(e){de.assert(e,"password","hashAlgorithm","salt","iterationCount","contentToVerify","signatureToVerify");let t=0;switch(e.hashAlgorithm.toLowerCase()){case"sha-1":t=160;break;case"sha-256":t=256;break;case"sha-384":t=384;break;case"sha-512":t=512;break;default:throw new Error(`Incorrect "parameters.hashAlgorithm" parameter: ${e.hashAlgorithm}`)}let s={name:"HMAC",length:t,hash:{name:e.hashAlgorithm}},n=await Pp(e.hashAlgorithm,t,e.password,e.salt,e.iterationCount),r=await this.importKey("raw",new Uint8Array(n),s,!1,["verify"]);return this.verify(s,r,new Uint8Array(e.signatureToVerify),new Uint8Array(e.contentToVerify))}async getSignatureParameters(e,t="SHA-1"){this.getOIDByAlgorithm({name:t},!0,"hashAlgorithm");let s=new k,n=this.getAlgorithmParameters(e.algorithm.name,"sign");if(!Object.keys(n.algorithm).length)throw new Error("Parameter 'algorithm' is empty");let r=n.algorithm;switch("hash"in e.algorithm&&e.algorithm.hash&&e.algorithm.hash.name?r.hash.name=e.algorithm.hash.name:r.hash.name=t,e.algorithm.name.toUpperCase()){case"RSASSA-PKCS1-V1_5":case"ECDSA":s.algorithmId=this.getOIDByAlgorithm(r,!0);break;case"RSA-PSS":{switch(r.hash.name.toUpperCase()){case"SHA-256":r.saltLength=32;break;case"SHA-384":r.saltLength=48;break;case"SHA-512":r.saltLength=64}let a={};if(r.hash.name.toUpperCase()!=="SHA-1"){let c=this.getOIDByAlgorithm({name:r.hash.name},!0,"hashAlgorithm");a.hashAlgorithm=new k({algorithmId:c,algorithmParams:new Ve}),a.maskGenAlgorithm=new k({algorithmId:"1.2.840.113549.1.1.8",algorithmParams:a.hashAlgorithm.toSchema()})}r.saltLength!==20&&(a.saltLength=r.saltLength);let o=new Ad(a);s.algorithmId="1.2.840.113549.1.1.10",s.algorithmParams=o.toSchema()}break;default:throw new Error(`Unsupported signature algorithm: ${e.algorithm.name}`)}return{signatureAlgorithm:s,parameters:n}}async signWithPrivateKey(e,t,s){let n=await this.sign(s.algorithm,t,e);return s.algorithm.name==="ECDSA"?function(r){if(r.byteLength%2!=0)return Re;let a=r.byteLength/2,o=new ArrayBuffer(a);new Uint8Array(o).set(new Uint8Array(r,0,a));let c=new x({valueHex:o}),l=new ArrayBuffer(a);new Uint8Array(l).set(new Uint8Array(r,a,a));let A=new x({valueHex:l});return new M({value:[c.convertToDER(),A.convertToDER()]}).toBER(!1)}(n):n}fillPublicKeyParameters(e,t){let s={},n=this.getHashAlgorithm(t);if(n===w)throw new Error(`Unsupported signature algorithm: ${t.algorithmId}`);let r;r=t.algorithmId==="1.2.840.113549.1.1.10"?t.algorithmId:e.algorithm.algorithmId;let a=this.getAlgorithmByOID(r,!0);if(s.algorithm=this.getAlgorithmParameters(a.name,"importKey"),"hash"in s.algorithm.algorithm&&(s.algorithm.algorithm.hash.name=n),a.name==="ECDSA"){let o=e.algorithm;if(!o.algorithmParams)throw new Error("Algorithm parameters for ECDSA public key are missed");let c=o.algorithmParams;if("idBlock"in o.algorithmParams&&(c.idBlock.tagClass!==1||c.idBlock.tagNumber!==6))throw new Error("Incorrect type for ECDSA public key parameters");let l=this.getAlgorithmByOID(c.valueBlock.toString(),!0);s.algorithm.algorithm.namedCurve=l.name}return s}async getPublicKey(e,t,s){s||(s=this.fillPublicKeyParameters(e,t));let n=e.toSchema().toBER(!1);return this.importKey("spki",n,s.algorithm.algorithm,!0,s.algorithm.usages)}async verifyWithPublicKey(e,t,s,n,r){let a;if(r){let l={},A;A=n.algorithmId==="1.2.840.113549.1.1.10"?n.algorithmId:s.algorithm.algorithmId;let h=this.getAlgorithmByOID(A,!0);if(l.algorithm=this.getAlgorithmParameters(h.name,"importKey"),"hash"in l.algorithm.algorithm&&(l.algorithm.algorithm.hash.name=r),h.name==="ECDSA"){let d=!1;if("algorithmParams"in s.algorithm&&"idBlock"in s.algorithm.algorithmParams&&s.algorithm.algorithmParams.idBlock.tagClass===1&&s.algorithm.algorithmParams.idBlock.tagNumber===6&&(d=!0),d===!1)throw new Error("Incorrect type for ECDSA public key parameters");let m=this.getAlgorithmByOID(s.algorithm.algorithmParams.valueBlock.toString(),!0);l.algorithm.algorithm.namedCurve=m.name}a=await this.getPublicKey(s,null,l)}else{if(!(r=this.getHashAlgorithm(n)))throw new Error(`Unsupported signature algorithm: ${n.algorithmId}`);a=await this.getPublicKey(s,n)}let o=this.getAlgorithmParameters(a.algorithm.name,"verify");"hash"in o.algorithm&&(o.algorithm.hash.name=r);let c=t.valueBlock.valueHexView;if(a.algorithm.name==="ECDSA"){let l=Zr.find(a.algorithm.namedCurve);if(!l)throw new Error("Unsupported named curve in use");let A=Qe(c);R.assert(A,"Signature value"),c=function(h,d){if(!(h instanceof M&&h.valueBlock.value.length===2&&h.valueBlock.value[0]instanceof x&&h.valueBlock.value[1]instanceof x))return Re;let m=h.valueBlock.value[0].convertFromDER().valueBlock.valueHexView,E=h.valueBlock.value[1].convertFromDER().valueBlock.valueHexView,y=new Uint8Array(2*d);return y.set(m,d-m.byteLength),y.set(E,2*d-E.byteLength),y.buffer}(A.result,l.size)}if(a.algorithm.name==="RSA-PSS"){let l=new Ad({schema:n.algorithmParams});o.algorithm.saltLength="saltLength"in l?l.saltLength:20;let A="SHA-1";"hashAlgorithm"in l&&(A=this.getAlgorithmByOID(l.hashAlgorithm.algorithmId,!0).name),o.algorithm.hash.name=A}return this.verify(o.algorithm,a,c,e)}},u(fu,"ec"),fu),Ny={name:"none",crypto:null};function zp(i){return!(!i||typeof i!="object"||!("crypto"in i))}u(zp,"sc");function Zp(i,...e){let t=null;if(e.length<2)t=e.length?e[0]:typeof self<"u"&&self.crypto?new sm({name:"browser",crypto:self.crypto}):null;else{let s=e[0],n=e[1];zp(n)?t=n:zp(s)?t=s:"subtle"in s&&"getRandomValues"in s&&(t=new sm({crypto:s}))}if(typeof process<"u"&&"pid"in process&&typeof global<"u"&&typeof window>"u"){if(global[process.pid]===void 0)global[process.pid]={};else if(typeof global[process.pid]!="object")throw new Error(`Name global.${process.pid} already exists and it is not an object`);if(global[process.pid].pkijs===void 0)global[process.pid].pkijs={};else if(typeof global[process.pid].pkijs!="object")throw new Error(`Name global.${process.pid}.pkijs already exists and it is not an object`);global[process.pid].pkijs.engine={name:i,crypto:t}}else Ny={name:i,crypto:t}}u(Zp,"nc");function ce(i=!1){let e=function(){if(typeof process<"u"&&"pid"in process&&typeof global<"u"&&typeof window>"u"){let t;try{t=global[process.pid].pkijs.engine}catch{throw new Error("Please call 'setEngine' before call to 'getEngine'")}return t}return Ny}();if(!e.crypto&&i)throw new Error("Unable to create WebCrypto object");return e.crypto}u(ce,"rc");async function nC(i,e,t,s,n){switch(i.toUpperCase()){case"SHA-1":case"SHA-256":case"SHA-384":case"SHA-512":break;default:throw new Be(`Unknown hash function: ${i}`)}if(Be.assert(e,"zBuffer","ArrayBuffer"),e.byteLength===0)throw new Be("'zBuffer' has zero length, error");if(Be.assert(s,"SharedInfo","ArrayBuffer"),t>255)throw new Be("Please set 'Counter' argument to value less or equal to 255");let r=new ArrayBuffer(4),a=new Uint8Array(r);a[0]=0,a[1]=0,a[2]=0,a[3]=t;let o=Re;return o=Yc(o,e),o=Yc(o,r),o=Yc(o,s),{counter:t,result:await n.digest({name:i},o)}}u(nC,"ac");async function Kp(i,e,t,s,n=ce(!0)){let r=0,a=1;switch(i.toUpperCase()){case"SHA-1":r=160;break;case"SHA-256":r=256;break;case"SHA-384":r=384;break;case"SHA-512":r=512;break;default:throw new Be(`Unknown hash function: ${i}`)}if(Be.assert(e,"Zbuffer","ArrayBuffer"),e.byteLength===0)throw new Be("'Zbuffer' has zero length, error");Be.assert(s,"SharedInfo","ArrayBuffer");let o=t/r;Math.floor(o)>0&&(a=Math.floor(o),o-a>0&&a++);let c=[];for(let d=1;d<=a;d++)c.push(await nC(i,e,d,s,n));let l=Re,A=1,h=!0;for(;h;){h=!1;for(let d of c)if(d.counter===A){l=Yc(l,d.result),h=!0;break}A++}if(t>>=3,l.byteLength>t){let d=new ArrayBuffer(t),m=new Uint8Array(d),E=new Uint8Array(l);for(let y=0;y<t;y++)m[y]=E[y];return d}return l}u(Kp,"ic");var sf="version",nf="logID",rf="extensions",af="timestamp",of="hashAlgorithm",cf="signatureAlgorithm",lf="signature",qp="none",Xp="sha1",$p="sha224",_p="sha256",eE="sha384",tE="sha512",sE="anonymous",nE="ecdsa",bt,vy=(bt=class extends F{constructor(e={}){super(),this.version=g(e,sf,bt.defaultValues(sf)),this.logID=g(e,nf,bt.defaultValues(nf)),this.timestamp=g(e,af,bt.defaultValues(af)),this.extensions=g(e,rf,bt.defaultValues(rf)),this.hashAlgorithm=g(e,of,bt.defaultValues(of)),this.signatureAlgorithm=g(e,cf,bt.defaultValues(cf)),this.signature=g(e,lf,bt.defaultValues(lf)),"stream"in e&&e.stream&&this.fromStream(e.stream),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case sf:return 0;case nf:case rf:return Re;case af:return new Date(0);case of:case cf:return w;case lf:return new re;default:return super.defaultValues(e)}}fromSchema(e){if(!(e instanceof _d))throw new Error("Object's schema was not verified against input data for SignedCertificateTimestamp");let t=new Lc({stream:new Gt({buffer:e.data})});this.fromStream(t)}fromStream(e){let t=e.getUint16();if(this.version=e.getBlock(1)[0],this.version===0){this.logID=new Uint8Array(e.getBlock(32)).buffer.slice(0),this.timestamp=new Date(Ki(new Uint8Array(e.getBlock(8)),8));let s=e.getUint16();switch(this.extensions=new Uint8Array(e.getBlock(s)).buffer.slice(0),e.getBlock(1)[0]){case 0:this.hashAlgorithm=qp;break;case 1:this.hashAlgorithm="md5";break;case 2:this.hashAlgorithm=Xp;break;case 3:this.hashAlgorithm=$p;break;case 4:this.hashAlgorithm=_p;break;case 5:this.hashAlgorithm=eE;break;case 6:this.hashAlgorithm=tE;break;default:throw new Error("Object's stream was not correct for SignedCertificateTimestamp")}switch(e.getBlock(1)[0]){case 0:this.signatureAlgorithm=sE;break;case 1:this.signatureAlgorithm="rsa";break;case 2:this.signatureAlgorithm="dsa";break;case 3:this.signatureAlgorithm=nE;break;default:throw new Error("Object's stream was not correct for SignedCertificateTimestamp")}let n=e.getUint16(),r=Qe(new Uint8Array(e.getBlock(n)).buffer.slice(0));if(R.assert(r,"SignedCertificateTimestamp"),this.signature=r.result,t!==47+s+n)throw new Error("Object's stream was not correct for SignedCertificateTimestamp")}}toSchema(){let e=this.toStream();return new _d({data:e.stream.buffer})}toStream(){let e=new Lc;e.appendUint16(47+this.extensions.byteLength+this.signature.valueBeforeDecodeView.byteLength),e.appendChar(this.version),e.appendView(new Uint8Array(this.logID));let t=new ArrayBuffer(8),s=new Uint8Array(t),n=Wn(this.timestamp.valueOf(),8),r,a;switch(s.set(new Uint8Array(n),8-n.byteLength),e.appendView(s),e.appendUint16(this.extensions.byteLength),this.extensions.byteLength&&e.appendView(new Uint8Array(this.extensions)),this.hashAlgorithm.toLowerCase()){case qp:r=0;break;case"md5":r=1;break;case Xp:r=2;break;case $p:r=3;break;case _p:r=4;break;case eE:r=5;break;case tE:r=6;break;default:throw new Error(`Incorrect data for hashAlgorithm: ${this.hashAlgorithm}`)}switch(e.appendChar(r),this.signatureAlgorithm.toLowerCase()){case sE:a=0;break;case"rsa":a=1;break;case"dsa":a=2;break;case nE:a=3;break;default:throw new Error(`Incorrect data for signatureAlgorithm: ${this.signatureAlgorithm}`)}e.appendChar(a);let o=this.signature.toBER(!1);return e.appendUint16(o.byteLength),e.appendView(new Uint8Array(o)),e}toJSON(){return{version:this.version,logID:UB(this.logID),timestamp:this.timestamp,extensions:UB(this.extensions),hashAlgorithm:this.hashAlgorithm,signatureAlgorithm:this.signatureAlgorithm,signature:this.signature.toJSON()}}async verify(e,t,s=0,n=ce(!0)){let r=Sf(Kd(this.logID)),a=null,o=new Lc;for(let m of e)if(m.log_id===r){a=m.key;break}if(!a)throw new Error(`Public key not found for CT with logId: ${r}`);let c=Su(hg(a)),l=us.fromBER(c);o.appendChar(0),o.appendChar(0);let A=new ArrayBuffer(8),h=new Uint8Array(A),d=Wn(this.timestamp.valueOf(),8);return h.set(new Uint8Array(d),8-d.byteLength),o.appendView(h),o.appendUint16(s),s===0&&o.appendUint24(t.byteLength),o.appendView(new Uint8Array(t)),o.appendUint16(this.extensions.byteLength),this.extensions.byteLength!==0&&o.appendView(new Uint8Array(this.extensions)),n.verifyWithPublicKey(o.buffer.slice(0,o.length),new J({valueHex:this.signature.toBER(!1)}),l,{algorithmId:w},"SHA-256")}},u(bt,"yc"),bt);vy.CLASS_NAME="SignedCertificateTimestamp";var Og="timestamps",Pi,Dy=(Pi=class extends F{constructor(e={}){super(),this.timestamps=g(e,Og,Pi.defaultValues(Og)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===Og?[]:super.defaultValues(e)}static compareWithDefault(e,t){return e===Og?t.length===0:super.defaultValues(e)}static schema(e={}){var t;let s=g(e,"names",{});return(t=s.optional)!==null&&t!==void 0||(s.optional=!1),new J({name:s.blockName||"SignedCertificateTimestampList",optional:s.optional})}fromSchema(e){if(!(e instanceof J))throw new Error("Object's schema was not verified against input data for SignedCertificateTimestampList");let t=new Lc({stream:new Gt({buffer:e.valueBlock.valueHex})});if(t.getUint16()!==t.length)throw new Error("Object's schema was not verified against input data for SignedCertificateTimestampList");for(;t.length;)this.timestamps.push(new vy({stream:t}))}toSchema(){let e=new Lc,t=0,s=[];for(let n of this.timestamps){let r=n.toStream();s.push(r),t+=r.stream.buffer.byteLength}e.appendUint16(t);for(let n of s)e.appendView(n.stream.view);return new J({valueHex:e.stream.buffer.slice(0)})}toJSON(){return{timestamps:Array.from(this.timestamps,e=>e.toJSON())}}},u(Pi,"Mc"),Pi);Dy.CLASS_NAME="SignedCertificateTimestampList";var Ph="attributes",rC=[Ph],ia,Qy=(ia=class extends F{constructor(e={}){super(),this.attributes=g(e,Ph,ia.defaultValues(Ph)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===Ph?[]:super.defaultValues(e)}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new ae({name:t.attributes||w,value:ke.schema()})]})}fromSchema(e){Y(e,rC);let t=H(e,e,ia.schema({names:{attributes:Ph}}));R.assertSchema(t,this.className),this.attributes=Array.from(t.result.attributes,s=>new ke({schema:s}))}toSchema(){return new M({value:Array.from(this.attributes,e=>e.toSchema())})}toJSON(){return{attributes:Array.from(this.attributes,e=>e.toJSON())}}},u(ia,"bc"),ia);Qy.CLASS_NAME="SubjectDirectoryAttributes";var we,aC=(we=class{static getItems(){return this.types||(this.types={},we.register(sy,"SubjectAltName",Pf),we.register(ny,"IssuerAltName",Pf),we.register(Ww,"AuthorityKeyIdentifier",Zw),we.register(Lw,"BasicConstraints",Kw),we.register("1.3.6.1.4.1.311.21.1","MicrosoftCaVersion",dy),we.register(cy,"CertificatePolicies",Kf),we.register("1.3.6.1.4.1.311.21.10","CertificatePoliciesMicrosoft",Kf),we.register("1.3.6.1.4.1.311.21.7","MicrosoftCertTemplateV2",x0),we.register(oy,"CRLDistributionPoints",Xf),we.register(Ow,"FreshestCRL",Xf),we.register("2.5.29.37","ExtKeyUsage",wy),we.register(ay,"CertificateIssuer",nt),we.register(Pw,"AuthorityInfoAccess",$f),we.register("1.3.6.1.5.5.7.1.11","SubjectInfoAccess",$f),we.register(ry,"IssuingDistributionPoint",py),we.register(iy,"NameConstraints",Ey),we.register(uy,"PolicyConstraints",yy),we.register(ly,"PolicyMappings",Iy),we.register("2.5.29.16","PrivateKeyUsagePeriod",Cy),we.register("1.3.6.1.5.5.7.1.3","QCStatements",My),we.register("1.3.6.1.4.1.11129.2.4.2","SignedCertificateTimestampList",Dy),we.register("2.5.29.9","SubjectDirectoryAttributes",Qy)),this.types}static fromBER(e,t){let s=Qe(t);if(s.offset===-1)return null;let n=this.find(e);if(n)try{return new n.type({schema:s.result})}catch{let a=new n.type;return a.parsingError=`Incorrectly formatted value of extension ${n.name} (${e})`,a}return s.result}static find(e){return this.getItems()[e]||null}static register(e,t,s){this.getItems()[e]={name:t,type:s}}},u(we,"Qc"),we),zh="extnID",Ir="critical",Zh="extnValue",Wg="parsedValue",iC=[zh,Ir,Zh],Nt,xt=(Nt=class extends F{get parsedValue(){if(this._parsedValue===void 0){let e=aC.fromBER(this.extnID,this.extnValue.valueBlock.valueHexView);this._parsedValue=e}return this._parsedValue||void 0}set parsedValue(e){this._parsedValue=e}constructor(e={}){super(),this.extnID=g(e,zh,Nt.defaultValues(zh)),this.critical=g(e,Ir,Nt.defaultValues(Ir)),this.extnValue=Zh in e?new J({valueHex:e.extnValue}):Nt.defaultValues(Zh),Wg in e&&(this.parsedValue=g(e,Wg,Nt.defaultValues(Wg))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case zh:return w;case Ir:return!1;case Zh:return new J;case Wg:return{};default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.extnID||w}),new Ps({name:t.critical||w,optional:!0}),new J({name:t.extnValue||w})]})}fromSchema(e){Y(e,iC);let t=H(e,e,Nt.schema({names:{extnID:zh,critical:Ir,extnValue:Zh}}));R.assertSchema(t,this.className),this.extnID=t.result.extnID.valueBlock.toString(),Ir in t.result&&(this.critical=t.result.critical.valueBlock.value),this.extnValue=t.result.extnValue}toSchema(){let e=[];return e.push(new z({value:this.extnID})),this.critical!==Nt.defaultValues(Ir)&&e.push(new Ps({value:this.critical})),e.push(this.extnValue),new M({value:e})}toJSON(){let e={extnID:this.extnID,extnValue:this.extnValue.toJSON()};return this.critical!==Nt.defaultValues(Ir)&&(e.critical=this.critical),this.parsedValue&&this.parsedValue.toJSON&&(e.parsedValue=this.parsedValue.toJSON()),e}},u(Nt,"Uc"),Nt);xt.CLASS_NAME="Extension";var Kh="extensions",oC=[Kh],oa,Le=(oa=class extends F{constructor(e={}){super(),this.extensions=g(e,Kh,oa.defaultValues(Kh)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===Kh?[]:super.defaultValues(e)}static schema(e={},t=!1){let s=g(e,"names",{});return new M({optional:t,name:s.blockName||w,value:[new ae({name:s.extensions||w,value:xt.schema(s.extension||{})})]})}fromSchema(e){Y(e,oC);let t=H(e,e,oa.schema({names:{extensions:Kh}}));R.assertSchema(t,this.className),this.extensions=Array.from(t.result.extensions,s=>new xt({schema:s}))}toSchema(){return new M({value:Array.from(this.extensions,e=>e.toSchema())})}toJSON(){return{extensions:this.extensions.map(e=>e.toJSON())}}},u(oa,"Rc"),oa);Le.CLASS_NAME="Extensions";var qh="issuer",Xh="serialNumber",Ha="issuerUID",cC=[qh,Xh,Ha],vs,Ws=(vs=class extends F{constructor(e={}){super(),this.issuer=g(e,qh,vs.defaultValues(qh)),this.serialNumber=g(e,Xh,vs.defaultValues(Xh)),Ha in e&&(this.issuerUID=g(e,Ha,vs.defaultValues(Ha))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case qh:return new nt;case Xh:return new x;case Ha:return new ue;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[nt.schema(t.issuer||{}),new x({name:t.serialNumber||w}),new ue({optional:!0,name:t.issuerUID||w})]})}fromSchema(e){Y(e,cC);let t=H(e,e,vs.schema({names:{issuer:{names:{blockName:qh}},serialNumber:Xh,issuerUID:Ha}}));R.assertSchema(t,this.className),this.issuer=new nt({schema:t.result.issuer}),this.serialNumber=t.result.serialNumber,Ha in t.result&&(this.issuerUID=t.result.issuerUID)}toSchema(){let e=new M({value:[this.issuer.toSchema(),this.serialNumber]});return this.issuerUID&&e.valueBlock.value.push(this.issuerUID),e}toJSON(){let e={issuer:this.issuer.toJSON(),serialNumber:this.serialNumber.toJSON()};return this.issuerUID&&(e.issuerUID=this.issuerUID.toJSON()),e}},u(vs,"jc"),vs);Ws.CLASS_NAME="IssuerSerial";var $h="version",Ya="baseCertificateID",ja="subjectName",_h="issuer",eA="signature",tA="serialNumber",sA="attrCertValidityPeriod",nA="attributes",Ja="issuerUniqueID",La="extensions",lC=[$h,Ya,ja,_h,eA,tA,sA,nA,Ja,La],ze,gd=(ze=class extends F{constructor(e={}){super(),this.version=g(e,$h,ze.defaultValues($h)),Ya in e&&(this.baseCertificateID=g(e,Ya,ze.defaultValues(Ya))),ja in e&&(this.subjectName=g(e,ja,ze.defaultValues(ja))),this.issuer=g(e,_h,ze.defaultValues(_h)),this.signature=g(e,eA,ze.defaultValues(eA)),this.serialNumber=g(e,tA,ze.defaultValues(tA)),this.attrCertValidityPeriod=g(e,sA,ze.defaultValues(sA)),this.attributes=g(e,nA,ze.defaultValues(nA)),Ja in e&&(this.issuerUniqueID=g(e,Ja,ze.defaultValues(Ja))),La in e&&(this.extensions=g(e,La,ze.defaultValues(La))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case $h:return 0;case Ya:return new Ws;case ja:case _h:return new nt;case eA:return new k;case tA:return new x;case sA:return new Ti;case nA:return[];case Ja:return new ue;case La:return new Le;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.version||w}),new Ce({value:[new v({name:t.baseCertificateID||w,idBlock:{tagClass:3,tagNumber:0},value:Ws.schema().valueBlock.value}),new v({name:t.subjectName||w,idBlock:{tagClass:3,tagNumber:1},value:nt.schema().valueBlock.value})]}),nt.schema({names:{blockName:t.issuer||w}}),k.schema(t.signature||{}),new x({name:t.serialNumber||w}),Ti.schema(t.attrCertValidityPeriod||{}),new M({name:t.attributes||w,value:[new ae({value:ke.schema()})]}),new ue({optional:!0,name:t.issuerUniqueID||w}),Le.schema(t.extensions||{},!0)]})}fromSchema(e){Y(e,lC);let t=H(e,e,ze.schema({names:{version:$h,baseCertificateID:Ya,subjectName:ja,issuer:_h,signature:{names:{blockName:eA}},serialNumber:tA,attrCertValidityPeriod:{names:{blockName:sA}},attributes:nA,issuerUniqueID:Ja,extensions:{names:{blockName:La}}}}));R.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,Ya in t.result&&(this.baseCertificateID=new Ws({schema:new M({value:t.result.baseCertificateID.valueBlock.value})})),ja in t.result&&(this.subjectName=new nt({schema:new M({value:t.result.subjectName.valueBlock.value})})),this.issuer=t.result.issuer,this.signature=new k({schema:t.result.signature}),this.serialNumber=t.result.serialNumber,this.attrCertValidityPeriod=new Ti({schema:t.result.attrCertValidityPeriod}),this.attributes=Array.from(t.result.attributes.valueBlock.value,s=>new ke({schema:s})),Ja in t.result&&(this.issuerUniqueID=t.result.issuerUniqueID),La in t.result&&(this.extensions=new Le({schema:t.result.extensions}))}toSchema(){let e=new M({value:[new x({value:this.version})]});return this.baseCertificateID&&e.valueBlock.value.push(new v({idBlock:{tagClass:3,tagNumber:0},value:this.baseCertificateID.toSchema().valueBlock.value})),this.subjectName&&e.valueBlock.value.push(new v({idBlock:{tagClass:3,tagNumber:1},value:this.subjectName.toSchema().valueBlock.value})),e.valueBlock.value.push(this.issuer.toSchema()),e.valueBlock.value.push(this.signature.toSchema()),e.valueBlock.value.push(this.serialNumber),e.valueBlock.value.push(this.attrCertValidityPeriod.toSchema()),e.valueBlock.value.push(new M({value:Array.from(this.attributes,t=>t.toSchema())})),this.issuerUniqueID&&e.valueBlock.value.push(this.issuerUniqueID),this.extensions&&e.valueBlock.value.push(this.extensions.toSchema()),e}toJSON(){let e={version:this.version};return this.baseCertificateID&&(e.baseCertificateID=this.baseCertificateID.toJSON()),this.subjectName&&(e.subjectName=this.subjectName.toJSON()),e.issuer=this.issuer.toJSON(),e.signature=this.signature.toJSON(),e.serialNumber=this.serialNumber.toJSON(),e.attrCertValidityPeriod=this.attrCertValidityPeriod.toJSON(),e.attributes=Array.from(this.attributes,t=>t.toJSON()),this.issuerUniqueID&&(e.issuerUniqueID=this.issuerUniqueID.toJSON()),this.extensions&&(e.extensions=this.extensions.toJSON()),e}},u(ze,"eh"),ze);gd.CLASS_NAME="AttributeCertificateInfoV1";var rA="acinfo",aA="signatureAlgorithm",iA="signatureValue",uC=[rA,iA,aA],Ds,nm=(Ds=class extends F{constructor(e={}){super(),this.acinfo=g(e,rA,Ds.defaultValues(rA)),this.signatureAlgorithm=g(e,aA,Ds.defaultValues(aA)),this.signatureValue=g(e,iA,Ds.defaultValues(iA)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case rA:return new gd;case aA:return new k;case iA:return new ue;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[gd.schema(t.acinfo||{}),k.schema(t.signatureAlgorithm||{}),new ue({name:t.signatureValue||w})]})}fromSchema(e){Y(e,uC);let t=H(e,e,Ds.schema({names:{acinfo:{names:{blockName:rA}},signatureAlgorithm:{names:{blockName:aA}},signatureValue:iA}}));R.assertSchema(t,this.className),this.acinfo=new gd({schema:t.result.acinfo}),this.signatureAlgorithm=new k({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}toSchema(){return new M({value:[this.acinfo.toSchema(),this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){return{acinfo:this.acinfo.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()}}},u(Ds,"ah"),Ds);nm.CLASS_NAME="AttributeCertificateV1";var oA="digestedObjectType",Oa="otherObjectTypeID",cA="digestAlgorithm",lA="objectDigest",hC=[oA,Oa,cA,lA],ts,Ui=(ts=class extends F{constructor(e={}){super(),this.digestedObjectType=g(e,oA,ts.defaultValues(oA)),Oa in e&&(this.otherObjectTypeID=g(e,Oa,ts.defaultValues(Oa))),this.digestAlgorithm=g(e,cA,ts.defaultValues(cA)),this.objectDigest=g(e,lA,ts.defaultValues(lA)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case oA:return new qi;case Oa:return new z;case cA:return new k;case lA:return new ue;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new qi({name:t.digestedObjectType||w}),new z({optional:!0,name:t.otherObjectTypeID||w}),k.schema(t.digestAlgorithm||{}),new ue({name:t.objectDigest||w})]})}fromSchema(e){Y(e,hC);let t=H(e,e,ts.schema({names:{digestedObjectType:oA,otherObjectTypeID:Oa,digestAlgorithm:{names:{blockName:cA}},objectDigest:lA}}));R.assertSchema(t,this.className),this.digestedObjectType=t.result.digestedObjectType,Oa in t.result&&(this.otherObjectTypeID=t.result.otherObjectTypeID),this.digestAlgorithm=new k({schema:t.result.digestAlgorithm}),this.objectDigest=t.result.objectDigest}toSchema(){let e=new M({value:[this.digestedObjectType]});return this.otherObjectTypeID&&e.valueBlock.value.push(this.otherObjectTypeID),e.valueBlock.value.push(this.digestAlgorithm.toSchema()),e.valueBlock.value.push(this.objectDigest),e}toJSON(){let e={digestedObjectType:this.digestedObjectType.toJSON(),digestAlgorithm:this.digestAlgorithm.toJSON(),objectDigest:this.objectDigest.toJSON()};return this.otherObjectTypeID&&(e.otherObjectTypeID=this.otherObjectTypeID.toJSON()),e}},u(ts,"uh"),ts);Ui.CLASS_NAME="ObjectDigestInfo";var Wa="issuerName",Pa="baseCertificateID",za="objectDigestInfo",AC=[Wa,Pa,za],Qs,aw=(Qs=class extends F{constructor(e={}){super(),Wa in e&&(this.issuerName=g(e,Wa,Qs.defaultValues(Wa))),Pa in e&&(this.baseCertificateID=g(e,Pa,Qs.defaultValues(Pa))),za in e&&(this.objectDigestInfo=g(e,za,Qs.defaultValues(za))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Wa:return new nt;case Pa:return new Ws;case za:return new Ui;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[nt.schema({names:{blockName:t.issuerName}},!0),new v({optional:!0,name:t.baseCertificateID||w,idBlock:{tagClass:3,tagNumber:0},value:Ws.schema().valueBlock.value}),new v({optional:!0,name:t.objectDigestInfo||w,idBlock:{tagClass:3,tagNumber:1},value:Ui.schema().valueBlock.value})]})}fromSchema(e){Y(e,AC);let t=H(e,e,Qs.schema({names:{issuerName:Wa,baseCertificateID:Pa,objectDigestInfo:za}}));R.assertSchema(t,this.className),Wa in t.result&&(this.issuerName=new nt({schema:t.result.issuerName})),Pa in t.result&&(this.baseCertificateID=new Ws({schema:new M({value:t.result.baseCertificateID.valueBlock.value})})),za in t.result&&(this.objectDigestInfo=new Ui({schema:new M({value:t.result.objectDigestInfo.valueBlock.value})}))}toSchema(){let e=new M;return this.issuerName&&e.valueBlock.value.push(this.issuerName.toSchema()),this.baseCertificateID&&e.valueBlock.value.push(new v({idBlock:{tagClass:3,tagNumber:0},value:this.baseCertificateID.toSchema().valueBlock.value})),this.objectDigestInfo&&e.valueBlock.value.push(new v({idBlock:{tagClass:3,tagNumber:1},value:this.objectDigestInfo.toSchema().valueBlock.value})),e}toJSON(){let e={};return this.issuerName&&(e.issuerName=this.issuerName.toJSON()),this.baseCertificateID&&(e.baseCertificateID=this.baseCertificateID.toJSON()),this.objectDigestInfo&&(e.objectDigestInfo=this.objectDigestInfo.toJSON()),e}},u(Qs,"dh"),Qs);aw.CLASS_NAME="V2Form";var Za="baseCertificateID",Ka="entityName",qa="objectDigestInfo",gC=[Za,Ka,qa],Vs,dd=(Vs=class extends F{constructor(e={}){super(),Za in e&&(this.baseCertificateID=g(e,Za,Vs.defaultValues(Za))),Ka in e&&(this.entityName=g(e,Ka,Vs.defaultValues(Ka))),qa in e&&(this.objectDigestInfo=g(e,qa,Vs.defaultValues(qa))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Za:return new Ws;case Ka:return new nt;case qa:return new Ui;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new v({optional:!0,name:t.baseCertificateID||w,idBlock:{tagClass:3,tagNumber:0},value:Ws.schema().valueBlock.value}),new v({optional:!0,name:t.entityName||w,idBlock:{tagClass:3,tagNumber:1},value:nt.schema().valueBlock.value}),new v({optional:!0,name:t.objectDigestInfo||w,idBlock:{tagClass:3,tagNumber:2},value:Ui.schema().valueBlock.value})]})}fromSchema(e){Y(e,gC);let t=H(e,e,Vs.schema({names:{baseCertificateID:Za,entityName:Ka,objectDigestInfo:qa}}));R.assertSchema(t,this.className),Za in t.result&&(this.baseCertificateID=new Ws({schema:new M({value:t.result.baseCertificateID.valueBlock.value})})),Ka in t.result&&(this.entityName=new nt({schema:new M({value:t.result.entityName.valueBlock.value})})),qa in t.result&&(this.objectDigestInfo=new Ui({schema:new M({value:t.result.objectDigestInfo.valueBlock.value})}))}toSchema(){let e=new M;return this.baseCertificateID&&e.valueBlock.value.push(new v({idBlock:{tagClass:3,tagNumber:0},value:this.baseCertificateID.toSchema().valueBlock.value})),this.entityName&&e.valueBlock.value.push(new v({idBlock:{tagClass:3,tagNumber:1},value:this.entityName.toSchema().valueBlock.value})),this.objectDigestInfo&&e.valueBlock.value.push(new v({idBlock:{tagClass:3,tagNumber:2},value:this.objectDigestInfo.toSchema().valueBlock.value})),e}toJSON(){let e={};return this.baseCertificateID&&(e.baseCertificateID=this.baseCertificateID.toJSON()),this.entityName&&(e.entityName=this.entityName.toJSON()),this.objectDigestInfo&&(e.objectDigestInfo=this.objectDigestInfo.toJSON()),e}},u(Vs,"Ih"),Vs);dd.CLASS_NAME="Holder";var uA="version",hA="holder",AA="issuer",gA="signature",dA="serialNumber",mA="attrCertValidityPeriod",fA="attributes",Xa="issuerUniqueID",$a="extensions",dC=[uA,hA,AA,gA,dA,mA,fA,Xa,$a],_e,md=(_e=class extends F{constructor(e={}){super(),this.version=g(e,uA,_e.defaultValues(uA)),this.holder=g(e,hA,_e.defaultValues(hA)),this.issuer=g(e,AA,_e.defaultValues(AA)),this.signature=g(e,gA,_e.defaultValues(gA)),this.serialNumber=g(e,dA,_e.defaultValues(dA)),this.attrCertValidityPeriod=g(e,mA,_e.defaultValues(mA)),this.attributes=g(e,fA,_e.defaultValues(fA)),Xa in e&&(this.issuerUniqueID=g(e,Xa,_e.defaultValues(Xa))),$a in e&&(this.extensions=g(e,$a,_e.defaultValues($a))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case uA:return 1;case hA:return new dd;case AA:return{};case gA:return new k;case dA:return new x;case mA:return new Ti;case fA:return[];case Xa:return new ue;case $a:return new Le;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.version||w}),dd.schema(t.holder||{}),new Ce({value:[nt.schema({names:{blockName:t.issuer||w}}),new v({name:t.issuer||w,idBlock:{tagClass:3,tagNumber:0},value:aw.schema().valueBlock.value})]}),k.schema(t.signature||{}),new x({name:t.serialNumber||w}),Ti.schema(t.attrCertValidityPeriod||{}),new M({name:t.attributes||w,value:[new ae({value:ke.schema()})]}),new ue({optional:!0,name:t.issuerUniqueID||w}),Le.schema(t.extensions||{},!0)]})}fromSchema(e){Y(e,dC);let t=H(e,e,_e.schema({names:{version:uA,holder:{names:{blockName:hA}},issuer:AA,signature:{names:{blockName:gA}},serialNumber:dA,attrCertValidityPeriod:{names:{blockName:mA}},attributes:fA,issuerUniqueID:Xa,extensions:{names:{blockName:$a}}}}));if(R.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.holder=new dd({schema:t.result.holder}),t.result.issuer.idBlock.tagClass!==3)throw new Error("Incorrect value for 'issuer' in AttributeCertificateInfoV2");this.issuer=new aw({schema:new M({value:t.result.issuer.valueBlock.value})}),this.signature=new k({schema:t.result.signature}),this.serialNumber=t.result.serialNumber,this.attrCertValidityPeriod=new Ti({schema:t.result.attrCertValidityPeriod}),this.attributes=Array.from(t.result.attributes.valueBlock.value,s=>new ke({schema:s})),Xa in t.result&&(this.issuerUniqueID=t.result.issuerUniqueID),$a in t.result&&(this.extensions=new Le({schema:t.result.extensions}))}toSchema(){let e=new M({value:[new x({value:this.version}),this.holder.toSchema(),new v({idBlock:{tagClass:3,tagNumber:0},value:this.issuer.toSchema().valueBlock.value}),this.signature.toSchema(),this.serialNumber,this.attrCertValidityPeriod.toSchema(),new M({value:Array.from(this.attributes,t=>t.toSchema())})]});return this.issuerUniqueID&&e.valueBlock.value.push(this.issuerUniqueID),this.extensions&&e.valueBlock.value.push(this.extensions.toSchema()),e}toJSON(){let e={version:this.version,holder:this.holder.toJSON(),issuer:this.issuer.toJSON(),signature:this.signature.toJSON(),serialNumber:this.serialNumber.toJSON(),attrCertValidityPeriod:this.attrCertValidityPeriod.toJSON(),attributes:Array.from(this.attributes,t=>t.toJSON())};return this.issuerUniqueID&&(e.issuerUniqueID=this.issuerUniqueID.toJSON()),this.extensions&&(e.extensions=this.extensions.toJSON()),e}},u(_e,"kh"),_e);md.CLASS_NAME="AttributeCertificateInfoV2";var wA="acinfo",BA="signatureAlgorithm",pA="signatureValue",mC=[wA,BA,pA],Ss,Pr=(Ss=class extends F{constructor(e={}){super(),this.acinfo=g(e,wA,Ss.defaultValues(wA)),this.signatureAlgorithm=g(e,BA,Ss.defaultValues(BA)),this.signatureValue=g(e,pA,Ss.defaultValues(pA)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case wA:return new md;case BA:return new k;case pA:return new ue;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[md.schema(t.acinfo||{}),k.schema(t.signatureAlgorithm||{}),new ue({name:t.signatureValue||w})]})}fromSchema(e){Y(e,mC);let t=H(e,e,Ss.schema({names:{acinfo:{names:{blockName:wA}},signatureAlgorithm:{names:{blockName:BA}},signatureValue:pA}}));R.assertSchema(t,this.className),this.acinfo=new md({schema:t.result.acinfo}),this.signatureAlgorithm=new k({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}toSchema(){return new M({value:[this.acinfo.toSchema(),this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){return{acinfo:this.acinfo.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()}}},u(Ss,"Rh"),Ss);Pr.CLASS_NAME="AttributeCertificateV2";var _a="contentType",vo="content",fC=[_a,vo],Qn,De=(Qn=class extends F{constructor(e={}){super(),this.contentType=g(e,_a,Qn.defaultValues(_a)),this.content=g(e,vo,Qn.defaultValues(vo)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case _a:return w;case vo:return new re;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case _a:return typeof t=="string"&&t===this.defaultValues(_a);case vo:return t instanceof re;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return!("optional"in t)&&(t.optional=!1),new M({name:t.blockName||"ContentInfo",optional:t.optional,value:[new z({name:t.contentType||_a}),new v({idBlock:{tagClass:3,tagNumber:0},value:[new re({name:t.content||vo})]})]})}fromSchema(e){Y(e,fC);let t=H(e,e,Qn.schema());R.assertSchema(t,this.className),this.contentType=t.result.contentType.valueBlock.toString(),this.content=t.result.content}toSchema(){return new M({value:[new z({value:this.contentType}),new v({idBlock:{tagClass:3,tagNumber:0},value:[this.content]})]})}toJSON(){let e={contentType:this.contentType};return this.content instanceof re||(e.content=this.content.toJSON()),e}},u(Qn,"Jh"),Qn);De.CLASS_NAME="ContentInfo",De.DATA=zw,De.SIGNED_DATA=hy,De.ENVELOPED_DATA=Ay,De.ENCRYPTED_DATA=gy;var uf="type",hf="value",iw="utcTimeName",ow="generalTimeName",wC=[iw,ow],rE;(function(i){i[i.UTCTime=0]="UTCTime",i[i.GeneralizedTime=1]="GeneralizedTime",i[i.empty=2]="empty"})(rE||(rE={}));var Vn,ut=(Vn=class extends F{constructor(e={}){super(),this.type=g(e,uf,Vn.defaultValues(uf)),this.value=g(e,hf,Vn.defaultValues(hf)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case uf:return 0;case hf:return new Date(0,0,0);default:return super.defaultValues(e)}}static schema(e={},t=!1){let s=g(e,"names",{});return new Ce({optional:t,value:[new ku({name:s.utcTimeName||w}),new Ie({name:s.generalTimeName||w})]})}fromSchema(e){Y(e,wC);let t=H(e,e,Vn.schema({names:{utcTimeName:iw,generalTimeName:ow}}));R.assertSchema(t,this.className),iw in t.result&&(this.type=0,this.value=t.result.utcTimeName.toDate()),ow in t.result&&(this.type=1,this.value=t.result.generalTimeName.toDate())}toSchema(){return this.type===0?new ku({valueDate:this.value}):this.type===1?new Ie({valueDate:this.value}):{}}toJSON(){return{type:this.type,value:this.value}}},u(Vn,"Kh"),Vn);ut.CLASS_NAME="Time";var Af="tbs",Cr="version",fd="serialNumber",wd="signature",Bd="issuer",pd="notBefore",Ed="notAfter",yd="subject",Id="subjectPublicKeyInfo",EA="issuerUniqueID",yA="subjectUniqueID",IA="extensions",CA="signatureAlgorithm",MA="signatureValue",Ut="tbsCertificate",rm=`${Ut}.${Cr}`,qw=`${Ut}.${fd}`,Xw=`${Ut}.${wd}`,$w=`${Ut}.${Bd}`,am=`${Ut}.${pd}`,im=`${Ut}.${Ed}`,_w=`${Ut}.${yd}`,eB=`${Ut}.${Id}`,om=`${Ut}.${EA}`,cm=`${Ut}.${yA}`,ng=`${Ut}.${IA}`,BC=[Ut,rm,qw,Xw,$w,am,im,_w,eB,om,cm,ng,CA,MA];function pC(i={}){let e=g(i,"names",{});return new M({name:e.blockName||Ut,value:[new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new x({name:e.tbsCertificateVersion||rm})]}),new x({name:e.tbsCertificateSerialNumber||qw}),k.schema(e.signature||{names:{blockName:Xw}}),ye.schema(e.issuer||{names:{blockName:$w}}),new M({name:e.tbsCertificateValidity||"tbsCertificate.validity",value:[ut.schema(e.notBefore||{names:{utcTimeName:am,generalTimeName:am}}),ut.schema(e.notAfter||{names:{utcTimeName:im,generalTimeName:im}})]}),ye.schema(e.subject||{names:{blockName:_w}}),us.schema(e.subjectPublicKeyInfo||{names:{blockName:eB}}),new se({name:e.tbsCertificateIssuerUniqueID||om,optional:!0,idBlock:{tagClass:3,tagNumber:1}}),new se({name:e.tbsCertificateSubjectUniqueID||cm,optional:!0,idBlock:{tagClass:3,tagNumber:2}}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:3},value:[Le.schema(e.extensions||{names:{blockName:ng}})]})]})}u(pC,"yu");var be,rt=(be=class extends F{get tbs(){return ne.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(g(e,Af,be.defaultValues(Af))),this.version=g(e,Cr,be.defaultValues(Cr)),this.serialNumber=g(e,fd,be.defaultValues(fd)),this.signature=g(e,wd,be.defaultValues(wd)),this.issuer=g(e,Bd,be.defaultValues(Bd)),this.notBefore=g(e,pd,be.defaultValues(pd)),this.notAfter=g(e,Ed,be.defaultValues(Ed)),this.subject=g(e,yd,be.defaultValues(yd)),this.subjectPublicKeyInfo=g(e,Id,be.defaultValues(Id)),EA in e&&(this.issuerUniqueID=g(e,EA,be.defaultValues(EA))),yA in e&&(this.subjectUniqueID=g(e,yA,be.defaultValues(yA))),IA in e&&(this.extensions=g(e,IA,be.defaultValues(IA))),this.signatureAlgorithm=g(e,CA,be.defaultValues(CA)),this.signatureValue=g(e,MA,be.defaultValues(MA)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Af:return Re;case Cr:return 0;case fd:return new x;case wd:return new k;case Bd:return new ye;case pd:case Ed:return new ut;case yd:return new ye;case Id:return new us;case EA:case yA:return Re;case IA:return[];case CA:return new k;case MA:return new ue;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[pC(t.tbsCertificate),k.schema(t.signatureAlgorithm||{names:{blockName:CA}}),new ue({name:t.signatureValue||MA})]})}fromSchema(e){Y(e,BC);let t=H(e,e,be.schema({names:{tbsCertificate:{names:{extensions:{names:{extensions:ng}}}}}}));R.assertSchema(t,this.className),this.tbsView=t.result.tbsCertificate.valueBeforeDecodeView,rm in t.result&&(this.version=t.result[rm].valueBlock.valueDec),this.serialNumber=t.result[qw],this.signature=new k({schema:t.result[Xw]}),this.issuer=new ye({schema:t.result[$w]}),this.notBefore=new ut({schema:t.result[am]}),this.notAfter=new ut({schema:t.result[im]}),this.subject=new ye({schema:t.result[_w]}),this.subjectPublicKeyInfo=new us({schema:t.result[eB]}),om in t.result&&(this.issuerUniqueID=t.result[om].valueBlock.valueHex),cm in t.result&&(this.subjectUniqueID=t.result[cm].valueBlock.valueHex),ng in t.result&&(this.extensions=Array.from(t.result[ng],s=>new xt({schema:s}))),this.signatureAlgorithm=new k({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}encodeTBS(){let e=[];return Cr in this&&this.version!==be.defaultValues(Cr)&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new x({value:this.version})]})),e.push(this.serialNumber),e.push(this.signature.toSchema()),e.push(this.issuer.toSchema()),e.push(new M({value:[this.notBefore.toSchema(),this.notAfter.toSchema()]})),e.push(this.subject.toSchema()),e.push(this.subjectPublicKeyInfo.toSchema()),this.issuerUniqueID&&e.push(new se({optional:!0,idBlock:{tagClass:3,tagNumber:1},valueHex:this.issuerUniqueID})),this.subjectUniqueID&&e.push(new se({optional:!0,idBlock:{tagClass:3,tagNumber:2},valueHex:this.subjectUniqueID})),this.extensions&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:3},value:[new M({value:Array.from(this.extensions,t=>t.toSchema())})]})),new M({value:e})}toSchema(e=!1){let t;if(e===!1){if(!this.tbsView.byteLength)return be.schema().value[0];let s=Qe(this.tbsView);R.assert(s,"TBS Certificate"),t=s.result}else t=this.encodeTBS();return new M({value:[t,this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){let e={tbs:ie.ToHex(this.tbsView),version:this.version,serialNumber:this.serialNumber.toJSON(),signature:this.signature.toJSON(),issuer:this.issuer.toJSON(),notBefore:this.notBefore.toJSON(),notAfter:this.notAfter.toJSON(),subject:this.subject.toJSON(),subjectPublicKeyInfo:this.subjectPublicKeyInfo.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()};return Cr in this&&this.version!==be.defaultValues(Cr)&&(e.version=this.version),this.issuerUniqueID&&(e.issuerUniqueID=ie.ToHex(this.issuerUniqueID)),this.subjectUniqueID&&(e.subjectUniqueID=ie.ToHex(this.subjectUniqueID)),this.extensions&&(e.extensions=Array.from(this.extensions,t=>t.toJSON())),e}async getPublicKey(e,t=ce(!0)){return t.getPublicKey(this.subjectPublicKeyInfo,this.signatureAlgorithm,e)}async getKeyHash(e="SHA-1",t=ce(!0)){return t.digest({name:e},this.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView)}async sign(e,t="SHA-1",s=ce(!0)){if(!e)throw new Error("Need to provide a private key for signing");let n=await s.getSignatureParameters(e,t),r=n.parameters;this.signature=n.signatureAlgorithm,this.signatureAlgorithm=n.signatureAlgorithm,this.tbsView=new Uint8Array(this.encodeTBS().toBER());let a=await s.signWithPrivateKey(this.tbsView,e,r);this.signatureValue=new ue({valueHex:a})}async verify(e,t=ce(!0)){let s;if(e?s=e.subjectPublicKeyInfo:this.issuer.isEqual(this.subject)&&(s=this.subjectPublicKeyInfo),!(s instanceof us))throw new Error("Please provide issuer certificate as a parameter");return t.verifyWithPublicKey(this.tbsView,this.signatureValue,s,this.signatureAlgorithm)}},u(be,"Cu"),be);function Vy(i,e=null){if(e&&i.issuer.isEqual(e.issuer)&&i.serialNumber.isEqual(e.serialNumber))return null;let t=!1;if(i.extensions){for(let s of i.extensions)if(s.extnID===Lw&&s.parsedValue instanceof Kw&&s.parsedValue.cA){t=!0;break}}return t?i:null}u(Vy,"Mu");rt.CLASS_NAME="Certificate";var Do="certId",Qo="certValue",co="parsedValue",EC=[Do,Qo],ks,Sy=(ks=class extends F{constructor(e={}){super(),this.certId=g(e,Do,ks.defaultValues(Do)),this.certValue=g(e,Qo,ks.defaultValues(Qo)),co in e&&(this.parsedValue=g(e,co,ks.defaultValues(co))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Do:return w;case Qo:return new re;case co:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Do:return t===w;case Qo:return t instanceof re;case co:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.id||"id"}),new v({idBlock:{tagClass:3,tagNumber:0},value:[new re({name:t.value||"value"})]})]})}fromSchema(e){Y(e,EC);let t=H(e,e,ks.schema({names:{id:Do,value:Qo}}));R.assertSchema(t,this.className),this.certId=t.result.certId.valueBlock.toString(),this.certValue=t.result.certValue;let s=this.certValue.valueBlock.valueHexView;switch(this.certId){case Lp:try{this.parsedValue=rt.fromBER(s)}catch{Pr.fromBER(s)}break;case Op:this.parsedValue=Pr.fromBER(s);break;default:throw new Error(`Incorrect CERT_ID value in CertBag: ${this.certId}`)}}toSchema(){return co in this&&("acinfo"in this.parsedValue?this.certId=Op:this.certId=Lp,this.certValue=new J({valueHex:this.parsedValue.toSchema().toBER(!1)})),new M({value:[new z({value:this.certId}),new v({idBlock:{tagClass:3,tagNumber:0},value:["toSchema"in this.certValue?this.certValue.toSchema():this.certValue]})]})}toJSON(){return{certId:this.certId,certValue:this.certValue.toJSON()}}},u(ks,"vu"),ks);Sy.CLASS_NAME="CertBag";var bA="userCertificate",Vo="revocationDate",ei="crlEntryExtensions",yC=[bA,Vo,ei],xs,ky=(xs=class extends F{constructor(e={}){super(),this.userCertificate=g(e,bA,xs.defaultValues(bA)),this.revocationDate=g(e,Vo,xs.defaultValues(Vo)),ei in e&&(this.crlEntryExtensions=g(e,ei,xs.defaultValues(ei))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case bA:return new x;case Vo:return new ut;case ei:return new Le;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.userCertificate||bA}),ut.schema({names:{utcTimeName:t.revocationDate||Vo,generalTimeName:t.revocationDate||Vo}}),Le.schema({names:{blockName:t.crlEntryExtensions||ei}},!0)]})}fromSchema(e){Y(e,yC);let t=H(e,e,xs.schema());R.assertSchema(t,this.className),this.userCertificate=t.result.userCertificate,this.revocationDate=new ut({schema:t.result.revocationDate}),ei in t.result&&(this.crlEntryExtensions=new Le({schema:t.result.crlEntryExtensions}))}toSchema(){let e=[this.userCertificate,this.revocationDate.toSchema()];return this.crlEntryExtensions&&e.push(this.crlEntryExtensions.toSchema()),new M({value:e})}toJSON(){let e={userCertificate:this.userCertificate.toJSON(),revocationDate:this.revocationDate.toJSON()};return this.crlEntryExtensions&&(e.crlEntryExtensions=this.crlEntryExtensions.toJSON()),e}},u(xs,"Uu"),xs);ky.CLASS_NAME="RevokedCertificate";var gf="tbs",Xu="version",df="signature",mf="issuer",ff="thisUpdate",Pg="nextUpdate",zg="revokedCertificates",Zg="crlExtensions",NA="signatureAlgorithm",vA="signatureValue",Zn="tbsCertList",lm=`${Zn}.version`,tB=`${Zn}.signature`,sB=`${Zn}.issuer`,um=`${Zn}.thisUpdate`,pg=`${Zn}.nextUpdate`,hm=`${Zn}.revokedCertificates`,Am=`${Zn}.extensions`,IC=[Zn,lm,tB,sB,um,pg,hm,Am,NA,vA];function CC(i={}){let e=g(i,"names",{});return new M({name:e.blockName||Zn,value:[new x({optional:!0,name:e.tbsCertListVersion||lm,value:2}),k.schema(e.signature||{names:{blockName:tB}}),ye.schema(e.issuer||{names:{blockName:sB}}),ut.schema(e.tbsCertListThisUpdate||{names:{utcTimeName:um,generalTimeName:um}}),ut.schema(e.tbsCertListNextUpdate||{names:{utcTimeName:pg,generalTimeName:pg}},!0),new M({optional:!0,value:[new ae({name:e.tbsCertListRevokedCertificates||hm,value:new M({value:[new x,ut.schema(),Le.schema({},!0)]})})]}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[Le.schema(e.crlExtensions||{names:{blockName:Am}})]})]})}u(CC,"eA");var MC=[Ww,ny,"2.5.29.20","2.5.29.27",ry,Ow,Pw,"2.5.29.21","2.5.29.24",ay],Ue,Eg=(Ue=class extends F{get tbs(){return ne.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(g(e,gf,Ue.defaultValues(gf))),this.version=g(e,Xu,Ue.defaultValues(Xu)),this.signature=g(e,df,Ue.defaultValues(df)),this.issuer=g(e,mf,Ue.defaultValues(mf)),this.thisUpdate=g(e,ff,Ue.defaultValues(ff)),Pg in e&&(this.nextUpdate=g(e,Pg,Ue.defaultValues(Pg))),zg in e&&(this.revokedCertificates=g(e,zg,Ue.defaultValues(zg))),Zg in e&&(this.crlExtensions=g(e,Zg,Ue.defaultValues(Zg))),this.signatureAlgorithm=g(e,NA,Ue.defaultValues(NA)),this.signatureValue=g(e,vA,Ue.defaultValues(vA)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case gf:return Re;case Xu:return 0;case df:return new k;case mf:return new ye;case ff:case Pg:return new ut;case zg:return[];case Zg:return new Le;case NA:return new k;case vA:return new ue;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||"CertificateList",value:[CC(e),k.schema(t.signatureAlgorithm||{names:{blockName:NA}}),new ue({name:t.signatureValue||vA})]})}fromSchema(e){Y(e,IC);let t=H(e,e,Ue.schema());R.assertSchema(t,this.className),this.tbsView=t.result.tbsCertList.valueBeforeDecodeView,lm in t.result&&(this.version=t.result[lm].valueBlock.valueDec),this.signature=new k({schema:t.result[tB]}),this.issuer=new ye({schema:t.result[sB]}),this.thisUpdate=new ut({schema:t.result[um]}),pg in t.result&&(this.nextUpdate=new ut({schema:t.result[pg]})),hm in t.result&&(this.revokedCertificates=Array.from(t.result[hm],s=>new ky({schema:s}))),Am in t.result&&(this.crlExtensions=new Le({schema:t.result[Am]})),this.signatureAlgorithm=new k({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}encodeTBS(){let e=[];return this.version!==Ue.defaultValues(Xu)&&e.push(new x({value:this.version})),e.push(this.signature.toSchema()),e.push(this.issuer.toSchema()),e.push(this.thisUpdate.toSchema()),this.nextUpdate&&e.push(this.nextUpdate.toSchema()),this.revokedCertificates&&e.push(new M({value:Array.from(this.revokedCertificates,t=>t.toSchema())})),this.crlExtensions&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[this.crlExtensions.toSchema()]})),new M({value:e})}toSchema(e=!1){let t;if(e)t=this.encodeTBS();else{if(!this.tbsView.byteLength)return Ue.schema();let s=Qe(this.tbsView);R.assert(s,"TBS Certificate Revocation List"),t=s.result}return new M({value:[t,this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){let e={tbs:ie.ToHex(this.tbsView),version:this.version,signature:this.signature.toJSON(),issuer:this.issuer.toJSON(),thisUpdate:this.thisUpdate.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()};return this.version!==Ue.defaultValues(Xu)&&(e.version=this.version),this.nextUpdate&&(e.nextUpdate=this.nextUpdate.toJSON()),this.revokedCertificates&&(e.revokedCertificates=Array.from(this.revokedCertificates,t=>t.toJSON())),this.crlExtensions&&(e.crlExtensions=this.crlExtensions.toJSON()),e}isCertificateRevoked(e){if(!this.issuer.isEqual(e.issuer)||!this.revokedCertificates)return!1;for(let t of this.revokedCertificates)if(t.userCertificate.isEqual(e.serialNumber))return!0;return!1}async sign(e,t="SHA-1",s=ce(!0)){if(!e)throw new Error("Need to provide a private key for signing");let n=await s.getSignatureParameters(e,t),{parameters:r}=n;this.signature=n.signatureAlgorithm,this.signatureAlgorithm=n.signatureAlgorithm,this.tbsView=new Uint8Array(this.encodeTBS().toBER());let a=await s.signWithPrivateKey(this.tbsView,e,r);this.signatureValue=new ue({valueHex:a})}async verify(e={},t=ce(!0)){let s;if(e.issuerCertificate&&(s=e.issuerCertificate.subjectPublicKeyInfo,!this.issuer.isEqual(e.issuerCertificate.subject)))return!1;if(e.publicKeyInfo&&(s=e.publicKeyInfo),!s)throw new Error("Issuer's certificate must be provided as an input parameter");if(this.crlExtensions){for(let n of this.crlExtensions.extensions)if(n.critical&&!MC.includes(n.extnID))return!1}return t.verifyWithPublicKey(this.tbsView,this.signatureValue,s,this.signatureAlgorithm)}},u(Ue,"sA"),Ue);Eg.CLASS_NAME="CertificateRevocationList";var So="crlId",ko="crlValue",$u="parsedValue",bC=[So,ko],Ts,xy=(Ts=class extends F{constructor(e={}){super(),this.crlId=g(e,So,Ts.defaultValues(So)),this.crlValue=g(e,ko,Ts.defaultValues(ko)),$u in e&&(this.parsedValue=g(e,$u,Ts.defaultValues($u))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case So:return w;case ko:return new re;case $u:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case So:return t===w;case ko:return t instanceof re;case $u:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.id||"id"}),new v({idBlock:{tagClass:3,tagNumber:0},value:[new re({name:t.value||"value"})]})]})}fromSchema(e){Y(e,bC);let t=H(e,e,Ts.schema({names:{id:So,value:ko}}));if(R.assertSchema(t,this.className),this.crlId=t.result.crlId.valueBlock.toString(),this.crlValue=t.result.crlValue,this.crlId!==Wp)throw new Error(`Incorrect CRL_ID value in CRLBag: ${this.crlId}`);this.parsedValue=Eg.fromBER(this.certValue.valueBlock.valueHex)}toSchema(){return this.parsedValue&&(this.crlId=Wp,this.crlValue=new J({valueHex:this.parsedValue.toSchema().toBER(!1)})),new M({value:[new z({value:this.crlId}),new v({idBlock:{tagClass:3,tagNumber:0},value:[this.crlValue.toSchema()]})]})}toJSON(){return{crlId:this.crlId,crlValue:this.crlValue.toJSON()}}},u(Ts,"oA"),Ts);xy.CLASS_NAME="CRLBag";var xo="version",To="encryptedContentInfo",Mr="unprotectedAttrs",NC=[xo,To,Mr],Us,yg=(Us=class extends F{constructor(e={}){super(),this.version=g(e,xo,Us.defaultValues(xo)),this.encryptedContentInfo=g(e,To,Us.defaultValues(To)),Mr in e&&(this.unprotectedAttrs=g(e,Mr,Us.defaultValues(Mr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case xo:return 0;case To:return new st;case Mr:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case xo:return t===0;case To:return st.compareWithDefault("contentType",t.contentType)&&st.compareWithDefault("contentEncryptionAlgorithm",t.contentEncryptionAlgorithm)&&st.compareWithDefault("encryptedContent",t.encryptedContent);case Mr:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.version||w}),st.schema(t.encryptedContentInfo||{}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new ae({name:t.unprotectedAttrs||w,value:ke.schema()})]})]})}fromSchema(e){Y(e,NC);let t=H(e,e,Us.schema({names:{version:xo,encryptedContentInfo:{names:{blockName:To}},unprotectedAttrs:Mr}}));R.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.encryptedContentInfo=new st({schema:t.result.encryptedContentInfo}),Mr in t.result&&(this.unprotectedAttrs=Array.from(t.result.unprotectedAttrs,s=>new ke({schema:s})))}toSchema(){let e=[];return e.push(new x({value:this.version})),e.push(this.encryptedContentInfo.toSchema()),this.unprotectedAttrs&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.unprotectedAttrs,t=>t.toSchema())})),new M({value:e})}toJSON(){let e={version:this.version,encryptedContentInfo:this.encryptedContentInfo.toJSON()};return this.unprotectedAttrs&&(e.unprotectedAttrs=Array.from(this.unprotectedAttrs,t=>t.toJSON())),e}async encrypt(e,t=ce(!0)){Be.assert(e,"parameters","object");let s={...e,contentType:"1.2.840.113549.1.7.1"};this.encryptedContentInfo=await t.encryptEncryptedContentInfo(s)}async decrypt(e,t=ce(!0)){Be.assert(e,"parameters","object");let s={...e,encryptedContentInfo:this.encryptedContentInfo};return t.decryptEncryptedContentInfo(s)}},u(Us,"AA"),Us);yg.CLASS_NAME="EncryptedData";var ti="encryptionAlgorithm",br="encryptedData",_u="parsedValue",vC=[ti,br],ss,Ty=(ss=class extends F{constructor(e={}){super(),this.encryptionAlgorithm=g(e,ti,ss.defaultValues(ti)),this.encryptedData=g(e,br,ss.defaultValues(br)),_u in e&&(this.parsedValue=g(e,_u,ss.defaultValues(_u))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ti:return new k;case br:return new J;case _u:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ti:return k.compareWithDefault("algorithmId",t.algorithmId)&&!("algorithmParams"in t);case br:return t.isEqual(ss.defaultValues(e));case _u:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[k.schema(t.encryptionAlgorithm||{names:{blockName:ti}}),new Ce({value:[new J({name:t.encryptedData||br}),new J({idBlock:{isConstructed:!0},name:t.encryptedData||br})]})]})}fromSchema(e){Y(e,vC);let t=H(e,e,ss.schema({names:{encryptionAlgorithm:{names:{blockName:ti}},encryptedData:br}}));R.assertSchema(t,this.className),this.encryptionAlgorithm=new k({schema:t.result.encryptionAlgorithm}),this.encryptedData=t.result.encryptedData}toSchema(){return new M({value:[this.encryptionAlgorithm.toSchema(),this.encryptedData]})}toJSON(){return{encryptionAlgorithm:this.encryptionAlgorithm.toJSON(),encryptedData:this.encryptedData.toJSON()}}async parseInternalValues(e,t=ce(!0)){let s=new yg({encryptedContentInfo:new st({contentEncryptionAlgorithm:this.encryptionAlgorithm,encryptedContent:this.encryptedData})}),n=await s.decrypt(e,t);this.parsedValue=Bg.fromBER(n)}async makeInternalValues(e,t=ce(!0)){if(!this.parsedValue)throw new Error('Please initialize "parsedValue" first');let s=new yg,n={...e,contentToEncrypt:this.parsedValue.toSchema().toBER(!1)};if(await s.encrypt(n,t),!s.encryptedContentInfo.encryptedContent)throw new Error("The filed `encryptedContent` in EncryptedContentInfo is empty");this.encryptionAlgorithm=s.encryptedContentInfo.contentEncryptionAlgorithm,this.encryptedData=s.encryptedContentInfo.encryptedContent}},u(ss,"BA"),ss);Ty.CLASS_NAME="PKCS8ShroudedKeyBag";var Uo="secretTypeId",Ro="secretValue",DC=[Uo,Ro],Sn,Uy=(Sn=class extends F{constructor(e={}){super(),this.secretTypeId=g(e,Uo,Sn.defaultValues(Uo)),this.secretValue=g(e,Ro,Sn.defaultValues(Ro)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Uo:return w;case Ro:return new re;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Uo:return t===w;case Ro:return t instanceof re;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.id||"id"}),new v({idBlock:{tagClass:3,tagNumber:0},value:[new re({name:t.value||"value"})]})]})}fromSchema(e){Y(e,DC);let t=H(e,e,Sn.schema({names:{id:Uo,value:Ro}}));R.assertSchema(t,this.className),this.secretTypeId=t.result.secretTypeId.valueBlock.toString(),this.secretValue=t.result.secretValue}toSchema(){return new M({value:[new z({value:this.secretTypeId}),new v({idBlock:{tagClass:3,tagNumber:0},value:[this.secretValue.toSchema()]})]})}toJSON(){return{secretTypeId:this.secretTypeId,secretValue:this.secretValue.toJSON()}}},u(Sn,"IA"),Sn);Uy.CLASS_NAME="SecretBag";var Ht,QC=(Ht=class{static getItems(){return this.items||(this.items={},Ht.register("1.2.840.113549.1.12.10.1.1",Bg),Ht.register("1.2.840.113549.1.12.10.1.2",Ty),Ht.register("1.2.840.113549.1.12.10.1.3",Sy),Ht.register("1.2.840.113549.1.12.10.1.4",xy),Ht.register("1.2.840.113549.1.12.10.1.5",Uy),Ht.register("1.2.840.113549.1.12.10.1.6",Hc)),this.items}static register(e,t){this.getItems()[e]=t}static find(e){return this.getItems()[e]||null}},u(Ht,"yA"),Ht),si="bagId",ni="bagValue",tn="bagAttributes",VC=[si,ni,tn],Rs,cw=(Rs=class extends F{constructor(e={}){super(),this.bagId=g(e,si,Rs.defaultValues(si)),this.bagValue=g(e,ni,Rs.defaultValues(ni)),tn in e&&(this.bagAttributes=g(e,tn,Rs.defaultValues(tn))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case si:return w;case ni:return new re;case tn:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case si:return t===w;case ni:return t instanceof re;case tn:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.bagId||si}),new v({idBlock:{tagClass:3,tagNumber:0},value:[new re({name:t.bagValue||ni})]}),new Se({optional:!0,value:[new ae({name:t.bagAttributes||tn,value:ke.schema()})]})]})}fromSchema(e){Y(e,VC);let t=H(e,e,Rs.schema({names:{bagId:si,bagValue:ni,bagAttributes:tn}}));R.assertSchema(t,this.className),this.bagId=t.result.bagId.valueBlock.toString();let s=QC.find(this.bagId);if(!s)throw new Error(`Invalid BAG_ID for SafeBag: ${this.bagId}`);this.bagValue=new s({schema:t.result.bagValue}),tn in t.result&&(this.bagAttributes=Array.from(t.result.bagAttributes,n=>new ke({schema:n})))}toSchema(){let e=[new z({value:this.bagId}),new v({idBlock:{tagClass:3,tagNumber:0},value:[this.bagValue.toSchema()]})];return this.bagAttributes&&e.push(new Se({value:Array.from(this.bagAttributes,t=>t.toSchema())})),new M({value:e})}toJSON(){let e={bagId:this.bagId,bagValue:this.bagValue.toJSON()};return this.bagAttributes&&(e.bagAttributes=Array.from(this.bagAttributes,t=>t.toJSON())),e}},u(Rs,"bA"),Rs);cw.CLASS_NAME="SafeBag";var lo="safeBags",ca,Hc=(ca=class extends F{constructor(e={}){super(),this.safeBags=g(e,lo,ca.defaultValues(lo)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===lo?[]:super.defaultValues(e)}static compareWithDefault(e,t){return e===lo?t.length===0:super.defaultValues(e)}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new ae({name:t.safeBags||w,value:cw.schema()})]})}fromSchema(e){Y(e,[lo]);let t=H(e,e,ca.schema({names:{safeBags:lo}}));R.assertSchema(t,this.className),this.safeBags=Array.from(t.result.safeBags,s=>new cw({schema:s}))}toSchema(){return new M({value:Array.from(this.safeBags,e=>e.toSchema())})}toJSON(){return{safeBags:Array.from(this.safeBags,e=>e.toJSON())}}},u(ca,"vA"),ca);Hc.CLASS_NAME="SafeContents";var DA="otherCertFormat",QA="otherCert",SC=[DA,QA],kn,Cd=(kn=class extends F{constructor(e={}){super(),this.otherCertFormat=g(e,DA,kn.defaultValues(DA)),this.otherCert=g(e,QA,kn.defaultValues(QA)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case DA:return w;case QA:return new re;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.otherCertFormat||DA}),new re({name:t.otherCert||QA})]})}fromSchema(e){Y(e,SC);let t=H(e,e,kn.schema());R.assertSchema(t,this.className),this.otherCertFormat=t.result.otherCertFormat.valueBlock.toString(),this.otherCert=t.result.otherCert}toSchema(){return new M({value:[new z({value:this.otherCertFormat}),this.otherCert]})}toJSON(){let e={otherCertFormat:this.otherCertFormat};return this.otherCert instanceof re||(e.otherCert=this.otherCert.toJSON()),e}},u(kn,"TA"),kn),VA="certificates",kC=[VA],la,Ri=(la=class extends F{constructor(e={}){super(),this.certificates=g(e,VA,la.defaultValues(VA)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===VA?[]:super.defaultValues(e)}static schema(e={}){let t=g(e,"names",{});return new Se({name:t.blockName||w,value:[new ae({name:t.certificates||VA,value:new Ce({value:[rt.schema(),new v({idBlock:{tagClass:3,tagNumber:0},value:[new re]}),new v({idBlock:{tagClass:3,tagNumber:1},value:[new M]}),new v({idBlock:{tagClass:3,tagNumber:2},value:Pr.schema().valueBlock.value}),new v({idBlock:{tagClass:3,tagNumber:3},value:Cd.schema().valueBlock.value})]})})]})}fromSchema(e){Y(e,kC);let t=H(e,e,la.schema());R.assertSchema(t,this.className),this.certificates=Array.from(t.result.certificates||[],s=>{let n=s.idBlock.tagNumber;if(s.idBlock.tagClass===1)return new rt({schema:s});let r=new M({value:s.valueBlock.value});switch(n){case 1:return r.valueBlock.value[0].valueBlock.value[0].valueBlock.valueDec===1?new Pr({schema:r}):new nm({schema:r});case 2:return new Pr({schema:r});case 3:return new Cd({schema:r})}return s})}toSchema(){return new Se({value:Array.from(this.certificates,e=>{switch(!0){case e instanceof rt:return e.toSchema();case e instanceof nm:return new v({idBlock:{tagClass:3,tagNumber:1},value:e.toSchema().valueBlock.value});case e instanceof Pr:return new v({idBlock:{tagClass:3,tagNumber:2},value:e.toSchema().valueBlock.value});case e instanceof Cd:return new v({idBlock:{tagClass:3,tagNumber:3},value:e.toSchema().valueBlock.value})}return e.toSchema()})})}toJSON(){return{certificates:Array.from(this.certificates,e=>e.toJSON())}}},u(la,"xA"),la);Ri.CLASS_NAME="CertificateSet";var SA="otherRevInfoFormat",kA="otherRevInfo",xC=[SA,kA],xn,rg=(xn=class extends F{constructor(e={}){super(),this.otherRevInfoFormat=g(e,SA,xn.defaultValues(SA)),this.otherRevInfo=g(e,kA,xn.defaultValues(kA)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case SA:return w;case kA:return new re;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.otherRevInfoFormat||SA}),new re({name:t.otherRevInfo||kA})]})}fromSchema(e){Y(e,xC);let t=H(e,e,xn.schema());R.assertSchema(t,this.className),this.otherRevInfoFormat=t.result.otherRevInfoFormat.valueBlock.toString(),this.otherRevInfo=t.result.otherRevInfo}toSchema(){return new M({value:[new z({value:this.otherRevInfoFormat}),this.otherRevInfo]})}toJSON(){let e={otherRevInfoFormat:this.otherRevInfoFormat};return this.otherRevInfo instanceof re||(e.otherRevInfo=this.otherRevInfo.toJSON()),e}},u(xn,"YA"),xn);rg.CLASS_NAME="OtherRevocationInfoFormat";var xA="crls",wf="otherRevocationInfos",TC=[xA],Tn,ag=(Tn=class extends F{constructor(e={}){super(),this.crls=g(e,xA,Tn.defaultValues(xA)),this.otherRevocationInfos=g(e,wf,Tn.defaultValues(wf)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case xA:case wf:return[];default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new Se({name:t.blockName||w,value:[new ae({name:t.crls||w,value:new Ce({value:[Eg.schema(),new v({idBlock:{tagClass:3,tagNumber:1},value:[new z,new re]})]})})]})}fromSchema(e){Y(e,TC);let t=H(e,e,Tn.schema({names:{crls:xA}}));if(R.assertSchema(t,this.className),t.result.crls)for(let s of t.result.crls)s.idBlock.tagClass===1?this.crls.push(new Eg({schema:s})):this.otherRevocationInfos.push(new rg({schema:s}))}toSchema(){let e=[];return e.push(...Array.from(this.crls,t=>t.toSchema())),e.push(...Array.from(this.otherRevocationInfos,t=>{let s=t.toSchema();return s.idBlock.tagClass=3,s.idBlock.tagNumber=1,s})),new Se({value:e})}toJSON(){return{crls:Array.from(this.crls,e=>e.toJSON()),otherRevocationInfos:Array.from(this.otherRevocationInfos,e=>e.toJSON())}}},u(Tn,"LA"),Tn);ag.CLASS_NAME="RevocationInfoChoices";var TA="certs",ri="crls",UC=[TA,ri],ua,Md=(ua=class extends F{constructor(e={}){super(),this.crls=g(e,ri,ua.defaultValues(ri)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case TA:return new Ri;case ri:return new ag;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case TA:return t.certificates.length===0;case ri:return t.crls.length===0&&t.otherRevocationInfos.length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new v({name:t.certs||w,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:Ri.schema().valueBlock.value}),new v({name:t.crls||w,optional:!0,idBlock:{tagClass:3,tagNumber:1},value:ag.schema().valueBlock.value})]})}fromSchema(e){Y(e,UC);let t=H(e,e,ua.schema({names:{certs:TA,crls:ri}}));R.assertSchema(t,this.className),TA in t.result&&(this.certs=new Ri({schema:new Se({value:t.result.certs.valueBlock.value})})),ri in t.result&&(this.crls=new ag({schema:new Se({value:t.result.crls.valueBlock.value})}))}toSchema(){let e=[];return this.certs&&e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:this.certs.toSchema().valueBlock.value})),this.crls&&e.push(new v({idBlock:{tagClass:3,tagNumber:1},value:this.crls.toSchema().valueBlock.value})),new M({value:e})}toJSON(){let e={};return this.certs&&(e.certs=this.certs.toJSON()),this.crls&&(e.crls=this.crls.toJSON()),e}},u(ua,"KA"),ua);Md.CLASS_NAME="OriginatorInfo";var UA="issuer",RA="serialNumber",RC=[UA,RA],Un,Ke=(Un=class extends F{constructor(e={}){super(),this.issuer=g(e,UA,Un.defaultValues(UA)),this.serialNumber=g(e,RA,Un.defaultValues(RA)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case UA:return new ye;case RA:return new x;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[ye.schema(t.issuer||{}),new x({name:t.serialNumber||w})]})}fromSchema(e){Y(e,RC);let t=H(e,e,Un.schema({names:{issuer:{names:{blockName:UA}},serialNumber:RA}}));R.assertSchema(t,this.className),this.issuer=new ye({schema:t.result.issuer}),this.serialNumber=t.result.serialNumber}toSchema(){return new M({value:[this.issuer.toSchema(),this.serialNumber]})}toJSON(){return{issuer:this.issuer.toJSON(),serialNumber:this.serialNumber.toJSON()}}},u(Un,"_A"),Un);Ke.CLASS_NAME="IssuerAndSerialNumber";var Kg="variant",eh="value",GC=["blockName"],Rn,Ry=(Rn=class extends F{constructor(e={}){super(),this.variant=g(e,Kg,Rn.defaultValues(Kg)),eh in e&&(this.value=g(e,eh,Rn.defaultValues(eh))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Kg:return-1;case eh:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Kg:return t===-1;case eh:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new Ce({value:[Ke.schema({names:{blockName:t.blockName||w}}),new se({name:t.blockName||w,idBlock:{tagClass:3,tagNumber:0}})]})}fromSchema(e){Y(e,GC);let t=H(e,e,Rn.schema({names:{blockName:"blockName"}}));R.assertSchema(t,this.className),t.result.blockName.idBlock.tagClass===1?(this.variant=1,this.value=new Ke({schema:t.result.blockName})):(this.variant=2,this.value=new J({valueHex:t.result.blockName.valueBlock.valueHex}))}toSchema(){switch(this.variant){case 1:if(!(this.value instanceof Ke))throw new Error("Incorrect type of RecipientIdentifier.value. It should be IssuerAndSerialNumber.");return this.value.toSchema();case 2:if(!(this.value instanceof J))throw new Error("Incorrect type of RecipientIdentifier.value. It should be ASN.1 OctetString.");return new se({idBlock:{tagClass:3,tagNumber:0},valueHex:this.value.valueBlock.valueHexView});default:return new re}}toJSON(){let e={variant:this.variant};return this.variant!==1&&this.variant!==2||!this.value||(e.value=this.value.toJSON()),e}},u(Rn,"sg"),Rn);Ry.CLASS_NAME="RecipientIdentifier";var ai="version",Go="rid",Fo="keyEncryptionAlgorithm",Ho="encryptedKey",qg="recipientCertificate",FC=[ai,Go,Fo,Ho],ft,gm=(ft=class extends F{constructor(e={}){super(),this.version=g(e,ai,ft.defaultValues(ai)),this.rid=g(e,Go,ft.defaultValues(Go)),this.keyEncryptionAlgorithm=g(e,Fo,ft.defaultValues(Fo)),this.encryptedKey=g(e,Ho,ft.defaultValues(Ho)),this.recipientCertificate=g(e,qg,ft.defaultValues(qg)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ai:return-1;case Go:return{};case Fo:return new k;case Ho:return new J;case qg:return new rt;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ai:return t===ft.defaultValues(ai);case Go:return Object.keys(t).length===0;case Fo:case Ho:return t.isEqual(ft.defaultValues(e));case qg:return!1;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.version||w}),Ry.schema(t.rid||{}),k.schema(t.keyEncryptionAlgorithm||{}),new J({name:t.encryptedKey||w})]})}fromSchema(e){Y(e,FC);let t=H(e,e,ft.schema({names:{version:ai,rid:{names:{blockName:Go}},keyEncryptionAlgorithm:{names:{blockName:Fo}},encryptedKey:Ho}}));R.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,t.result.rid.idBlock.tagClass===3?this.rid=new J({valueHex:t.result.rid.valueBlock.valueHex}):this.rid=new Ke({schema:t.result.rid}),this.keyEncryptionAlgorithm=new k({schema:t.result.keyEncryptionAlgorithm}),this.encryptedKey=t.result.encryptedKey}toSchema(){let e=[];return this.rid instanceof Ke?(this.version=0,e.push(new x({value:this.version})),e.push(this.rid.toSchema())):(this.version=2,e.push(new x({value:this.version})),e.push(new se({idBlock:{tagClass:3,tagNumber:0},valueHex:this.rid.valueBlock.valueHexView}))),e.push(this.keyEncryptionAlgorithm.toSchema()),e.push(this.encryptedKey),new M({value:e})}toJSON(){return{version:this.version,rid:this.rid.toJSON(),keyEncryptionAlgorithm:this.keyEncryptionAlgorithm.toJSON(),encryptedKey:this.encryptedKey.toJSON()}}},u(ft,"cg"),ft);gm.CLASS_NAME="KeyTransRecipientInfo";var Yo="algorithm",jo="publicKey",HC=[Yo,jo],Gs,dm=(Gs=class extends F{constructor(e={}){super(),this.algorithm=g(e,Yo,Gs.defaultValues(Yo)),this.publicKey=g(e,jo,Gs.defaultValues(jo)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Yo:return new k;case jo:return new ue;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Yo:case jo:return t.isEqual(Gs.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[k.schema(t.algorithm||{}),new ue({name:t.publicKey||w})]})}fromSchema(e){Y(e,HC);let t=H(e,e,Gs.schema({names:{algorithm:{names:{blockName:Yo}},publicKey:jo}}));R.assertSchema(t,this.className),this.algorithm=new k({schema:t.result.algorithm}),this.publicKey=t.result.publicKey}toSchema(){return new M({value:[this.algorithm.toSchema(),this.publicKey]})}toJSON(){return{algorithm:this.algorithm.toJSON(),publicKey:this.publicKey.toJSON()}}},u(Gs,"gg"),Gs);dm.CLASS_NAME="OriginatorPublicKey";var Xg="variant",th="value",YC=["blockName"],Gn,ig=(Gn=class extends F{constructor(e={}){super(),this.variant=g(e,Xg,Gn.defaultValues(Xg)),th in e&&(this.value=g(e,th,Gn.defaultValues(th))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Xg:return-1;case th:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Xg:return t===-1;case th:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new Ce({value:[Ke.schema({names:{blockName:t.blockName||w}}),new se({idBlock:{tagClass:3,tagNumber:0},name:t.blockName||w}),new v({idBlock:{tagClass:3,tagNumber:1},name:t.blockName||w,value:dm.schema().valueBlock.value})]})}fromSchema(e){Y(e,YC);let t=H(e,e,Gn.schema({names:{blockName:"blockName"}}));R.assertSchema(t,this.className),t.result.blockName.idBlock.tagClass===1?(this.variant=1,this.value=new Ke({schema:t.result.blockName})):t.result.blockName.idBlock.tagNumber===0?(t.result.blockName.idBlock.tagClass=1,t.result.blockName.idBlock.tagNumber=4,this.variant=2,this.value=t.result.blockName):(this.variant=3,this.value=new dm({schema:new M({value:t.result.blockName.valueBlock.value})}))}toSchema(){switch(this.variant){case 1:return this.value.toSchema();case 2:return this.value.idBlock.tagClass=3,this.value.idBlock.tagNumber=0,this.value;case 3:{let e=this.value.toSchema();return e.idBlock.tagClass=3,e.idBlock.tagNumber=1,e}default:return new re}}toJSON(){let e={variant:this.variant};return this.variant!==1&&this.variant!==2&&this.variant!==3||(e.value=this.value.toJSON()),e}},u(Gn,"Bg"),Gn);ig.CLASS_NAME="OriginatorIdentifierOrKey";var Jo="keyAttrId",ws="keyAttr",jC=[Jo,ws],Fn,Gi=(Fn=class extends F{constructor(e={}){super(),this.keyAttrId=g(e,Jo,Fn.defaultValues(Jo)),ws in e&&(this.keyAttr=g(e,ws,Fn.defaultValues(ws))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Jo:return w;case ws:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Jo:return typeof t=="string"&&t===w;case ws:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({optional:t.optional||!0,name:t.blockName||w,value:[new z({name:t.keyAttrId||w}),new re({optional:!0,name:t.keyAttr||w})]})}fromSchema(e){Y(e,jC);let t=H(e,e,Fn.schema({names:{keyAttrId:Jo,keyAttr:ws}}));R.assertSchema(t,this.className),this.keyAttrId=t.result.keyAttrId.valueBlock.toString(),ws in t.result&&(this.keyAttr=t.result.keyAttr)}toSchema(){let e=[];return e.push(new z({value:this.keyAttrId})),ws in this&&e.push(this.keyAttr),new M({value:e})}toJSON(){let e={keyAttrId:this.keyAttrId};return ws in this&&(e.keyAttr=this.keyAttr.toJSON()),e}},u(Fn,"Ig"),Fn);Gi.CLASS_NAME="OtherKeyAttribute";var ii="subjectKeyIdentifier",Nr="date",vr="other",JC=[ii,Nr,vr],ns,mm=(ns=class extends F{constructor(e={}){super(),this.subjectKeyIdentifier=g(e,ii,ns.defaultValues(ii)),Nr in e&&(this.date=g(e,Nr,ns.defaultValues(Nr))),vr in e&&(this.other=g(e,vr,ns.defaultValues(vr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ii:return new J;case Nr:return new Ie;case vr:return new Gi;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ii:return t.isEqual(ns.defaultValues(ii));case Nr:return t.year===0&&t.month===0&&t.day===0&&t.hour===0&&t.minute===0&&t.second===0&&t.millisecond===0;case vr:return t.keyAttrId===w&&!("keyAttr"in t);default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new J({name:t.subjectKeyIdentifier||w}),new Ie({optional:!0,name:t.date||w}),Gi.schema(t.other||{})]})}fromSchema(e){Y(e,JC);let t=H(e,e,ns.schema({names:{subjectKeyIdentifier:ii,date:Nr,other:{names:{blockName:vr}}}}));R.assertSchema(t,this.className),this.subjectKeyIdentifier=t.result.subjectKeyIdentifier,Nr in t.result&&(this.date=t.result.date),vr in t.result&&(this.other=new Gi({schema:t.result.other}))}toSchema(){let e=[];return e.push(this.subjectKeyIdentifier),this.date&&e.push(this.date),this.other&&e.push(this.other.toSchema()),new M({value:e})}toJSON(){let e={subjectKeyIdentifier:this.subjectKeyIdentifier.toJSON()};return this.date&&(e.date=this.date.toJSON()),this.other&&(e.other=this.other.toJSON()),e}},u(ns,"Ng"),ns);mm.CLASS_NAME="RecipientKeyIdentifier";var $g="variant",_g="value",LC=["blockName"],Hn,Wc=(Hn=class extends F{constructor(e={}){super(),this.variant=g(e,$g,Hn.defaultValues($g)),this.value=g(e,_g,Hn.defaultValues(_g)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case $g:return-1;case _g:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case $g:return t===-1;case _g:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new Ce({value:[Ke.schema(t.issuerAndSerialNumber||{names:{blockName:t.blockName||w}}),new v({name:t.blockName||w,idBlock:{tagClass:3,tagNumber:0},value:mm.schema(t.rKeyId||{names:{blockName:t.blockName||w}}).valueBlock.value})]})}fromSchema(e){Y(e,LC);let t=H(e,e,Hn.schema({names:{blockName:"blockName"}}));R.assertSchema(t,this.className),t.result.blockName.idBlock.tagClass===1?(this.variant=1,this.value=new Ke({schema:t.result.blockName})):(this.variant=2,this.value=new mm({schema:new M({value:t.result.blockName.valueBlock.value})}))}toSchema(){switch(this.variant){case 1:return this.value.toSchema();case 2:return new v({idBlock:{tagClass:3,tagNumber:0},value:this.value.toSchema().valueBlock.value});default:return new re}}toJSON(){let e={variant:this.variant};return this.variant!==1&&this.variant!==2||(e.value=this.value.toJSON()),e}},u(Hn,"Vg"),Hn);Wc.CLASS_NAME="KeyAgreeRecipientIdentifier";var Lo="rid",oi="encryptedKey",OC=[Lo,oi],Fs,fm=(Fs=class extends F{constructor(e={}){super(),this.rid=g(e,Lo,Fs.defaultValues(Lo)),this.encryptedKey=g(e,oi,Fs.defaultValues(oi)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Lo:return new Wc;case oi:return new J;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Lo:return t.variant===-1&&!("value"in t);case oi:return t.isEqual(Fs.defaultValues(oi));default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[Wc.schema(t.rid||{}),new J({name:t.encryptedKey||w})]})}fromSchema(e){Y(e,OC);let t=H(e,e,Fs.schema({names:{rid:{names:{blockName:Lo}},encryptedKey:oi}}));R.assertSchema(t,this.className),this.rid=new Wc({schema:t.result.rid}),this.encryptedKey=t.result.encryptedKey}toSchema(){return new M({value:[this.rid.toSchema(),this.encryptedKey]})}toJSON(){return{rid:this.rid.toJSON(),encryptedKey:this.encryptedKey.toJSON()}}},u(Fs,"Ug"),Fs);fm.CLASS_NAME="RecipientEncryptedKey";var ed="encryptedKeys",Gy="RecipientEncryptedKeys",WC=[Gy],ha,og=(ha=class extends F{constructor(e={}){super(),this.encryptedKeys=g(e,ed,ha.defaultValues(ed)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){return e===ed?[]:super.defaultValues(e)}static compareWithDefault(e,t){return e===ed?t.length===0:super.defaultValues(e)}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new ae({name:t.RecipientEncryptedKeys||w,value:fm.schema()})]})}fromSchema(e){Y(e,WC);let t=H(e,e,ha.schema({names:{RecipientEncryptedKeys:Gy}}));R.assertSchema(t,this.className),this.encryptedKeys=Array.from(t.result.RecipientEncryptedKeys,s=>new fm({schema:s}))}toSchema(){return new M({value:Array.from(this.encryptedKeys,e=>e.toSchema())})}toJSON(){return{encryptedKeys:Array.from(this.encryptedKeys,e=>e.toJSON())}}},u(ha,"Fg"),ha);og.CLASS_NAME="RecipientEncryptedKeys";var Oo="version",Wo="originator",sn="ukm",Po="keyEncryptionAlgorithm",zo="recipientEncryptedKeys",td="recipientCertificate",sd="recipientPublicKey",PC=[Oo,Wo,sn,Po,zo],it,wm=(it=class extends F{constructor(e={}){super(),this.version=g(e,Oo,it.defaultValues(Oo)),this.originator=g(e,Wo,it.defaultValues(Wo)),sn in e&&(this.ukm=g(e,sn,it.defaultValues(sn))),this.keyEncryptionAlgorithm=g(e,Po,it.defaultValues(Po)),this.recipientEncryptedKeys=g(e,zo,it.defaultValues(zo)),this.recipientCertificate=g(e,td,it.defaultValues(td)),this.recipientPublicKey=g(e,sd,it.defaultValues(sd)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Oo:return 0;case Wo:return new ig;case sn:return new J;case Po:return new k;case zo:return new og;case td:return new rt;case sd:return null;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Oo:return t===0;case Wo:return t.variant===-1&&!("value"in t);case sn:return t.isEqual(it.defaultValues(sn));case Po:return t.algorithmId===w&&!("algorithmParams"in t);case zo:return t.encryptedKeys.length===0;case td:case sd:return!1;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.version||w}),new v({idBlock:{tagClass:3,tagNumber:0},value:[ig.schema(t.originator||{})]}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new J({name:t.ukm||w})]}),k.schema(t.keyEncryptionAlgorithm||{}),og.schema(t.recipientEncryptedKeys||{})]})}fromSchema(e){Y(e,PC);let t=H(e,e,it.schema({names:{version:Oo,originator:{names:{blockName:Wo}},ukm:sn,keyEncryptionAlgorithm:{names:{blockName:Po}},recipientEncryptedKeys:{names:{blockName:zo}}}}));R.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.originator=new ig({schema:t.result.originator}),sn in t.result&&(this.ukm=t.result.ukm),this.keyEncryptionAlgorithm=new k({schema:t.result.keyEncryptionAlgorithm}),this.recipientEncryptedKeys=new og({schema:t.result.recipientEncryptedKeys})}toSchema(){let e=[];return e.push(new x({value:this.version})),e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:[this.originator.toSchema()]})),this.ukm&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[this.ukm]})),e.push(this.keyEncryptionAlgorithm.toSchema()),e.push(this.recipientEncryptedKeys.toSchema()),new M({value:e})}toJSON(){let e={version:this.version,originator:this.originator.toJSON(),keyEncryptionAlgorithm:this.keyEncryptionAlgorithm.toJSON(),recipientEncryptedKeys:this.recipientEncryptedKeys.toJSON()};return this.ukm&&(e.ukm=this.ukm.toJSON()),e}},u(it,"Zg"),it);wm.CLASS_NAME="KeyAgreeRecipientInfo";var ci="keyIdentifier",Dr="date",Qr="other",zC=[ci,Dr,Qr],rs,cg=(rs=class extends F{constructor(e={}){super(),this.keyIdentifier=g(e,ci,rs.defaultValues(ci)),Dr in e&&(this.date=g(e,Dr,rs.defaultValues(Dr))),Qr in e&&(this.other=g(e,Qr,rs.defaultValues(Qr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ci:return new J;case Dr:return new Ie;case Qr:return new Gi;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ci:return t.isEqual(rs.defaultValues(ci));case Dr:return t.year===0&&t.month===0&&t.day===0&&t.hour===0&&t.minute===0&&t.second===0&&t.millisecond===0;case Qr:return t.compareWithDefault("keyAttrId",t.keyAttrId)&&!("keyAttr"in t);default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new J({name:t.keyIdentifier||w}),new Ie({optional:!0,name:t.date||w}),Gi.schema(t.other||{})]})}fromSchema(e){Y(e,zC);let t=H(e,e,rs.schema({names:{keyIdentifier:ci,date:Dr,other:{names:{blockName:Qr}}}}));R.assertSchema(t,this.className),this.keyIdentifier=t.result.keyIdentifier,Dr in t.result&&(this.date=t.result.date),Qr in t.result&&(this.other=new Gi({schema:t.result.other}))}toSchema(){let e=[];return e.push(this.keyIdentifier),this.date&&e.push(this.date),this.other&&e.push(this.other.toSchema()),new M({value:e})}toJSON(){let e={keyIdentifier:this.keyIdentifier.toJSON()};return this.date&&(e.date=this.date),this.other&&(e.other=this.other.toJSON()),e}},u(rs,"_g"),rs);cg.CLASS_NAME="KEKIdentifier";var Zo="version",Ko="kekid",qo="keyEncryptionAlgorithm",li="encryptedKey",nd="preDefinedKEK",ZC=[Zo,Ko,qo,li],wt,Bm=(wt=class extends F{constructor(e={}){super(),this.version=g(e,Zo,wt.defaultValues(Zo)),this.kekid=g(e,Ko,wt.defaultValues(Ko)),this.keyEncryptionAlgorithm=g(e,qo,wt.defaultValues(qo)),this.encryptedKey=g(e,li,wt.defaultValues(li)),this.preDefinedKEK=g(e,nd,wt.defaultValues(nd)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Zo:return 0;case Ko:return new cg;case qo:return new k;case li:return new J;case nd:return Re;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case"KEKRecipientInfo":return t===wt.defaultValues(Zo);case Ko:return t.compareWithDefault("keyIdentifier",t.keyIdentifier)&&!("date"in t)&&!("other"in t);case qo:return t.algorithmId===w&&!("algorithmParams"in t);case li:return t.isEqual(wt.defaultValues(li));case nd:return t.byteLength===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.version||w}),cg.schema(t.kekid||{}),k.schema(t.keyEncryptionAlgorithm||{}),new J({name:t.encryptedKey||w})]})}fromSchema(e){Y(e,ZC);let t=H(e,e,wt.schema({names:{version:Zo,kekid:{names:{blockName:Ko}},keyEncryptionAlgorithm:{names:{blockName:qo}},encryptedKey:li}}));R.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.kekid=new cg({schema:t.result.kekid}),this.keyEncryptionAlgorithm=new k({schema:t.result.keyEncryptionAlgorithm}),this.encryptedKey=t.result.encryptedKey}toSchema(){return new M({value:[new x({value:this.version}),this.kekid.toSchema(),this.keyEncryptionAlgorithm.toSchema(),this.encryptedKey]})}toJSON(){return{version:this.version,kekid:this.kekid.toJSON(),keyEncryptionAlgorithm:this.keyEncryptionAlgorithm.toJSON(),encryptedKey:this.encryptedKey.toJSON()}}},u(wt,"am"),wt);Bm.CLASS_NAME="KEKRecipientInfo";var Xo="version",Vr="keyDerivationAlgorithm",$o="keyEncryptionAlgorithm",ui="encryptedKey",rd="password",KC=[Xo,Vr,$o,ui],vt,pm=(vt=class extends F{constructor(e={}){super(),this.version=g(e,Xo,vt.defaultValues(Xo)),Vr in e&&(this.keyDerivationAlgorithm=g(e,Vr,vt.defaultValues(Vr))),this.keyEncryptionAlgorithm=g(e,$o,vt.defaultValues($o)),this.encryptedKey=g(e,ui,vt.defaultValues(ui)),this.password=g(e,rd,vt.defaultValues(rd)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Xo:return-1;case Vr:case $o:return new k;case ui:return new J;case rd:return Re;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Xo:return t===-1;case Vr:case $o:return t.algorithmId===w&&!("algorithmParams"in t);case ui:return t.isEqual(vt.defaultValues(ui));case rd:return t.byteLength===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.version||w}),new v({name:t.keyDerivationAlgorithm||w,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:k.schema().valueBlock.value}),k.schema(t.keyEncryptionAlgorithm||{}),new J({name:t.encryptedKey||w})]})}fromSchema(e){Y(e,KC);let t=H(e,e,vt.schema({names:{version:Xo,keyDerivationAlgorithm:Vr,keyEncryptionAlgorithm:{names:{blockName:$o}},encryptedKey:ui}}));R.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,Vr in t.result&&(this.keyDerivationAlgorithm=new k({schema:new M({value:t.result.keyDerivationAlgorithm.valueBlock.value})})),this.keyEncryptionAlgorithm=new k({schema:t.result.keyEncryptionAlgorithm}),this.encryptedKey=t.result.encryptedKey}toSchema(){let e=[];return e.push(new x({value:this.version})),this.keyDerivationAlgorithm&&e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:this.keyDerivationAlgorithm.toSchema().valueBlock.value})),e.push(this.keyEncryptionAlgorithm.toSchema()),e.push(this.encryptedKey),new M({value:e})}toJSON(){let e={version:this.version,keyEncryptionAlgorithm:this.keyEncryptionAlgorithm.toJSON(),encryptedKey:this.encryptedKey.toJSON()};return this.keyDerivationAlgorithm&&(e.keyDerivationAlgorithm=this.keyDerivationAlgorithm.toJSON()),e}},u(vt,"Am"),vt);pm.CLASS_NAME="PasswordRecipientInfo";var _o="oriType",hi="oriValue",qC=[_o,hi],Hs,lw=(Hs=class extends F{constructor(e={}){super(),this.oriType=g(e,_o,Hs.defaultValues(_o)),this.oriValue=g(e,hi,Hs.defaultValues(hi)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case _o:return w;case hi:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case _o:return t===w;case hi:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.oriType||w}),new re({name:t.oriValue||w})]})}fromSchema(e){Y(e,qC);let t=H(e,e,Hs.schema({names:{oriType:_o,oriValue:hi}}));R.assertSchema(t,this.className),this.oriType=t.result.oriType.valueBlock.toString(),this.oriValue=t.result.oriValue}toSchema(){return new M({value:[new z({value:this.oriType}),this.oriValue]})}toJSON(){let e={oriType:this.oriType};return Hs.compareWithDefault(hi,this.oriValue)||(e.oriValue=this.oriValue.toJSON()),e}},u(Hs,"dm"),Hs);lw.CLASS_NAME="OtherRecipientInfo";var ad="variant",sh="value",XC=["blockName"],Ys,Ai=(Ys=class extends F{constructor(e={}){super(),this.variant=g(e,ad,Ys.defaultValues(ad)),sh in e&&(this.value=g(e,sh,Ys.defaultValues(sh))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ad:return-1;case sh:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ad:return t===Ys.defaultValues(e);case sh:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new Ce({value:[gm.schema({names:{blockName:t.blockName||w}}),new v({name:t.blockName||w,idBlock:{tagClass:3,tagNumber:1},value:wm.schema().valueBlock.value}),new v({name:t.blockName||w,idBlock:{tagClass:3,tagNumber:2},value:Bm.schema().valueBlock.value}),new v({name:t.blockName||w,idBlock:{tagClass:3,tagNumber:3},value:pm.schema().valueBlock.value}),new v({name:t.blockName||w,idBlock:{tagClass:3,tagNumber:4},value:lw.schema().valueBlock.value})]})}fromSchema(e){Y(e,XC);let t=H(e,e,Ys.schema({names:{blockName:"blockName"}}));if(R.assertSchema(t,this.className),t.result.blockName.idBlock.tagClass===1)this.variant=1,this.value=new gm({schema:t.result.blockName});else{let s=new M({value:t.result.blockName.valueBlock.value});switch(t.result.blockName.idBlock.tagNumber){case 1:this.variant=2,this.value=new wm({schema:s});break;case 2:this.variant=3,this.value=new Bm({schema:s});break;case 3:this.variant=4,this.value=new pm({schema:s});break;case 4:this.variant=5,this.value=new lw({schema:s});break;default:throw new Error("Incorrect structure of RecipientInfo block")}}}toSchema(){de.assertEmpty(this.value,"value","RecipientInfo");let e=this.value.toSchema();switch(this.variant){case 1:return e;case 2:case 3:case 4:return e.idBlock.tagClass=3,e.idBlock.tagNumber=this.variant-1,e;default:return new re}}toJSON(){let e={variant:this.variant};return this.value&&this.variant>=1&&this.variant<=4&&(e.value=this.value.toJSON()),e}},u(Ys,"pm"),Ys);Ai.CLASS_NAME="RecipientInfo";var Sr="hashAlgorithm",kr="maskGenAlgorithm",xr="pSourceAlgorithm",$C=[Sr,kr,xr],et,bd=(et=class extends F{constructor(e={}){super(),this.hashAlgorithm=g(e,Sr,et.defaultValues(Sr)),this.maskGenAlgorithm=g(e,kr,et.defaultValues(kr)),this.pSourceAlgorithm=g(e,xr,et.defaultValues(xr)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Sr:return new k({algorithmId:"1.3.14.3.2.26",algorithmParams:new Ve});case kr:return new k({algorithmId:"1.2.840.113549.1.1.8",algorithmParams:new k({algorithmId:"1.3.14.3.2.26",algorithmParams:new Ve}).toSchema()});case xr:return new k({algorithmId:"1.2.840.113549.1.1.9",algorithmParams:new J({valueHex:new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]).buffer})});default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new v({idBlock:{tagClass:3,tagNumber:0},optional:!0,value:[k.schema(t.hashAlgorithm||{})]}),new v({idBlock:{tagClass:3,tagNumber:1},optional:!0,value:[k.schema(t.maskGenAlgorithm||{})]}),new v({idBlock:{tagClass:3,tagNumber:2},optional:!0,value:[k.schema(t.pSourceAlgorithm||{})]})]})}fromSchema(e){Y(e,$C);let t=H(e,e,et.schema({names:{hashAlgorithm:{names:{blockName:Sr}},maskGenAlgorithm:{names:{blockName:kr}},pSourceAlgorithm:{names:{blockName:xr}}}}));R.assertSchema(t,this.className),Sr in t.result&&(this.hashAlgorithm=new k({schema:t.result.hashAlgorithm})),kr in t.result&&(this.maskGenAlgorithm=new k({schema:t.result.maskGenAlgorithm})),xr in t.result&&(this.pSourceAlgorithm=new k({schema:t.result.pSourceAlgorithm}))}toSchema(){let e=[];return this.hashAlgorithm.isEqual(et.defaultValues(Sr))||e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:[this.hashAlgorithm.toSchema()]})),this.maskGenAlgorithm.isEqual(et.defaultValues(kr))||e.push(new v({idBlock:{tagClass:3,tagNumber:1},value:[this.maskGenAlgorithm.toSchema()]})),this.pSourceAlgorithm.isEqual(et.defaultValues(xr))||e.push(new v({idBlock:{tagClass:3,tagNumber:2},value:[this.pSourceAlgorithm.toSchema()]})),new M({value:e})}toJSON(){let e={};return this.hashAlgorithm.isEqual(et.defaultValues(Sr))||(e.hashAlgorithm=this.hashAlgorithm.toJSON()),this.maskGenAlgorithm.isEqual(et.defaultValues(kr))||(e.maskGenAlgorithm=this.maskGenAlgorithm.toJSON()),this.pSourceAlgorithm.isEqual(et.defaultValues(xr))||(e.pSourceAlgorithm=this.pSourceAlgorithm.toJSON()),e}},u(et,"Dm"),et);bd.CLASS_NAME="RSAESOAEPParams";var ec="keyInfo",Tr="entityUInfo",tc="suppPubInfo",_C=[ec,Tr,tc],as,uw=(as=class extends F{constructor(e={}){super(),this.keyInfo=g(e,ec,as.defaultValues(ec)),Tr in e&&(this.entityUInfo=g(e,Tr,as.defaultValues(Tr))),this.suppPubInfo=g(e,tc,as.defaultValues(tc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ec:return new k;case Tr:case tc:return new J;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ec:case Tr:case tc:return t.isEqual(as.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[k.schema(t.keyInfo||{}),new v({name:t.entityUInfo||w,idBlock:{tagClass:3,tagNumber:0},optional:!0,value:[new J]}),new v({name:t.suppPubInfo||w,idBlock:{tagClass:3,tagNumber:2},value:[new J]})]})}fromSchema(e){Y(e,_C);let t=H(e,e,as.schema({names:{keyInfo:{names:{blockName:ec}},entityUInfo:Tr,suppPubInfo:tc}}));R.assertSchema(t,this.className),this.keyInfo=new k({schema:t.result.keyInfo}),Tr in t.result&&(this.entityUInfo=t.result.entityUInfo.valueBlock.value[0]),this.suppPubInfo=t.result.suppPubInfo.valueBlock.value[0]}toSchema(){let e=[];return e.push(this.keyInfo.toSchema()),this.entityUInfo&&e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:[this.entityUInfo]})),e.push(new v({idBlock:{tagClass:3,tagNumber:2},value:[this.suppPubInfo]})),new M({value:e})}toJSON(){let e={keyInfo:this.keyInfo.toJSON(),suppPubInfo:this.suppPubInfo.toJSON()};return this.entityUInfo&&(e.entityUInfo=this.entityUInfo.toJSON()),e}},u(as,"Vm"),as);uw.CLASS_NAME="ECCCMSSharedInfo";var sc="version",Ur="originatorInfo",nc="recipientInfos",rc="encryptedContentInfo",Rr="unprotectedAttrs",eM=[sc,Ur,nc,rc,Rr],aE={kdfAlgorithm:"SHA-512",kekEncryptionLength:256},tM={"P-256":256,"P-384":384,"P-521":528},Dt,hw=(Dt=class extends F{constructor(e={}){super(),this.version=g(e,sc,Dt.defaultValues(sc)),Ur in e&&(this.originatorInfo=g(e,Ur,Dt.defaultValues(Ur))),this.recipientInfos=g(e,nc,Dt.defaultValues(nc)),this.encryptedContentInfo=g(e,rc,Dt.defaultValues(rc)),Rr in e&&(this.unprotectedAttrs=g(e,Rr,Dt.defaultValues(Rr))),this.policy={disableSplit:!!e.disableSplit},e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case sc:return 0;case Ur:return new Md;case nc:return[];case rc:return new st;case Rr:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case sc:return t===Dt.defaultValues(e);case Ur:return t.certs.certificates.length===0&&t.crls.crls.length===0;case nc:case Rr:return t.length===0;case rc:return st.compareWithDefault("contentType",t.contentType)&&st.compareWithDefault("contentEncryptionAlgorithm",t.contentEncryptionAlgorithm)&&st.compareWithDefault("encryptedContent",t.encryptedContent);default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.version||w}),new v({name:t.originatorInfo||w,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:Md.schema().valueBlock.value}),new Se({value:[new ae({name:t.recipientInfos||w,value:Ai.schema()})]}),st.schema(t.encryptedContentInfo||{}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new ae({name:t.unprotectedAttrs||w,value:ke.schema()})]})]})}fromSchema(e){Y(e,eM);let t=H(e,e,Dt.schema({names:{version:sc,originatorInfo:Ur,recipientInfos:nc,encryptedContentInfo:{names:{blockName:rc}},unprotectedAttrs:Rr}}));R.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,Ur in t.result&&(this.originatorInfo=new Md({schema:new M({value:t.result.originatorInfo.valueBlock.value})})),this.recipientInfos=Array.from(t.result.recipientInfos,s=>new Ai({schema:s})),this.encryptedContentInfo=new st({schema:t.result.encryptedContentInfo}),Rr in t.result&&(this.unprotectedAttrs=Array.from(t.result.unprotectedAttrs,s=>new ke({schema:s})))}toSchema(){let e=[];return e.push(new x({value:this.version})),this.originatorInfo&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:this.originatorInfo.toSchema().valueBlock.value})),e.push(new Se({value:Array.from(this.recipientInfos,t=>t.toSchema())})),e.push(this.encryptedContentInfo.toSchema()),this.unprotectedAttrs&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.unprotectedAttrs,t=>t.toSchema())})),new M({value:e})}toJSON(){let e={version:this.version,recipientInfos:Array.from(this.recipientInfos,t=>t.toJSON()),encryptedContentInfo:this.encryptedContentInfo.toJSON()};return this.originatorInfo&&(e.originatorInfo=this.originatorInfo.toJSON()),this.unprotectedAttrs&&(e.unprotectedAttrs=Array.from(this.unprotectedAttrs,t=>t.toJSON())),e}addRecipientByCertificate(e,t,s,n=ce(!0)){let r=Object.assign({useOAEP:!0,oaepHashAlgorithm:"SHA-512"},aE,t||{});if(e.subjectPublicKeyInfo.algorithm.algorithmId.indexOf("1.2.840.113549")!==-1)s=1;else{if(e.subjectPublicKeyInfo.algorithm.algorithmId.indexOf("1.2.840.10045")===-1)throw new Error(`Unknown type of certificate's public key: ${e.subjectPublicKeyInfo.algorithm.algorithmId}`);s=2}switch(s){case 1:{let a,o;if(r.useOAEP===!0){a=n.getOIDByAlgorithm({name:"RSA-OAEP"},!0,"keyEncryptionAlgorithm");let l=n.getOIDByAlgorithm({name:r.oaepHashAlgorithm},!0,"RSAES-OAEP-params"),A=new k({algorithmId:l,algorithmParams:new Ve});o=new bd({hashAlgorithm:A,maskGenAlgorithm:new k({algorithmId:"1.2.840.113549.1.1.8",algorithmParams:A.toSchema()})}).toSchema()}else{if(a=n.getOIDByAlgorithm({name:"RSAES-PKCS1-v1_5"}),a===w)throw new Error("Can not find OID for RSAES-PKCS1-v1_5");o=new Ve}let c=new gm({version:0,rid:new Ke({issuer:e.issuer,serialNumber:e.serialNumber}),keyEncryptionAlgorithm:new k({algorithmId:a,algorithmParams:o}),recipientCertificate:e});this.recipientInfos.push(new Ai({variant:1,value:c}))}break;case 2:{let a=new Wc({variant:1,value:new Ke({issuer:e.issuer,serialNumber:e.serialNumber})});this._addKeyAgreeRecipientInfo(a,r,{recipientCertificate:e},n)}break;default:throw new Error(`Unknown "variant" value: ${s}`)}return!0}addRecipientByPreDefinedData(e,t={},s,n=ce(!0)){if(Be.assert(e,"preDefinedData","ArrayBuffer"),!e.byteLength)throw new Error("Pre-defined data could have zero length");if(!t.keyIdentifier){let r=new ArrayBuffer(16),a=new Uint8Array(r);n.getRandomValues(a),t.keyIdentifier=r}switch(t.hmacHashAlgorithm||(t.hmacHashAlgorithm="SHA-512"),t.iterationCount===void 0&&(t.iterationCount=2048),t.keyEncryptionAlgorithm||(t.keyEncryptionAlgorithm={name:"AES-KW",length:256}),t.keyEncryptionAlgorithmParams||(t.keyEncryptionAlgorithmParams=new Ve),s){case 1:{let r=n.getOIDByAlgorithm(t.keyEncryptionAlgorithm,!0,"keyEncryptionAlgorithm"),a=new Bm({version:4,kekid:new cg({keyIdentifier:new J({valueHex:t.keyIdentifier})}),keyEncryptionAlgorithm:new k({algorithmId:r,algorithmParams:t.keyEncryptionAlgorithmParams}),preDefinedKEK:e});this.recipientInfos.push(new Ai({variant:3,value:a}))}break;case 2:{let r=n.getOIDByAlgorithm({name:"PBKDF2"},!0,"keyDerivationAlgorithm"),a=new ArrayBuffer(64),o=new Uint8Array(a);n.getRandomValues(o);let c=n.getOIDByAlgorithm({name:"HMAC",hash:{name:t.hmacHashAlgorithm}},!0,"hmacHashAlgorithm"),l=new Oc({salt:new J({valueHex:a}),iterationCount:t.iterationCount,prf:new k({algorithmId:c,algorithmParams:new Ve})}),A=n.getOIDByAlgorithm(t.keyEncryptionAlgorithm,!0,"keyEncryptionAlgorithm"),h=new pm({version:0,keyDerivationAlgorithm:new k({algorithmId:r,algorithmParams:l.toSchema()}),keyEncryptionAlgorithm:new k({algorithmId:A,algorithmParams:t.keyEncryptionAlgorithmParams}),password:e});this.recipientInfos.push(new Ai({variant:4,value:h}))}break;default:throw new Error(`Unknown value for "variant": ${s}`)}}addRecipientByKeyIdentifier(e,t,s,n=ce(!0)){let r=Object.assign({},aE,s||{}),a=new Wc({variant:2,value:new mm({subjectKeyIdentifier:new J({valueHex:t})})});this._addKeyAgreeRecipientInfo(a,r,{recipientPublicKey:e},n)}_addKeyAgreeRecipientInfo(e,t,s,n=ce(!0)){let r=new fm({rid:e}),a=n.getOIDByAlgorithm({name:"AES-KW",length:t.kekEncryptionLength},!0,"keyEncryptionAlgorithm"),o=new k({algorithmId:a}),c=n.getOIDByAlgorithm({name:"ECDH",kdf:t.kdfAlgorithm},!0,"KeyAgreeRecipientInfo"),l=new ArrayBuffer(64),A=new Uint8Array(l);n.getRandomValues(A);let h={version:3,ukm:new J({valueHex:l}),keyEncryptionAlgorithm:new k({algorithmId:c,algorithmParams:o.toSchema()}),recipientEncryptedKeys:new og({encryptedKeys:[r]})},d=new wm(Object.assign(h,s));this.recipientInfos.push(new Ai({variant:2,value:d}))}async encrypt(e,t,s=ce(!0)){let n=new ArrayBuffer(16),r=new Uint8Array(n);s.getRandomValues(r);let a=new Uint8Array(t),o=s.getOIDByAlgorithm(e,!0,"contentEncryptionAlgorithm"),c=await s.generateKey(e,!0,["encrypt"]),l=await s.encrypt({name:e.name,iv:r},c,a),A=await s.exportKey("raw",c);this.version=2,this.encryptedContentInfo=new st({disableSplit:this.policy.disableSplit,contentType:"1.2.840.113549.1.7.1",contentEncryptionAlgorithm:new k({algorithmId:o,algorithmParams:new J({valueHex:n})}),encryptedContent:new J({valueHex:l})});let h=u(async f=>{let p=this.recipientInfos[f].value,B,C;if(p.recipientPublicKey)B=p.recipientPublicKey.algorithm.namedCurve,C=p.recipientPublicKey;else{if(!p.recipientCertificate)throw new Error("Unsupported RecipientInfo");{let _=p.recipientCertificate.subjectPublicKeyInfo.algorithm.algorithmParams;if(_.constructor.blockName()!==z.blockName())throw new Error(`Incorrect "recipientCertificate" for index ${f}`);switch(_.valueBlock.toString()){case"1.2.840.10045.3.1.7":B="P-256";break;case"1.3.132.0.34":B="P-384";break;case"1.3.132.0.35":B="P-521";break;default:throw new Error(`Incorrect curve OID for index ${f}`)}C=await p.recipientCertificate.getPublicKey({algorithm:{algorithm:{name:"ECDH",namedCurve:B},usages:[]}},s)}}let I=tM[B],b=await s.generateKey({name:"ECDH",namedCurve:B},!0,["deriveBits"]),V=await s.exportKey("spki",b.publicKey),G=await s.deriveBits({name:"ECDH",public:C},b.privateKey,I),D=new k({schema:p.keyEncryptionAlgorithm.algorithmParams}),S=s.getAlgorithmByOID(D.algorithmId,!0,"aesKWAlgorithm"),Q=S.length,N=new ArrayBuffer(4),T=new Uint8Array(N);for(let _=3;_>=0;_--)T[_]=Q,Q>>=8;let j=new uw({keyInfo:new k({algorithmId:D.algorithmId}),entityUInfo:p.ukm,suppPubInfo:new J({valueHex:N})}).toSchema().toBER(!1),U=s.getAlgorithmByOID(p.keyEncryptionAlgorithm.algorithmId,!0,"ecdhAlgorithm"),L=await Kp(U.kdf,G,S.length,j,s),q=await s.importKey("raw",L,{name:"AES-KW"},!0,["wrapKey"]),K=await s.wrapKey("raw",c,q,{name:"AES-KW"}),$=new ig;return $.variant=3,$.value=dm.fromBER(V),p.originator=$,p.recipientEncryptedKeys.encryptedKeys[0].encryptedKey=new J({valueHex:K}),{ecdhPrivateKey:b.privateKey}},"h"),d=u(async f=>{let p=this.recipientInfos[f].value,B=s.getAlgorithmByOID(p.keyEncryptionAlgorithm.algorithmId,!0,"keyEncryptionAlgorithm");if(B.name==="RSA-OAEP"){let C=p.keyEncryptionAlgorithm.algorithmParams,I=new bd({schema:C});if(B.hash=s.getAlgorithmByOID(I.hashAlgorithm.algorithmId),!("name"in B.hash))throw new Error(`Incorrect OID for hash algorithm: ${I.hashAlgorithm.algorithmId}`)}try{let C=await p.recipientCertificate.getPublicKey({algorithm:{algorithm:B,usages:["encrypt","wrapKey"]}},s),I=await s.encrypt(C.algorithm,C,A);p.encryptedKey=new J({valueHex:I})}catch{}},"u"),m=u(async f=>{let p=this.recipientInfos[f].value,B=s.getAlgorithmByOID(p.keyEncryptionAlgorithm.algorithmId,!0,"kekAlgorithm"),C=await s.importKey("raw",new Uint8Array(p.preDefinedKEK),B,!0,["wrapKey"]),I=await s.wrapKey("raw",c,C,B);p.encryptedKey=new J({valueHex:I})},"A"),E=u(async f=>{let p=this.recipientInfos[f].value,B;if(!p.keyDerivationAlgorithm)throw new Error('Please append encoded "keyDerivationAlgorithm"');if(!p.keyDerivationAlgorithm.algorithmParams)throw new Error('Incorrectly encoded "keyDerivationAlgorithm"');try{B=new Oc({schema:p.keyDerivationAlgorithm.algorithmParams})}catch{throw new Error('Incorrectly encoded "keyDerivationAlgorithm"')}let C=new Uint8Array(p.password),I=await s.importKey("raw",C,"PBKDF2",!1,["deriveKey"]),b=s.getAlgorithmByOID(p.keyEncryptionAlgorithm.algorithmId,!0,"kekAlgorithm"),V="SHA-1";B.prf&&(V=s.getAlgorithmByOID(B.prf.algorithmId,!0,"prfAlgorithm").hash.name);let G=new Uint8Array(B.salt.valueBlock.valueHex),D=B.iterationCount,S=await s.deriveKey({name:"PBKDF2",hash:{name:V},salt:G,iterations:D},I,b,!0,["wrapKey"]),Q=await s.wrapKey("raw",c,S,b);p.encryptedKey=new J({valueHex:Q})},"g"),y=[];for(let f=0;f<this.recipientInfos.length;f++)switch(this.recipientInfos[f].variant){case 1:y.push(await d(f));break;case 2:y.push(await h(f));break;case 3:y.push(await m(f));break;case 4:y.push(await E(f));break;default:throw new Error(`Unknown recipient type in array with index ${f}`)}return y}async decrypt(e,t,s=ce(!0)){let n=t||{};if(e+1>this.recipientInfos.length)throw new Error('Maximum value for "index" is: '+(this.recipientInfos.length-1));let r=u(async y=>{let f=this.recipientInfos[y].value,p,B,C,I=f.originator;if(n.recipientCertificate){let L=n.recipientCertificate.subjectPublicKeyInfo.algorithm.algorithmParams;if(L.constructor.blockName()!==z.blockName())throw new Error(`Incorrect "recipientCertificate" for index ${y}`);p=L.valueBlock.toString()}else{if(!I.value.algorithm.algorithmParams)throw new Error('Parameter "recipientCertificate" is mandatory for "KeyAgreeRecipientInfo" if algorithm params are missing from originator');{let L=I.value.algorithm.algorithmParams;if(L.constructor.blockName()!==z.blockName())throw new Error(`Incorrect originator for index ${y}`);p=L.valueBlock.toString()}}if(!n.recipientPrivateKey)throw new Error('Parameter "recipientPrivateKey" is mandatory for "KeyAgreeRecipientInfo"');switch(p){case"1.2.840.10045.3.1.7":B="P-256",C=256;break;case"1.3.132.0.34":B="P-384",C=384;break;case"1.3.132.0.35":B="P-521",C=528;break;default:throw new Error(`Incorrect curve OID for index ${y}`)}let b,V=s;ne.isBufferSource(n.recipientPrivateKey)?b=await s.importKey("pkcs8",n.recipientPrivateKey,{name:"ECDH",namedCurve:B},!0,["deriveBits"]):(b=n.recipientPrivateKey,"crypto"in n&&n.crypto&&(V=n.crypto.subtle)),!("algorithmParams"in I.value.algorithm)&&(I.value.algorithm.algorithmParams=new z({value:p}));let G=I.value.toSchema().toBER(!1),D=await s.importKey("spki",G,{name:"ECDH",namedCurve:B},!0,[]),S=await V.deriveBits({name:"ECDH",public:D},b,C);async function Q(L){L=L||!1;let q=new k({schema:f.keyEncryptionAlgorithm.algorithmParams}),K=s.getAlgorithmByOID(q.algorithmId,!0,"kwAlgorithm"),$=K.length,_=new ArrayBuffer(4),O=new Uint8Array(_);for(let oe=3;oe>=0;oe--)O[oe]=$,$>>=8;let X={algorithmId:q.algorithmId};L&&(X.algorithmParams=new Ve);let P=new uw({keyInfo:new k(X),entityUInfo:f.ukm,suppPubInfo:new J({valueHex:_})}).toSchema().toBER(!1),ee=s.getAlgorithmByOID(f.keyEncryptionAlgorithm.algorithmId,!0,"ecdhAlgorithm");if(!ee.name)throw new Error(`Incorrect OID for key encryption algorithm: ${f.keyEncryptionAlgorithm.algorithmId}`);return Kp(ee.kdf,S,K.length,P,s)}u(Q,"m");let N=await Q(),T=u(async L=>s.importKey("raw",L,{name:"AES-KW"},!0,["unwrapKey"]),"d"),j=await T(N),U=u(async L=>{let q=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,K=s.getAlgorithmByOID(q,!0,"contentEncryptionAlgorithm");return s.unwrapKey("raw",f.recipientEncryptedKeys.encryptedKeys[0].encryptedKey.valueBlock.valueHexView,L,{name:"AES-KW"},K,!0,["decrypt"])},"f");try{return await U(j)}catch{let L=await Q(!0);return U(await T(L))}},"r"),a=u(async y=>{let f=this.recipientInfos[y].value;if(!n.recipientPrivateKey)throw new Error('Parameter "recipientPrivateKey" is mandatory for "KeyTransRecipientInfo"');let p=s.getAlgorithmByOID(f.keyEncryptionAlgorithm.algorithmId,!0,"keyEncryptionAlgorithm");if(p.name==="RSA-OAEP"){let G=f.keyEncryptionAlgorithm.algorithmParams,D=new bd({schema:G});if(p.hash=s.getAlgorithmByOID(D.hashAlgorithm.algorithmId),!("name"in p.hash))throw new Error(`Incorrect OID for hash algorithm: ${D.hashAlgorithm.algorithmId}`)}let B,C=s;ne.isBufferSource(n.recipientPrivateKey)?B=await s.importKey("pkcs8",n.recipientPrivateKey,p,!0,["decrypt"]):(B=n.recipientPrivateKey,"crypto"in n&&n.crypto&&(C=n.crypto.subtle));let I=await C.decrypt(B.algorithm,B,f.encryptedKey.valueBlock.valueHexView),b=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,V=s.getAlgorithmByOID(b,!0,"contentEncryptionAlgorithm");if(!("name"in V))throw new Error(`Incorrect "contentEncryptionAlgorithm": ${b}`);return s.importKey("raw",I,V,!0,["decrypt"])},"a"),o=u(async y=>{let f=this.recipientInfos[y].value;if(!n.preDefinedData)throw new Error('Parameter "preDefinedData" is mandatory for "KEKRecipientInfo"');let p=s.getAlgorithmByOID(f.keyEncryptionAlgorithm.algorithmId,!0,"kekAlgorithm"),B=await s.importKey("raw",n.preDefinedData,p,!0,["unwrapKey"]),C=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,I=s.getAlgorithmByOID(C,!0,"contentEncryptionAlgorithm");if(!I.name)throw new Error(`Incorrect "contentEncryptionAlgorithm": ${C}`);return s.unwrapKey("raw",f.encryptedKey.valueBlock.valueHexView,B,p,I,!0,["decrypt"])},"i"),c=u(async y=>{let f=this.recipientInfos[y].value,p;if(!n.preDefinedData)throw new Error('Parameter "preDefinedData" is mandatory for "KEKRecipientInfo"');if(!f.keyDerivationAlgorithm)throw new Error('Please append encoded "keyDerivationAlgorithm"');if(!f.keyDerivationAlgorithm.algorithmParams)throw new Error('Incorrectly encoded "keyDerivationAlgorithm"');try{p=new Oc({schema:f.keyDerivationAlgorithm.algorithmParams})}catch{throw new Error('Incorrectly encoded "keyDerivationAlgorithm"')}let B=await s.importKey("raw",n.preDefinedData,"PBKDF2",!1,["deriveKey"]),C=s.getAlgorithmByOID(f.keyEncryptionAlgorithm.algorithmId,!0,"keyEncryptionAlgorithm"),I=p.prf?s.getAlgorithmByOID(p.prf.algorithmId,!0,"prfAlgorithm").hash.name:"SHA-1",b=new Uint8Array(p.salt.valueBlock.valueHex),V=p.iterationCount,G=await s.deriveKey({name:"PBKDF2",hash:{name:I},salt:b,iterations:V},B,C,!0,["unwrapKey"]),D=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,S=s.getAlgorithmByOID(D,!0,"contentEncryptionAlgorithm");return s.unwrapKey("raw",f.encryptedKey.valueBlock.valueHexView,G,C,S,!0,["decrypt"])},"o"),l;switch(this.recipientInfos[e].variant){case 1:l=await a(e);break;case 2:l=await r(e);break;case 3:l=await o(e);break;case 4:l=await c(e);break;default:throw new Error(`Unknown recipient type in array with index ${e}`)}let A=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,h=s.getAlgorithmByOID(A,!0,"contentEncryptionAlgorithm"),d=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmParams.valueBlock.valueHex,m=new Uint8Array(d);if(!this.encryptedContentInfo.encryptedContent)throw new Error("Required property `encryptedContent` is empty");let E=this.encryptedContentInfo.getEncryptedContent();return s.decrypt({name:h.name,iv:m},l,E)}},u(Dt,"Hm"),Dt);hw.CLASS_NAME="EnvelopedData";var uo="safeContents",nh="parsedValue",iE="contentInfos",Yn,Aw=(Yn=class extends F{constructor(e={}){super(),this.safeContents=g(e,uo,Yn.defaultValues(uo)),nh in e&&(this.parsedValue=g(e,nh,Yn.defaultValues(nh))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case uo:return[];case nh:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case uo:return t.length===0;case nh:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new ae({name:t.contentInfos||w,value:De.schema()})]})}fromSchema(e){Y(e,[iE]);let t=H(e,e,Yn.schema({names:{contentInfos:iE}}));R.assertSchema(t,this.className),this.safeContents=Array.from(t.result.contentInfos,s=>new De({schema:s}))}toSchema(){return new M({value:Array.from(this.safeContents,e=>e.toSchema())})}toJSON(){return{safeContents:Array.from(this.safeContents,e=>e.toJSON())}}async parseInternalValues(e,t=ce(!0)){if(de.assert(e,uo),Be.assert(e.safeContents,uo,"Array"),e.safeContents.length!==this.safeContents.length)throw new Be('Length of "parameters.safeContents" must be equal to "this.safeContents.length"');this.parsedValue={safeContents:[]};for(let[s,n]of this.safeContents.entries()){let r=e.safeContents[s],a=`parameters.safeContents[${s}]`;switch(n.contentType){case zw:{Be.assert(n.content,"this.safeContents[j].content",J);let o=n.content.getValue();this.parsedValue.safeContents.push({privacyMode:0,value:Hc.fromBER(o)})}break;case Ay:{let o=new hw({schema:n.content});de.assert(a,r,"recipientCertificate","recipientKey");let c=r,l=c.recipientCertificate,A=c.recipientKey,h=await o.decrypt(0,{recipientCertificate:l,recipientPrivateKey:A},t);this.parsedValue.safeContents.push({privacyMode:2,value:Hc.fromBER(h)})}break;case gy:{let o=new yg({schema:n.content});de.assert(a,r,"password");let c=r.password,l=await o.decrypt({password:c},t);this.parsedValue.safeContents.push({privacyMode:1,value:Hc.fromBER(l)})}break;default:throw new Error(`Unknown "contentType" for AuthenticatedSafe: " ${n.contentType}`)}}}async makeInternalValues(e,t=ce(!0)){if(!this.parsedValue)throw new Error('Please run "parseValues" first or add "parsedValue" manually');if(Be.assert(this.parsedValue,"this.parsedValue","object"),Be.assert(this.parsedValue.safeContents,"this.parsedValue.safeContents","Array"),Be.assert(e,"parameters","object"),de.assert(e,"safeContents"),Be.assert(e.safeContents,"parameters.safeContents","Array"),e.safeContents.length!==this.parsedValue.safeContents.length)throw new Be('Length of "parameters.safeContents" must be equal to "this.parsedValue.safeContents"');this.safeContents=[];for(let[s,n]of this.parsedValue.safeContents.entries())switch(de.assert("content",n,"privacyMode","value"),Be.assert(n.value,"content.value",Hc),n.privacyMode){case 0:{let r=n.value.toSchema().toBER(!1);this.safeContents.push(new De({contentType:"1.2.840.113549.1.7.1",content:new J({valueHex:r})}))}break;case 1:{let r=new yg,a=e.safeContents[s];a.contentToEncrypt=n.value.toSchema().toBER(!1),await r.encrypt(a,t),this.safeContents.push(new De({contentType:"1.2.840.113549.1.7.6",content:r.toSchema()}))}break;case 2:{let r=new hw,a=n.value.toSchema().toBER(!1),o=e.safeContents[s];switch(de.assert(`parameters.safeContents[${s}]`,o,"encryptingCertificate","encryptionAlgorithm"),!0){case o.encryptionAlgorithm.name.toLowerCase()==="aes-cbc":case o.encryptionAlgorithm.name.toLowerCase()==="aes-gcm":break;default:throw new Error(`Incorrect parameter "encryptionAlgorithm" in "parameters.safeContents[i]": ${o.encryptionAlgorithm}`)}switch(!0){case o.encryptionAlgorithm.length===128:case o.encryptionAlgorithm.length===192:case o.encryptionAlgorithm.length===256:break;default:throw new Error(`Incorrect parameter "encryptionAlgorithm.length" in "parameters.safeContents[i]": ${o.encryptionAlgorithm.length}`)}let c=o.encryptionAlgorithm;r.addRecipientByCertificate(o.encryptingCertificate,{},void 0,t),await r.encrypt(c,a,t),this.safeContents.push(new De({contentType:"1.2.840.113549.1.7.3",content:r.toSchema()}))}break;default:throw new Error(`Incorrect value for "content.privacyMode": ${n.privacyMode}`)}return this}},u(Yn,"Om"),Yn);Aw.CLASS_NAME="AuthenticatedSafe";var gi="hashAlgorithm",ac="issuerNameHash",ic="issuerKeyHash",di="serialNumber",sM=[gi,ac,ic,di],Qt,kt=(Qt=class extends F{static async create(e,t,s=ce(!0)){let n=new Qt;return await n.createForCertificate(e,t,s),n}constructor(e={}){super(),this.hashAlgorithm=g(e,gi,Qt.defaultValues(gi)),this.issuerNameHash=g(e,ac,Qt.defaultValues(ac)),this.issuerKeyHash=g(e,ic,Qt.defaultValues(ic)),this.serialNumber=g(e,di,Qt.defaultValues(di)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case gi:return new k;case ac:case ic:return new J;case di:return new x;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case gi:return t.algorithmId===w&&!("algorithmParams"in t);case ac:case ic:case di:return t.isEqual(Qt.defaultValues(di));default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[k.schema(t.hashAlgorithmObject||{names:{blockName:t.hashAlgorithm||w}}),new J({name:t.issuerNameHash||w}),new J({name:t.issuerKeyHash||w}),new x({name:t.serialNumber||w})]})}fromSchema(e){Y(e,sM);let t=H(e,e,Qt.schema({names:{hashAlgorithm:gi,issuerNameHash:ac,issuerKeyHash:ic,serialNumber:di}}));R.assertSchema(t,this.className),this.hashAlgorithm=new k({schema:t.result.hashAlgorithm}),this.issuerNameHash=t.result.issuerNameHash,this.issuerKeyHash=t.result.issuerKeyHash,this.serialNumber=t.result.serialNumber}toSchema(){return new M({value:[this.hashAlgorithm.toSchema(),this.issuerNameHash,this.issuerKeyHash,this.serialNumber]})}toJSON(){return{hashAlgorithm:this.hashAlgorithm.toJSON(),issuerNameHash:this.issuerNameHash.toJSON(),issuerKeyHash:this.issuerKeyHash.toJSON(),serialNumber:this.serialNumber.toJSON()}}isEqual(e){return this.hashAlgorithm.algorithmId===e.hashAlgorithm.algorithmId&&!!ne.isEqual(this.issuerNameHash.valueBlock.valueHexView,e.issuerNameHash.valueBlock.valueHexView)&&!!ne.isEqual(this.issuerKeyHash.valueBlock.valueHexView,e.issuerKeyHash.valueBlock.valueHexView)&&!!this.serialNumber.isEqual(e.serialNumber)}async createForCertificate(e,t,s=ce(!0)){de.assert(t,gi,"issuerCertificate");let n=s.getOIDByAlgorithm({name:t.hashAlgorithm},!0,"hashAlgorithm");this.hashAlgorithm=new k({algorithmId:n,algorithmParams:new Ve});let r=t.issuerCertificate;this.serialNumber=e.serialNumber;let a=await s.digest({name:t.hashAlgorithm},r.subject.toSchema().toBER(!1));this.issuerNameHash=new J({valueHex:a});let o=r.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView,c=await s.digest({name:t.hashAlgorithm},o);this.issuerKeyHash=new J({valueHex:c})}},u(Qt,"Pm"),Qt);kt.CLASS_NAME="CertID";var oc="certID",cc="certStatus",lc="thisUpdate",Gr="nextUpdate",mi="singleExtensions",nM=[oc,cc,lc,Gr,mi],Vt,gw=(Vt=class extends F{constructor(e={}){super(),this.certID=g(e,oc,Vt.defaultValues(oc)),this.certStatus=g(e,cc,Vt.defaultValues(cc)),this.thisUpdate=g(e,lc,Vt.defaultValues(lc)),Gr in e&&(this.nextUpdate=g(e,Gr,Vt.defaultValues(Gr))),mi in e&&(this.singleExtensions=g(e,mi,Vt.defaultValues(mi))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case oc:return new kt;case cc:return{};case lc:case Gr:return new Date(0,0,0);case mi:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case oc:return kt.compareWithDefault("hashAlgorithm",t.hashAlgorithm)&&kt.compareWithDefault("issuerNameHash",t.issuerNameHash)&&kt.compareWithDefault("issuerKeyHash",t.issuerKeyHash)&&kt.compareWithDefault("serialNumber",t.serialNumber);case cc:return Object.keys(t).length===0;case lc:case Gr:return t===Vt.defaultValues(e);default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[kt.schema(t.certID||{}),new Ce({value:[new se({name:t.certStatus||w,idBlock:{tagClass:3,tagNumber:0}}),new v({name:t.certStatus||w,idBlock:{tagClass:3,tagNumber:1},value:[new Ie,new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new qi]})]}),new se({name:t.certStatus||w,idBlock:{tagClass:3,tagNumber:2},lenBlock:{length:1}})]}),new Ie({name:t.thisUpdate||w}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Ie({name:t.nextUpdate||w})]}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[Le.schema(t.singleExtensions||{})]})]})}fromSchema(e){Y(e,nM);let t=H(e,e,Vt.schema({names:{certID:{names:{blockName:oc}},certStatus:cc,thisUpdate:lc,nextUpdate:Gr,singleExtensions:{names:{blockName:mi}}}}));R.assertSchema(t,this.className),this.certID=new kt({schema:t.result.certID}),this.certStatus=t.result.certStatus,this.thisUpdate=t.result.thisUpdate.toDate(),Gr in t.result&&(this.nextUpdate=t.result.nextUpdate.toDate()),mi in t.result&&(this.singleExtensions=Array.from(t.result.singleExtensions.valueBlock.value,s=>new xt({schema:s})))}toSchema(){let e=[];return e.push(this.certID.toSchema()),e.push(this.certStatus),e.push(new Ie({valueDate:this.thisUpdate})),this.nextUpdate&&e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:[new Ie({valueDate:this.nextUpdate})]})),this.singleExtensions&&e.push(new M({value:Array.from(this.singleExtensions,t=>t.toSchema())})),new M({value:e})}toJSON(){let e={certID:this.certID.toJSON(),certStatus:this.certStatus.toJSON(),thisUpdate:this.thisUpdate};return this.nextUpdate&&(e.nextUpdate=this.nextUpdate),this.singleExtensions&&(e.singleExtensions=Array.from(this.singleExtensions,t=>t.toJSON())),e}},u(Vt,"sw"),Vt);gw.CLASS_NAME="SingleResponse";var id="tbs",fi="version",GA="responderID",FA="producedAt",HA="responses",uc="responseExtensions",_i="ResponseData",Nd=`${_i}.${fi}`,hc=`${_i}.${GA}`,dw=`${_i}.${FA}`,mw=`${_i}.${HA}`,vd=`${_i}.${uc}`,rM=[_i,Nd,hc,dw,mw,vd],ot,nn=(ot=class extends F{get tbs(){return ne.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(g(e,id,ot.defaultValues(id))),fi in e&&(this.version=g(e,fi,ot.defaultValues(fi))),this.responderID=g(e,GA,ot.defaultValues(GA)),this.producedAt=g(e,FA,ot.defaultValues(FA)),this.responses=g(e,HA,ot.defaultValues(HA)),uc in e&&(this.responseExtensions=g(e,uc,ot.defaultValues(uc))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case fi:return 0;case id:return Re;case GA:return{};case FA:return new Date(0,0,0);case HA:case uc:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case id:return t.byteLength===0;case GA:return Object.keys(t).length===0;case FA:return t===ot.defaultValues(e);case HA:case uc:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||_i,value:[new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new x({name:t.version||Nd})]}),new Ce({value:[new v({name:t.responderID||hc,idBlock:{tagClass:3,tagNumber:1},value:[ye.schema(t.ResponseDataByName||{names:{blockName:"ResponseData.byName"}})]}),new v({name:t.responderID||hc,idBlock:{tagClass:3,tagNumber:2},value:[new J({name:t.ResponseDataByKey||"ResponseData.byKey"})]})]}),new Ie({name:t.producedAt||dw}),new M({value:[new ae({name:mw,value:gw.schema(t.response||{})})]}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[Le.schema(t.extensions||{names:{blockName:vd}})]})]})}fromSchema(e){Y(e,rM);let t=H(e,e,ot.schema());R.assertSchema(t,this.className),this.tbsView=t.result.ResponseData.valueBeforeDecodeView,Nd in t.result&&(this.version=t.result[Nd].valueBlock.valueDec),t.result[hc].idBlock.tagNumber===1?this.responderID=new ye({schema:t.result[hc].valueBlock.value[0]}):this.responderID=t.result[hc].valueBlock.value[0],this.producedAt=t.result[dw].toDate(),this.responses=Array.from(t.result[mw],s=>new gw({schema:s})),vd in t.result&&(this.responseExtensions=Array.from(t.result[vd].valueBlock.value,s=>new xt({schema:s})))}toSchema(e=!1){let t;if(e===!1){if(!this.tbsView.byteLength)return ot.schema();let s=Qe(this.tbsView);R.assert(s,"TBS Response Data"),t=s.result}else{let s=[];fi in this&&s.push(new v({idBlock:{tagClass:3,tagNumber:0},value:[new x({value:this.version})]})),this.responderID instanceof ye?s.push(new v({idBlock:{tagClass:3,tagNumber:1},value:[this.responderID.toSchema()]})):s.push(new v({idBlock:{tagClass:3,tagNumber:2},value:[this.responderID]})),s.push(new Ie({valueDate:this.producedAt})),s.push(new M({value:Array.from(this.responses,n=>n.toSchema())})),this.responseExtensions&&s.push(new v({idBlock:{tagClass:3,tagNumber:1},value:[new M({value:Array.from(this.responseExtensions,n=>n.toSchema())})]})),t=new M({value:s})}return t}toJSON(){let e={};return fi in this&&(e.version=this.version),this.responderID&&(e.responderID=this.responderID),this.producedAt&&(e.producedAt=this.producedAt),this.responses&&(e.responses=Array.from(this.responses,t=>t.toJSON())),this.responseExtensions&&(e.responseExtensions=Array.from(this.responseExtensions,t=>t.toJSON())),e}},u(ot,"dw"),ot);nn.CLASS_NAME="ResponseData";var Bf="trustedCerts",pf="certs",Ef="crls",yf="ocsps",If="checkDate",Cf="findOrigin",Mf="findIssuer",vi;(function(i){i[i.unknown=-1]="unknown",i[i.success=0]="success",i[i.noRevocation=11]="noRevocation",i[i.noPath=60]="noPath",i[i.noValidPath=97]="noValidPath"})(vi||(vi={}));var zi,Ac=(zi=class extends Error{constructor(e,t){super(t),this.name=zi.NAME,this.code=e,this.message=t}},u(zi,"Dw"),zi);Ac.NAME="ChainValidationError";var Zi,nB=(Zi=class{constructor(e={}){this.trustedCerts=g(e,Bf,this.defaultValues(Bf)),this.certs=g(e,pf,this.defaultValues(pf)),this.crls=g(e,Ef,this.defaultValues(Ef)),this.ocsps=g(e,yf,this.defaultValues(yf)),this.checkDate=g(e,If,this.defaultValues(If)),this.findOrigin=g(e,Cf,this.defaultValues(Cf)),this.findIssuer=g(e,Mf,this.defaultValues(Mf))}static defaultFindOrigin(e,t){e.tbsView.byteLength===0&&(e.tbsView=new Uint8Array(e.encodeTBS().toBER()));for(let s of t.certs)if(s.tbsView.byteLength===0&&(s.tbsView=new Uint8Array(s.encodeTBS().toBER())),ne.isEqual(e.tbsView,s.tbsView))return"Intermediate Certificates";for(let s of t.trustedCerts)if(s.tbsView.byteLength===0&&(s.tbsView=new Uint8Array(s.encodeTBS().toBER())),ne.isEqual(e.tbsView,s.tbsView))return"Trusted Certificates";return"Unknown"}async defaultFindIssuer(e,t,s=ce(!0)){let n=[],r=null,a=null,o=null;if(e.subject.isEqual(e.issuer))try{if(await e.verify(void 0,s))return[e]}catch{}if(e.extensions){for(let l of e.extensions)if(l.extnID===Ww&&l.parsedValue instanceof Zw){l.parsedValue.keyIdentifier?r=l.parsedValue.keyIdentifier:(l.parsedValue.authorityCertIssuer&&(a=l.parsedValue.authorityCertIssuer),l.parsedValue.authorityCertSerialNumber&&(o=l.parsedValue.authorityCertSerialNumber));break}}function c(l){if(r!==null&&l.extensions){let h=!1;for(let d of l.extensions)if(d.extnID==="2.5.29.14"&&d.parsedValue){h=!0,ne.isEqual(d.parsedValue.valueBlock.valueHex,r.valueBlock.valueHexView)&&n.push(l);break}if(h)return}let A=!1;o!==null&&(A=l.serialNumber.isEqual(o)),a!==null?l.subject.isEqual(a)&&A&&n.push(l):e.issuer.isEqual(l.subject)&&n.push(l)}u(c,"o");for(let l of t.trustedCerts)c(l);for(let l of t.certs)c(l);for(let l=n.length-1;l>=0;l--)try{await e.verify(n[l],s)===!1&&n.splice(l,1)}catch{n.splice(l,1)}return n}defaultValues(e){switch(e){case Bf:case pf:case Ef:case yf:return[];case If:return new Date;case Cf:return Zi.defaultFindOrigin;case Mf:return this.defaultFindIssuer;default:throw new Error(`Invalid member name for CertificateChainValidationEngine class: ${e}`)}}async sort(e=!1,t=ce(!0)){let s=[],n=u(async(m,E)=>{let y=[];function f(B){let C=!0;for(let I=0;I<B.length;I++){for(let b=0;b<B.length;b++)if(b!==I&&B[I]===B[b]){C=!1;break}if(!C)break}return C}if(u(f,"r"),function(B,C){for(let I=0;I<C.length;I++)if(ne.isEqual(B.tbsView,C[I].tbsView))return!0;return!1}(m,this.trustedCerts))return[[m]];let p=await this.findIssuer(m,this,E);if(p.length===0)throw new Error("No valid certificate paths found");for(let B=0;B<p.length;B++){if(ne.isEqual(p[B].tbsView,m.tbsView)){y.push([p[B]]);continue}let C=await n(p[B],E);for(let I=0;I<C.length;I++){let b=C[I].slice();b.splice(0,0,p[B]),f(b)?y.push(b):y.push(C[I])}}return y},"n"),r=u(async m=>{let E=[],y=[],f=[];if(E.push(...s.filter(p=>m.issuer.isEqual(p.subject))),E.length===0)return{status:1,statusMessage:"No certificate's issuers"};if(y.push(...this.crls.filter(p=>p.issuer.isEqual(m.issuer))),y.length===0)return{status:2,statusMessage:"No CRLs for specific certificate issuer"};for(let p=0;p<y.length;p++){let B=y[p];if(!(B.nextUpdate&&B.nextUpdate.value<this.checkDate))for(let C=0;C<E.length;C++)try{if(await y[p].verify({issuerCertificate:E[C]},t)){f.push({crl:y[p],certificate:E[C]});break}}catch{}}return f.length?{status:0,statusMessage:w,result:f}:{status:3,statusMessage:"No valid CRLs found"}},"r"),a=u(async(m,E)=>{let y=t.getAlgorithmByOID(m.signatureAlgorithm.algorithmId);if(!y.name||!y.hash)return 1;for(let f=0;f<this.ocsps.length;f++){let p=this.ocsps[f],B=await p.getCertificateStatus(m,E,t);if(B.isForCertificate)return B.status===0?0:1}return 2},"a");async function o(m,E=!1){let y=!1,f=!1,p=!1,B=!1;if(m.extensions){for(let C=0;C<m.extensions.length;C++){let I=m.extensions[C];if(I.critical&&!I.parsedValue)return{result:!1,resultCode:6,resultMessage:`Unable to parse critical certificate extension: ${I.extnID}`};if(I.extnID==="2.5.29.15"){p=!0;let b=new Uint8Array(I.parsedValue.valueBlock.valueHex);4&~b[0]||(f=!0),2&~b[0]||(B=!0)}I.extnID===Lw&&"cA"in I.parsedValue&&I.parsedValue.cA===!0&&(y=!0)}if(f===!0&&y===!1)return{result:!1,resultCode:3,resultMessage:'Unable to build certificate chain - using "keyCertSign" flag set without BasicConstraints'};if(p===!0&&y===!0&&f===!1)return{result:!1,resultCode:4,resultMessage:'Unable to build certificate chain - "keyCertSign" flag was not set'};if(y===!0&&p===!0&&E&&B===!1)return{result:!1,resultCode:5,resultMessage:'Unable to build certificate chain - intermediate certificate must have "cRLSign" key usage flag'}}return y===!1?{result:!1,resultCode:7,resultMessage:"Unable to build certificate chain - more than one possible end-user certificate"}:{result:!0,resultCode:0,resultMessage:w}}u(o,"i"),s.push(...this.trustedCerts),s.push(...this.certs);for(let m=0;m<s.length;m++)for(let E=0;E<s.length;E++)if(m!==E&&ne.isEqual(s[m].tbsView,s[E].tbsView)){s.splice(E,1),m=0;break}let c=s[s.length-1],l,A=[c];if(l=await n(c,t),l.length===0)throw new Ac(vi.noPath,"Unable to find certificate path");for(let m=l.length-1;m>=0;m--){let E=!1;for(let y=0;y<l[m].length;y++){let f=l[m][y];for(let p=0;p<this.trustedCerts.length;p++)if(ne.isEqual(f.tbsView,this.trustedCerts[p].tbsView)){E=!0;break}if(E)break}E||l.splice(m,1)}if(l.length===0)throw new Ac(vi.noValidPath,"No valid certificate paths found");let h=l[0].length,d=0;for(let m=0;m<l.length;m++)l[m].length<h&&(h=l[m].length,d=m);for(let m=0;m<l[d].length;m++)A.push(l[d][m]);if(l=await(async(m,E)=>{for(let y=0;y<m.length;y++)if(m[y].notBefore.value>E||m[y].notAfter.value<E)return{result:!1,resultCode:8,resultMessage:"The certificate is either not yet valid or expired"};if(m.length<2)return{result:!1,resultCode:9,resultMessage:"Too short certificate path"};for(let y=m.length-2;y>=0;y--)if(m[y].issuer.isEqual(m[y].subject)===!1&&m[y].issuer.isEqual(m[y+1].subject)===!1)return{result:!1,resultCode:10,resultMessage:"Incorrect name chaining"};if(this.crls.length!==0||this.ocsps.length!==0)for(let y=0;y<m.length-1;y++){let f=2,p={status:0,statusMessage:w};if(this.ocsps.length!==0)switch(f=await a(m[y],m[y+1]),f){case 0:continue;case 1:return{result:!1,resultCode:12,resultMessage:"One of certificates was revoked via OCSP response"}}if(this.crls.length!==0){if(p=await r(m[y]),p.status===0&&p.result)for(let B=0;B<p.result.length;B++){if(p.result[B].crl.isCertificateRevoked(m[y]))return{result:!1,resultCode:12,resultMessage:"One of certificates had been revoked"};if((await o(p.result[B].certificate,!0)).result===!1)return{result:!1,resultCode:13,resultMessage:"CRL issuer certificate is not a CA certificate or does not have crlSign flag"}}else if(e===!1)throw new Ac(vi.noRevocation,`No revocation values found for one of certificates: ${p.statusMessage}`)}else if(f===2)return{result:!1,resultCode:11,resultMessage:"No revocation values found for one of certificates"};if(f===2&&p.status===2&&e){let B=m[y+1],C=!1;if(B.extensions)for(let I of B.extensions)switch(I.extnID){case oy:case Ow:case Pw:C=!0}if(C)throw new Ac(vi.noRevocation,`No revocation values found for one of certificates: ${p.statusMessage}`)}}for(let[y,f]of m.entries())if(y&&!(await o(f)).result)return{result:!1,resultCode:14,resultMessage:"One of intermediate certificates is not a CA certificate"};return{result:!0}})(A,this.checkDate),l.result===!1)throw l;return A}async verify(e={},t=ce(!0)){function s(c,l){let A=Wr(c),h=Wr(l),d=A.split("."),m=h.split("."),E=d.length,y=m.length;if(E===0||y===0||E<y)return!1;for(let f=0;f<E;f++)if(d[f].length===0)return!1;for(let f=0;f<y;f++)if(m[f].length===0){if(f===0){if(y===1)return!1;continue}return!1}for(let f=0;f<y;f++)if(m[y-1-f].length!==0&&d[E-1-f].localeCompare(m[y-1-f])!==0)return!1;return!0}u(s,"s");function n(c,l){let A=Wr(c),h=Wr(l),d=A.split("@"),m=h.split("@");if(d.length===0||m.length===0||d.length<m.length)return!1;if(m.length===1){if(s(d[1],m[0])){let E=d[1].split("."),y=m[0].split(".");return y[0].length===0||E.length===y.length}return!1}return A.localeCompare(h)===0}u(n,"n");function r(c,l){let A=Wr(c),h=Wr(l),d=A.split("/");if(h.split("/").length>1)return!1;if(d.length>1){for(let m=0;m<d.length;m++)if(d[m].length>0&&d[m].charAt(d[m].length-1)!==":"){A=d[m].split(":")[0];break}}if(s(A,h)){let m=A.split("."),E=h.split(".");return E[0].length===0||m.length===E.length}return!1}u(r,"r");function a(c,l){let A=c.valueBlock.valueHexView,h=l.valueBlock.valueHexView;if(A.length===4&&h.length===8){for(let d=0;d<4;d++)if((A[d]^h[d])&h[d+4])return!1;return!0}if(A.length===16&&h.length===32){for(let d=0;d<16;d++)if((A[d]^h[d])&h[d+16])return!1;return!0}return!1}u(a,"a");function o(c,l){if(c.typesAndValues.length===0||l.typesAndValues.length===0)return!0;if(c.typesAndValues.length<l.typesAndValues.length)return!1;let A=!0,h=0;for(let d=0;d<l.typesAndValues.length;d++){let m=!1;for(let E=h;E<c.typesAndValues.length;E++)if(m=c.typesAndValues[E].isEqual(l.typesAndValues[d]),c.typesAndValues[E].type===l.typesAndValues[d].type&&(A=A&&m),m===!0){if(h===0||h===E){h=E+1;break}return!1}if(m===!1)return!1}return h!==0&&A}u(o,"i");try{if(this.certs.length===0)throw new Error("Empty certificate array");let c=e.passedWhenNotRevValues||!1,l=e.initialPolicySet||[Rt],A=e.initialExplicitPolicy||!1,h=e.initialPolicyMappingInhibit||!1,d=e.initialInhibitPolicy||!1,m=e.initialPermittedSubtreesSet||[],E=e.initialExcludedSubtreesSet||[],y=e.initialRequiredNameForms||[],f=A,p=h,B=d,C=[!1,!1,!1],I=0,b=0,V=0,G=m,D=E,S=y,Q=1;this.certs=await this.sort(c,t);let N=[];N.push(Rt);let T=[],j=new Array(this.certs.length-1);for(let O=0;O<this.certs.length-1;O++)j[O]=!0;T.push(j);let U=new Array(this.certs.length-1),L=new Array(this.certs.length-1),q=f?this.certs.length-1:-1;for(let O=this.certs.length-2;O>=0;O--,Q++){let X=this.certs[O];if(X.extensions){for(let P=0;P<X.extensions.length;P++){let ee=X.extensions[P];if(ee.extnID===cy){L[O]=ee.parsedValue;for(let oe=0;oe<N.length;oe++)if(N[oe]===Rt){delete T[oe][O];break}for(let oe=0;oe<ee.parsedValue.certificatePolicies.length;oe++){let fe=-1,Me=ee.parsedValue.certificatePolicies[oe].policyIdentifier;for(let ge=0;ge<N.length;ge++)if(Me===N[ge]){fe=ge;break}if(fe===-1){N.push(Me);let ge=new Array(this.certs.length-1);ge[O]=!0,T.push(ge)}else T[fe][O]=!0}}if(ee.extnID===ly){if(p)return{result:!1,resultCode:98,resultMessage:"Policy mapping prohibited"};U[O]=ee.parsedValue}ee.extnID===uy&&f===!1&&(ee.parsedValue.requireExplicitPolicy===0?(f=!0,q=O):C[0]===!1?(C[0]=!0,I=ee.parsedValue.requireExplicitPolicy):I=I>ee.parsedValue.requireExplicitPolicy?ee.parsedValue.requireExplicitPolicy:I,ee.parsedValue.inhibitPolicyMapping===0?p=!0:C[1]===!1?(C[1]=!0,b=ee.parsedValue.inhibitPolicyMapping+1):b=b>ee.parsedValue.inhibitPolicyMapping+1?ee.parsedValue.inhibitPolicyMapping+1:b),ee.extnID==="2.5.29.54"&&B===!1&&(ee.parsedValue.valueBlock.valueDec===0?B=!0:C[2]===!1?(C[2]=!0,V=ee.parsedValue.valueBlock.valueDec):V=V>ee.parsedValue.valueBlock.valueDec?ee.parsedValue.valueBlock.valueDec:V)}if(B===!0){let P=-1;for(let ee=0;ee<N.length;ee++)if(N[ee]===Rt){P=ee;break}P!==-1&&delete T[0][O]}f===!1&&C[0]===!0&&(I--,I===0&&(f=!0,q=O,C[0]=!1)),p===!1&&C[1]===!0&&(b--,b===0&&(p=!0,C[1]=!1)),B===!1&&C[2]===!0&&(V--,V===0&&(B=!0,C[2]=!1))}}for(let O=0;O<this.certs.length-1;O++)if(O<this.certs.length-2&&U[O+1]!==void 0)for(let X=0;X<U[O+1].mappings.length;X++){if(U[O+1].mappings[X].issuerDomainPolicy===Rt||U[O+1].mappings[X].subjectDomainPolicy===Rt)return{result:!1,resultCode:99,resultMessage:'The "anyPolicy" should not be a part of policy mapping scheme'};let P=-1,ee=-1;for(let oe=0;oe<N.length;oe++)N[oe]===U[O+1].mappings[X].issuerDomainPolicy&&(P=oe),N[oe]===U[O+1].mappings[X].subjectDomainPolicy&&(ee=oe);T[P][O]!==void 0&&delete T[P][O];for(let oe=0;oe<L[O].certificatePolicies.length;oe++)if(U[O+1].mappings[X].subjectDomainPolicy===L[O].certificatePolicies[oe].policyIdentifier&&P!==-1&&ee!==-1)for(let fe=0;fe<=O;fe++)T[ee][fe]!==void 0&&(T[P][fe]=!0,delete T[ee][fe])}for(let O=0;O<N.length;O++)if(N[O]===Rt)for(let X=0;X<q;X++)delete T[O][X];let K=[];for(let O=0;O<T.length;O++){let X=!0;for(let P=0;P<this.certs.length-1;P++){let ee=!1;if(P<q&&N[O]===Rt&&N.length>1){X=!1;break}if(T[O][P]===void 0){if(P>=q){for(let oe=0;oe<N.length;oe++)if(N[oe]===Rt){T[oe][P]===!0&&(ee=!0);break}}if(!ee){X=!1;break}}}X===!0&&K.push(N[O])}let $=[];if(l.length===1&&l[0]===Rt&&f===!1)$=l;else if(K.length===1&&K[0]===Rt)$=l;else for(let O=0;O<K.length;O++)for(let X=0;X<l.length;X++)if(l[X]===K[O]||l[X]===Rt){$.push(K[O]);break}let _={result:$.length>0,resultCode:0,resultMessage:$.length>0?w:'Zero "userConstrPolicies" array, no intersections with "authConstrPolicies"',authConstrPolicies:K,userConstrPolicies:$,explicitPolicyIndicator:f,policyMappings:U,certificatePath:this.certs};if($.length===0||_.result===!1)return _;Q=1;for(let O=this.certs.length-2;O>=0;O--,Q++){let X=this.certs[O],P=[],ee=[],oe=[];if(X.extensions)for(let te=0;te<X.extensions.length;te++){let W=X.extensions[te];W.extnID===iy&&("permittedSubtrees"in W.parsedValue&&(ee=ee.concat(W.parsedValue.permittedSubtrees)),"excludedSubtrees"in W.parsedValue&&(oe=oe.concat(W.parsedValue.excludedSubtrees))),W.extnID===sy&&(P=P.concat(W.parsedValue.altNames))}let fe=S.length<=0;for(let te=0;te<S.length;te++)switch(S[te].base.type){case 4:if(S[te].base.value.typesAndValues.length!==X.subject.typesAndValues.length)continue;fe=!0;for(let W=0;W<X.subject.typesAndValues.length;W++)if(X.subject.typesAndValues[W].type!==S[te].base.value.typesAndValues[W].type){fe=!1;break}if(fe===!0)break}if(fe===!1)throw _.result=!1,_.resultCode=21,_.resultMessage="No necessary name form found",_;let Me=[[],[],[],[],[]];for(let te=0;te<G.length;te++)switch(G[te].base.type){case 1:Me[0].push(G[te]);break;case 2:Me[1].push(G[te]);break;case 4:Me[2].push(G[te]);break;case 6:Me[3].push(G[te]);break;case 7:Me[4].push(G[te])}for(let te=0;te<5;te++){let W=!1,Ye=!1,qe=Me[te];for(let At=0;At<qe.length;At++){switch(te){case 0:if(P.length>0)for(let Ae=0;Ae<P.length;Ae++)P[Ae].type===1&&(Ye=!0,W=W||n(P[Ae].value,qe[At].base.value));else for(let Ae=0;Ae<X.subject.typesAndValues.length;Ae++)X.subject.typesAndValues[Ae].type!=="1.2.840.113549.1.9.1"&&X.subject.typesAndValues[Ae].type!=="0.9.2342.19200300.100.1.3"||(Ye=!0,W=W||n(X.subject.typesAndValues[Ae].value.valueBlock.value,qe[At].base.value));break;case 1:if(P.length>0)for(let Ae=0;Ae<P.length;Ae++)P[Ae].type===2&&(Ye=!0,W=W||s(P[Ae].value,qe[At].base.value));break;case 2:Ye=!0,W=o(X.subject,qe[At].base.value);break;case 3:if(P.length>0)for(let Ae=0;Ae<P.length;Ae++)P[Ae].type===6&&(Ye=!0,W=W||r(P[Ae].value,qe[At].base.value));break;case 4:if(P.length>0)for(let Ae=0;Ae<P.length;Ae++)P[Ae].type===7&&(Ye=!0,W=W||a(P[Ae].value,qe[At].base.value))}if(W)break}if(W===!1&&qe.length>0&&Ye)throw _.result=!1,_.resultCode=41,_.resultMessage='Failed to meet "permitted sub-trees" name constraint',_}let ge=!1;for(let te=0;te<D.length;te++){switch(D[te].base.type){case 1:if(P.length>=0)for(let W=0;W<P.length;W++)P[W].type===1&&(ge=ge||n(P[W].value,D[te].base.value));else for(let W=0;W<X.subject.typesAndValues.length;W++)X.subject.typesAndValues[W].type!=="1.2.840.113549.1.9.1"&&X.subject.typesAndValues[W].type!=="0.9.2342.19200300.100.1.3"||(ge=ge||n(X.subject.typesAndValues[W].value.valueBlock.value,D[te].base.value));break;case 2:if(P.length>0)for(let W=0;W<P.length;W++)P[W].type===2&&(ge=ge||s(P[W].value,D[te].base.value));break;case 4:ge=ge||o(X.subject,D[te].base.value);break;case 6:if(P.length>0)for(let W=0;W<P.length;W++)P[W].type===6&&(ge=ge||r(P[W].value,D[te].base.value));break;case 7:if(P.length>0)for(let W=0;W<P.length;W++)P[W].type===7&&(ge=ge||a(P[W].value,D[te].base.value))}if(ge)break}if(ge===!0)throw _.result=!1,_.resultCode=42,_.resultMessage='Failed to meet "excluded sub-trees" name constraint',_;G=G.concat(ee),D=D.concat(oe)}return _}catch(c){return c instanceof Error?c instanceof Ac?{result:!1,resultCode:c.code,resultMessage:c.message,error:c}:{result:!1,resultCode:vi.unknown,resultMessage:c.message,error:c}:c&&typeof c=="object"&&"resultMessage"in c?c:{result:!1,resultCode:-1,resultMessage:`${c}`}}}},u(Zi,"Nw"),Zi),Dd="tbsResponseData",YA="signatureAlgorithm",jA="signature",gc="certs",Mg="BasicOCSPResponse",fw=`${Mg}.${Dd}`,ww=`${Mg}.${YA}`,Bw=`${Mg}.${jA}`,Qd=`${Mg}.${gc}`,aM=[fw,ww,Bw,Qd],Yt,lg=(Yt=class extends F{constructor(e={}){super(),this.tbsResponseData=g(e,Dd,Yt.defaultValues(Dd)),this.signatureAlgorithm=g(e,YA,Yt.defaultValues(YA)),this.signature=g(e,jA,Yt.defaultValues(jA)),gc in e&&(this.certs=g(e,gc,Yt.defaultValues(gc))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Dd:return new nn;case YA:return new k;case jA:return new ue;case gc:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case"type":{let s=nn.compareWithDefault("tbs",t.tbs)&&nn.compareWithDefault("responderID",t.responderID)&&nn.compareWithDefault("producedAt",t.producedAt)&&nn.compareWithDefault("responses",t.responses);return"responseExtensions"in t&&(s=s&&nn.compareWithDefault("responseExtensions",t.responseExtensions)),s}case YA:return t.algorithmId===w&&!("algorithmParams"in t);case jA:return t.isEqual(Yt.defaultValues(e));case gc:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||Mg,value:[nn.schema(t.tbsResponseData||{names:{blockName:fw}}),k.schema(t.signatureAlgorithm||{names:{blockName:ww}}),new ue({name:t.signature||Bw}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new M({value:[new ae({name:Qd,value:rt.schema(t.certs||{})})]})]})]})}fromSchema(e){Y(e,aM);let t=H(e,e,Yt.schema());R.assertSchema(t,this.className),this.tbsResponseData=new nn({schema:t.result[fw]}),this.signatureAlgorithm=new k({schema:t.result[ww]}),this.signature=t.result[Bw],Qd in t.result&&(this.certs=Array.from(t.result[Qd],s=>new rt({schema:s})))}toSchema(){let e=[];return e.push(this.tbsResponseData.toSchema()),e.push(this.signatureAlgorithm.toSchema()),e.push(this.signature),this.certs&&e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:[new M({value:Array.from(this.certs,t=>t.toSchema())})]})),new M({value:e})}toJSON(){let e={tbsResponseData:this.tbsResponseData.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signature:this.signature.toJSON()};return this.certs&&(e.certs=Array.from(this.certs,t=>t.toJSON())),e}async getCertificateStatus(e,t,s=ce(!0)){let n={isForCertificate:!1,status:2},r={},a=[];for(let o of this.tbsResponseData.responses){let c=s.getAlgorithmByOID(o.certID.hashAlgorithm.algorithmId,!0,"CertID.hashAlgorithm");if(!r[c.name]){r[c.name]=1;let l=new kt;a.push(l),await l.createForCertificate(e,{hashAlgorithm:c.name,issuerCertificate:t},s)}}for(let o of this.tbsResponseData.responses)for(let c of a)if(o.certID.isEqual(c)){n.isForCertificate=!0;try{switch(o.certStatus.idBlock.isConstructed){case!0:o.certStatus.idBlock.tagNumber===1&&(n.status=1);break;case!1:switch(o.certStatus.idBlock.tagNumber){case 0:n.status=0;break;case 2:n.status=2}}}catch{}return n}return n}async sign(e,t="SHA-1",s=ce(!0)){if(!e)throw new Error("Need to provide a private key for signing");let n=await s.getSignatureParameters(e,t),r=n.parameters.algorithm;if(!("name"in r))throw new Error("Empty algorithm");this.signatureAlgorithm=n.signatureAlgorithm,this.tbsResponseData.tbsView=new Uint8Array(this.tbsResponseData.toSchema(!0).toBER());let a=await s.signWithPrivateKey(this.tbsResponseData.tbsView,e,{algorithm:r});this.signature=new ue({valueHex:a})}async verify(e={},t=ce(!0)){let s=null,n=-1,r=e.trustedCerts||[];if(!this.certs)throw new Error("No certificates attached to the BasicOCSPResponse");switch(!0){case this.tbsResponseData.responderID instanceof ye:for(let[c,l]of this.certs.entries())if(l.subject.isEqual(this.tbsResponseData.responderID)){n=c;break}break;case this.tbsResponseData.responderID instanceof J:for(let[c,l]of this.certs.entries())if(Vu(await t.digest({name:"sha-1"},l.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView),this.tbsResponseData.responderID.valueBlock.valueHex)){n=c;break}break;default:throw new Error("Wrong value for responderID")}if(n===-1)throw new Error("Correct certificate was not found in OCSP response");s=this.certs[n];let a=[s];for(let c of this.certs){let l=await Vy(c,s);l&&a.push(l)}if(!(await new nB({certs:a,trustedCerts:r}).verify({},t)).result)throw new Error("Validation of signer's certificate failed");return t.verifyWithPublicKey(this.tbsResponseData.tbsView,this.signature,this.certs[n].subjectPublicKeyInfo,this.signatureAlgorithm)}},u(Yt,"Rw"),Yt);lg.CLASS_NAME="BasicOCSPResponse";var bf="tbs",Nf="version",vf="subject",Df="subjectPublicKeyInfo",ho="attributes",JA="signatureAlgorithm",LA="signatureValue",Fu="CertificationRequestInfo",rB=`${Fu}.version`,aB=`${Fu}.subject`,iB=`${Fu}.subjectPublicKeyInfo`,Em=`${Fu}.attributes`,iM=[Fu,rB,aB,iB,Em,JA,LA];function oM(i={}){let e=g(i,"names",{});return new M({name:e.CertificationRequestInfo||Fu,value:[new x({name:e.CertificationRequestInfoVersion||rB}),ye.schema(e.subject||{names:{blockName:aB}}),us.schema({names:{blockName:iB}}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new ae({optional:!0,name:e.CertificationRequestInfoAttributes||Em,value:ke.schema(e.attributes||{})})]})]})}u(oM,"qw");var ct,cM=(ct=class extends F{get tbs(){return ne.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(g(e,bf,ct.defaultValues(bf))),this.version=g(e,Nf,ct.defaultValues(Nf)),this.subject=g(e,vf,ct.defaultValues(vf)),this.subjectPublicKeyInfo=g(e,Df,ct.defaultValues(Df)),ho in e&&(this.attributes=g(e,ho,ct.defaultValues(ho))),this.signatureAlgorithm=g(e,JA,ct.defaultValues(JA)),this.signatureValue=g(e,LA,ct.defaultValues(LA)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case bf:return Re;case Nf:return 0;case vf:return new ye;case Df:return new us;case ho:return[];case JA:return new k;case LA:return new ue;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({value:[oM(t.certificationRequestInfo||{}),new M({name:t.signatureAlgorithm||JA,value:[new z,new re({optional:!0})]}),new ue({name:t.signatureValue||LA})]})}fromSchema(e){Y(e,iM);let t=H(e,e,ct.schema());R.assertSchema(t,this.className),this.tbsView=t.result.CertificationRequestInfo.valueBeforeDecodeView,this.version=t.result[rB].valueBlock.valueDec,this.subject=new ye({schema:t.result[aB]}),this.subjectPublicKeyInfo=new us({schema:t.result[iB]}),Em in t.result&&(this.attributes=Array.from(t.result[Em],s=>new ke({schema:s}))),this.signatureAlgorithm=new k({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}encodeTBS(){let e=[new x({value:this.version}),this.subject.toSchema(),this.subjectPublicKeyInfo.toSchema()];return ho in this&&e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.attributes||[],t=>t.toSchema())})),new M({value:e})}toSchema(e=!1){let t;if(e===!1){if(this.tbsView.byteLength===0)return ct.schema();let s=Qe(this.tbsView);R.assert(s,"PKCS#10 Certificate Request"),t=s.result}else t=this.encodeTBS();return new M({value:[t,this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){let e={tbs:ie.ToHex(this.tbsView),version:this.version,subject:this.subject.toJSON(),subjectPublicKeyInfo:this.subjectPublicKeyInfo.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()};return ho in this&&(e.attributes=Array.from(this.attributes||[],t=>t.toJSON())),e}async sign(e,t="SHA-1",s=ce(!0)){if(!e)throw new Error("Need to provide a private key for signing");let n=await s.getSignatureParameters(e,t),r=n.parameters;this.signatureAlgorithm=n.signatureAlgorithm,this.tbsView=new Uint8Array(this.encodeTBS().toBER());let a=await s.signWithPrivateKey(this.tbsView,e,r);this.signatureValue=new ue({valueHex:a})}async verify(e=ce(!0)){return e.verifyWithPublicKey(this.tbsView,this.signatureValue,this.subjectPublicKeyInfo,this.signatureAlgorithm)}async getPublicKey(e,t=ce(!0)){return t.getPublicKey(this.subjectPublicKeyInfo,this.signatureAlgorithm,e)}},u(ct,"_w"),ct);cM.CLASS_NAME="CertificationRequest";var wi="digestAlgorithm",Bi="digest",lM=[wi,Bi],js,Di=(js=class extends F{constructor(e={}){super(),this.digestAlgorithm=g(e,wi,js.defaultValues(wi)),this.digest=g(e,Bi,js.defaultValues(Bi)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case wi:return new k;case Bi:return new J;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case wi:return k.compareWithDefault("algorithmId",t.algorithmId)&&!("algorithmParams"in t);case Bi:return t.isEqual(js.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[k.schema(t.digestAlgorithm||{names:{blockName:wi}}),new J({name:t.digest||Bi})]})}fromSchema(e){Y(e,lM);let t=H(e,e,js.schema({names:{digestAlgorithm:{names:{blockName:wi}},digest:Bi}}));R.assertSchema(t,this.className),this.digestAlgorithm=new k({schema:t.result.digestAlgorithm}),this.digest=t.result.digest}toSchema(){return new M({value:[this.digestAlgorithm.toSchema(),this.digest]})}toJSON(){return{digestAlgorithm:this.digestAlgorithm.toJSON(),digest:this.digest.toJSON()}}},u(js,"sd"),js);Di.CLASS_NAME="DigestInfo";var dc="eContentType",qt="eContent",uM=[dc,qt],jt,Qi=(jt=class extends F{constructor(e={}){if(super(),this.eContentType=g(e,dc,jt.defaultValues(dc)),qt in e&&(this.eContent=g(e,qt,jt.defaultValues(qt)),this.eContent.idBlock.tagClass===1&&this.eContent.idBlock.tagNumber===4&&this.eContent.idBlock.isConstructed===!1)){let t=new J({idBlock:{isConstructed:!0},isConstructed:!0}),s=0,n=this.eContent.valueBlock.valueHexView.slice().buffer,r=n.byteLength;for(;r>0;){let a=new Uint8Array(n,s,s+65536>n.byteLength?n.byteLength-s:65536),o=new ArrayBuffer(a.length),c=new Uint8Array(o);for(let l=0;l<c.length;l++)c[l]=a[l];t.valueBlock.value.push(new J({valueHex:o})),r-=a.length,s+=a.length}this.eContent=t}e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case dc:return w;case qt:return new J;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case dc:return t===w;case qt:return t.idBlock.tagClass===1&&t.idBlock.tagNumber===4&&t.isEqual(jt.defaultValues(qt));default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.eContentType||w}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new re({name:t.eContent||w})]})]})}fromSchema(e){Y(e,uM);let t=H(e,e,jt.schema({names:{eContentType:dc,eContent:qt}}));R.assertSchema(t,this.className),this.eContentType=t.result.eContentType.valueBlock.toString(),qt in t.result&&(this.eContent=t.result.eContent)}toSchema(){let e=[];return e.push(new z({value:this.eContentType})),this.eContent&&jt.compareWithDefault(qt,this.eContent)===!1&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[this.eContent]})),new M({value:e})}toJSON(){let e={eContentType:this.eContentType};return this.eContent&&jt.compareWithDefault(qt,this.eContent)===!1&&(e.eContent=this.eContent.toJSON()),e}},u(jt,"id"),jt);Qi.CLASS_NAME="EncapsulatedContentInfo";var pi="mac",Ei="macSalt",rn="iterations",hM=[pi,Ei,rn],Jt,Fr=(Jt=class extends F{constructor(e={}){super(),this.mac=g(e,pi,Jt.defaultValues(pi)),this.macSalt=g(e,Ei,Jt.defaultValues(Ei)),rn in e&&(this.iterations=g(e,rn,Jt.defaultValues(rn))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case pi:return new Di;case Ei:return new J;case rn:return 1;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case pi:return Di.compareWithDefault("digestAlgorithm",t.digestAlgorithm)&&Di.compareWithDefault("digest",t.digest);case Ei:return t.isEqual(Jt.defaultValues(e));case rn:return t===Jt.defaultValues(e);default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,optional:t.optional||!0,value:[Di.schema(t.mac||{names:{blockName:pi}}),new J({name:t.macSalt||Ei}),new x({optional:!0,name:t.iterations||rn})]})}fromSchema(e){Y(e,hM);let t=H(e,e,Jt.schema({names:{mac:{names:{blockName:pi}},macSalt:Ei,iterations:rn}}));R.assertSchema(t,this.className),this.mac=new Di({schema:t.result.mac}),this.macSalt=t.result.macSalt,rn in t.result&&(this.iterations=t.result.iterations.valueBlock.valueDec)}toSchema(){let e=[this.mac.toSchema(),this.macSalt];return this.iterations!==void 0&&e.push(new x({value:this.iterations})),new M({value:e})}toJSON(){let e={mac:this.mac.toJSON(),macSalt:this.macSalt.toJSON()};return this.iterations!==void 0&&(e.iterations=this.iterations),e}},u(Jt,"ud"),Jt);Fr.CLASS_NAME="MacData";var Vi="hashAlgorithm",Si="hashedMessage",AM=[Vi,Si],is,cs=(is=class extends F{static async create(e,t,s=ce(!0)){let n=s.getOIDByAlgorithm({name:e},!0,"hashAlgorithm"),r=await s.digest(e,t);return new is({hashAlgorithm:new k({algorithmId:n,algorithmParams:new Ve}),hashedMessage:new J({valueHex:r})})}constructor(e={}){super(),this.hashAlgorithm=g(e,Vi,is.defaultValues(Vi)),this.hashedMessage=g(e,Si,is.defaultValues(Si)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Vi:return new k;case Si:return new J;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Vi:return t.algorithmId===w&&!("algorithmParams"in t);case Si:return t.isEqual(is.defaultValues(e))===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[k.schema(t.hashAlgorithm||{}),new J({name:t.hashedMessage||w})]})}fromSchema(e){Y(e,AM);let t=H(e,e,is.schema({names:{hashAlgorithm:{names:{blockName:Vi}},hashedMessage:Si}}));R.assertSchema(t,this.className),this.hashAlgorithm=new k({schema:t.result.hashAlgorithm}),this.hashedMessage=t.result.hashedMessage}toSchema(){return new M({value:[this.hashAlgorithm.toSchema(),this.hashedMessage]})}toJSON(){return{hashAlgorithm:this.hashAlgorithm.toJSON(),hashedMessage:this.hashedMessage.toJSON()}}},u(is,"wd"),is);cs.CLASS_NAME="MessageImprint";var mc="reqCert",Hr="singleRequestExtensions",gM=[mc,Hr],Js,ym=(Js=class extends F{constructor(e={}){super(),this.reqCert=g(e,mc,Js.defaultValues(mc)),Hr in e&&(this.singleRequestExtensions=g(e,Hr,Js.defaultValues(Hr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case mc:return new kt;case Hr:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case mc:return t.isEqual(Js.defaultValues(e));case Hr:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[kt.schema(t.reqCert||{}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[xt.schema(t.extensions||{names:{blockName:t.singleRequestExtensions||w}})]})]})}fromSchema(e){Y(e,gM);let t=H(e,e,Js.schema({names:{reqCert:{names:{blockName:mc}},extensions:{names:{blockName:Hr}}}}));R.assertSchema(t,this.className),this.reqCert=new kt({schema:t.result.reqCert}),Hr in t.result&&(this.singleRequestExtensions=Array.from(t.result.singleRequestExtensions.valueBlock.value,s=>new xt({schema:s})))}toSchema(){let e=[];return e.push(this.reqCert.toSchema()),this.singleRequestExtensions&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new M({value:Array.from(this.singleRequestExtensions,t=>t.toSchema())})]})),new M({value:e})}toJSON(){let e={reqCert:this.reqCert.toJSON()};return this.singleRequestExtensions&&(e.singleRequestExtensions=Array.from(this.singleRequestExtensions,t=>t.toJSON())),e}},u(Js,"Ed"),Js);ym.CLASS_NAME="Request";var od="tbs",fc="version",wc="requestorName",cd="requestList",Bc="requestExtensions",Hu="TBSRequest",Vd=`${Hu}.${fc}`,Sd=`${Hu}.${wc}`,pw=`${Hu}.requests`,kd=`${Hu}.${Bc}`,dM=[Hu,Vd,Sd,pw,kd],Bt,an=(Bt=class extends F{get tbs(){return ne.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(g(e,od,Bt.defaultValues(od))),fc in e&&(this.version=g(e,fc,Bt.defaultValues(fc))),wc in e&&(this.requestorName=g(e,wc,Bt.defaultValues(wc))),this.requestList=g(e,cd,Bt.defaultValues(cd)),Bc in e&&(this.requestExtensions=g(e,Bc,Bt.defaultValues(Bc))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case od:return Re;case fc:return 0;case wc:return new pe;case cd:case Bc:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case od:return t.byteLength===0;case fc:return t===Bt.defaultValues(e);case wc:return t.type===pe.defaultValues("type")&&Object.keys(t.value).length===0;case cd:case Bc:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||Hu,value:[new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new x({name:t.TBSRequestVersion||Vd})]}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[pe.schema(t.requestorName||{names:{blockName:Sd}})]}),new M({name:t.requestList||"TBSRequest.requestList",value:[new ae({name:t.requests||pw,value:ym.schema(t.requestNames||{})})]}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:2},value:[Le.schema(t.extensions||{names:{blockName:t.requestExtensions||kd}})]})]})}fromSchema(e){Y(e,dM);let t=H(e,e,Bt.schema());R.assertSchema(t,this.className),this.tbsView=t.result.TBSRequest.valueBeforeDecodeView,Vd in t.result&&(this.version=t.result[Vd].valueBlock.valueDec),Sd in t.result&&(this.requestorName=new pe({schema:t.result[Sd]})),this.requestList=Array.from(t.result[pw],s=>new ym({schema:s})),kd in t.result&&(this.requestExtensions=Array.from(t.result[kd].valueBlock.value,s=>new xt({schema:s})))}toSchema(e=!1){let t;if(e===!1){if(this.tbsView.byteLength===0)return Bt.schema();let s=Qe(this.tbsView);if(R.assert(s,"TBS Request"),!(s.result instanceof M))throw new Error("ASN.1 result should be SEQUENCE");t=s.result}else{let s=[];this.version!==void 0&&s.push(new v({idBlock:{tagClass:3,tagNumber:0},value:[new x({value:this.version})]})),this.requestorName&&s.push(new v({idBlock:{tagClass:3,tagNumber:1},value:[this.requestorName.toSchema()]})),s.push(new M({value:Array.from(this.requestList,n=>n.toSchema())})),this.requestExtensions&&s.push(new v({idBlock:{tagClass:3,tagNumber:2},value:[new M({value:Array.from(this.requestExtensions,n=>n.toSchema())})]})),t=new M({value:s})}return t}toJSON(){let e={};return this.version!=null&&(e.version=this.version),this.requestorName&&(e.requestorName=this.requestorName.toJSON()),e.requestList=Array.from(this.requestList,t=>t.toJSON()),this.requestExtensions&&(e.requestExtensions=Array.from(this.requestExtensions,t=>t.toJSON())),e}},u(Bt,"Sd"),Bt);an.CLASS_NAME="TBSRequest";var Ao="signatureAlgorithm",go="signature",rr="certs",os,yi=(os=class extends F{constructor(e={}){super(),this.signatureAlgorithm=g(e,Ao,os.defaultValues(Ao)),this.signature=g(e,go,os.defaultValues(go)),rr in e&&(this.certs=g(e,rr,os.defaultValues(rr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ao:return new k;case go:return new ue;case rr:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ao:return t.algorithmId===w&&!("algorithmParams"in t);case go:return t.isEqual(os.defaultValues(e));case rr:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[k.schema(t.signatureAlgorithm||{}),new ue({name:t.signature||w}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new M({value:[new ae({name:t.certs||w,value:rt.schema({})})]})]})]})}fromSchema(e){Y(e,[Ao,go,rr]);let t=H(e,e,os.schema({names:{signatureAlgorithm:{names:{blockName:Ao}},signature:go,certs:rr}}));R.assertSchema(t,this.className),this.signatureAlgorithm=new k({schema:t.result.signatureAlgorithm}),this.signature=t.result.signature,rr in t.result&&(this.certs=Array.from(t.result.certs,s=>new rt({schema:s})))}toSchema(){let e=[];return e.push(this.signatureAlgorithm.toSchema()),e.push(this.signature),this.certs&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new M({value:Array.from(this.certs,t=>t.toSchema())})]})),new M({value:e})}toJSON(){let e={signatureAlgorithm:this.signatureAlgorithm.toJSON(),signature:this.signature.toJSON()};return this.certs&&(e.certs=Array.from(this.certs,t=>t.toJSON())),e}},u(os,"Gd"),os);yi.CLASS_NAME="Signature";var pc="tbsRequest",Yr="optionalSignature",mM=[pc,Yr],jn,fM=(jn=class extends F{constructor(e={}){super(),this.tbsRequest=g(e,pc,jn.defaultValues(pc)),Yr in e&&(this.optionalSignature=g(e,Yr,jn.defaultValues(Yr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case pc:return new an;case Yr:return new yi;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case pc:return an.compareWithDefault("tbs",t.tbs)&&an.compareWithDefault("version",t.version)&&an.compareWithDefault("requestorName",t.requestorName)&&an.compareWithDefault("requestList",t.requestList)&&an.compareWithDefault("requestExtensions",t.requestExtensions);case Yr:return yi.compareWithDefault("signatureAlgorithm",t.signatureAlgorithm)&&yi.compareWithDefault("signature",t.signature)&&yi.compareWithDefault("certs",t.certs);default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||"OCSPRequest",value:[an.schema(t.tbsRequest||{names:{blockName:pc}}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[yi.schema(t.optionalSignature||{names:{blockName:Yr}})]})]})}fromSchema(e){Y(e,mM);let t=H(e,e,jn.schema());R.assertSchema(t,this.className),this.tbsRequest=new an({schema:t.result.tbsRequest}),Yr in t.result&&(this.optionalSignature=new yi({schema:t.result.optionalSignature}))}toSchema(e=!1){let t=[];return t.push(this.tbsRequest.toSchema(e)),this.optionalSignature&&t.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[this.optionalSignature.toSchema()]})),new M({value:t})}toJSON(){let e={tbsRequest:this.tbsRequest.toJSON()};return this.optionalSignature&&(e.optionalSignature=this.optionalSignature.toJSON()),e}async createForCertificate(e,t,s=ce(!0)){let n=new kt;await n.createForCertificate(e,t,s),this.tbsRequest.requestList.push(new ym({reqCert:n}))}async sign(e,t="SHA-1",s=ce(!0)){if(de.assertEmpty(e,"privateKey","OCSPRequest.sign method"),!this.optionalSignature)throw new Error('Need to create "optionalSignature" field before signing');let n=await s.getSignatureParameters(e,t),r=n.parameters;this.optionalSignature.signatureAlgorithm=n.signatureAlgorithm;let a=this.tbsRequest.toSchema(!0).toBER(!1),o=await s.signWithPrivateKey(a,e,r);this.optionalSignature.signature=new ue({valueHex:o})}verify(){}},u(jn,"Hd"),jn);fM.CLASS_NAME="OCSPRequest";var Ec="responseType",yc="response",wM=[Ec,yc],Ls,Ic=(Ls=class extends F{constructor(e={}){super(),this.responseType=g(e,Ec,Ls.defaultValues(Ec)),this.response=g(e,yc,Ls.defaultValues(yc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ec:return w;case yc:return new J;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ec:return t===w;case yc:return t.isEqual(Ls.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new z({name:t.responseType||w}),new J({name:t.response||w})]})}fromSchema(e){Y(e,wM);let t=H(e,e,Ls.schema({names:{responseType:Ec,response:yc}}));R.assertSchema(t,this.className),this.responseType=t.result.responseType.valueBlock.toString(),this.response=t.result.response}toSchema(){return new M({value:[new z({value:this.responseType}),this.response]})}toJSON(){return{responseType:this.responseType,response:this.response.toJSON()}}},u(Ls,"Od"),Ls);Ic.CLASS_NAME="ResponseBytes";var mo="responseStatus",Zs="responseBytes",Os,BM=(Os=class extends F{constructor(e={}){super(),this.responseStatus=g(e,mo,Os.defaultValues(mo)),Zs in e&&(this.responseBytes=g(e,Zs,Os.defaultValues(Zs))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case mo:return new qi;case Zs:return new Ic;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case mo:return t.isEqual(Os.defaultValues(e));case Zs:return Ic.compareWithDefault("responseType",t.responseType)&&Ic.compareWithDefault("response",t.response);default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||"OCSPResponse",value:[new qi({name:t.responseStatus||mo}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[Ic.schema(t.responseBytes||{names:{blockName:Zs}})]})]})}fromSchema(e){Y(e,[mo,Zs]);let t=H(e,e,Os.schema());R.assertSchema(t,this.className),this.responseStatus=t.result.responseStatus,Zs in t.result&&(this.responseBytes=new Ic({schema:t.result.responseBytes}))}toSchema(){let e=[];return e.push(this.responseStatus),this.responseBytes&&e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:[this.responseBytes.toSchema()]})),new M({value:e})}toJSON(){let e={responseStatus:this.responseStatus.toJSON()};return this.responseBytes&&(e.responseBytes=this.responseBytes.toJSON()),e}async getCertificateStatus(e,t,s=ce(!0)){let n,r={isForCertificate:!1,status:2};if(!this.responseBytes||this.responseBytes.responseType!==ud)return r;try{let a=Qe(this.responseBytes.response.valueBlock.valueHexView);R.assert(a,"Basic OCSP response"),n=new lg({schema:a.result})}catch{return r}return n.getCertificateStatus(e,t,s)}async sign(e,t,s=ce(!0)){var n;if(this.responseBytes&&this.responseBytes.responseType===ud)return lg.fromBER(this.responseBytes.response.valueBlock.valueHexView).sign(e,t,s);throw new Error(`Unknown ResponseBytes type: ${((n=this.responseBytes)===null||n===void 0?void 0:n.responseType)||"Unknown"}`)}async verify(e=null,t=ce(!0)){var s;if(!(Zs in this))throw new Error("Empty ResponseBytes field");if(this.responseBytes&&this.responseBytes.responseType===ud){let n=lg.fromBER(this.responseBytes.response.valueBlock.valueHexView);return e!==null&&(n.certs||(n.certs=[]),n.certs.push(e)),n.verify({},t)}throw new Error(`Unknown ResponseBytes type: ${((s=this.responseBytes)===null||s===void 0?void 0:s.responseType)||"Unknown"}`)}},u(Os,"Wd"),Os);BM.CLASS_NAME="OCSPResponse";var Ma="type",on="attributes",ld="encodedValue",pM=[on],lt,dt=(lt=class extends F{constructor(e={}){super(),this.type=g(e,Ma,lt.defaultValues(Ma)),this.attributes=g(e,on,lt.defaultValues(on)),this.encodedValue=g(e,ld,lt.defaultValues(ld)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ma:return-1;case on:return[];case ld:return Re;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ma:return t===lt.defaultValues(Ma);case on:return t.length===0;case ld:return t.byteLength===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new v({name:t.blockName||w,optional:!0,idBlock:{tagClass:3,tagNumber:t.tagNumber||0},value:[new ae({name:t.attributes||w,value:ke.schema()})]})}fromSchema(e){Y(e,pM);let t=H(e,e,lt.schema({names:{tagNumber:this.type,attributes:on}}));if(R.assertSchema(t,this.className),this.type=t.result.idBlock.tagNumber,this.encodedValue=ne.toArrayBuffer(t.result.valueBeforeDecodeView),new Uint8Array(this.encodedValue)[0]=49,on in t.result)this.attributes=Array.from(t.result.attributes,s=>new ke({schema:s}));else if(this.type===0)throw new Error("Wrong structure of SignedUnsignedAttributes")}toSchema(){if(lt.compareWithDefault(Ma,this.type)||lt.compareWithDefault(on,this.attributes))throw new Error('Incorrectly initialized "SignedAndUnsignedAttributes" class');return new v({optional:!0,idBlock:{tagClass:3,tagNumber:this.type},value:Array.from(this.attributes,e=>e.toSchema())})}toJSON(){if(lt.compareWithDefault(Ma,this.type)||lt.compareWithDefault(on,this.attributes))throw new Error('Incorrectly initialized "SignedAndUnsignedAttributes" class');return{type:this.type,attributes:Array.from(this.attributes,e=>e.toJSON())}}},u(lt,"qd"),lt);dt.CLASS_NAME="SignedAndUnsignedAttributes";var Cc="version",Ii="sid",Mc="digestAlgorithm",jr="signedAttrs",bc="signatureAlgorithm",OA="signature",Jr="unsignedAttrs",da="SignerInfo",Ew=`${da}.${Cc}`,WA=`${da}.${Ii}`,yw=`${da}.${Mc}`,xd=`${da}.${jr}`,Iw=`${da}.${bc}`,Cw=`${da}.${OA}`,Td=`${da}.${Jr}`,EM=[Ew,WA,yw,xd,Iw,Cw,Td],ve,Im=(ve=class extends F{constructor(e={}){super(),this.version=g(e,Cc,ve.defaultValues(Cc)),this.sid=g(e,Ii,ve.defaultValues(Ii)),this.digestAlgorithm=g(e,Mc,ve.defaultValues(Mc)),jr in e&&(this.signedAttrs=g(e,jr,ve.defaultValues(jr))),this.signatureAlgorithm=g(e,bc,ve.defaultValues(bc)),this.signature=g(e,OA,ve.defaultValues(OA)),Jr in e&&(this.unsignedAttrs=g(e,Jr,ve.defaultValues(Jr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Cc:return 0;case Ii:return new re;case Mc:return new k;case jr:return new dt({type:0});case bc:return new k;case OA:return new J;case Jr:return new dt({type:1});default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Cc:return ve.defaultValues(Cc)===t;case Ii:return t instanceof re;case Mc:return t instanceof k&&t.isEqual(ve.defaultValues(Mc));case jr:return dt.compareWithDefault("type",t.type)&&dt.compareWithDefault("attributes",t.attributes)&&dt.compareWithDefault("encodedValue",t.encodedValue);case bc:return t instanceof k&&t.isEqual(ve.defaultValues(bc));case OA:case Jr:return dt.compareWithDefault("type",t.type)&&dt.compareWithDefault("attributes",t.attributes)&&dt.compareWithDefault("encodedValue",t.encodedValue);default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:da,value:[new x({name:t.version||Ew}),new Ce({value:[Ke.schema(t.sidSchema||{names:{blockName:WA}}),new Ce({value:[new v({optional:!0,name:t.sid||WA,idBlock:{tagClass:3,tagNumber:0},value:[new J]}),new se({optional:!0,name:t.sid||WA,idBlock:{tagClass:3,tagNumber:0}})]})]}),k.schema(t.digestAlgorithm||{names:{blockName:yw}}),dt.schema(t.signedAttrs||{names:{blockName:xd,tagNumber:0}}),k.schema(t.signatureAlgorithm||{names:{blockName:Iw}}),new J({name:t.signature||Cw}),dt.schema(t.unsignedAttrs||{names:{blockName:Td,tagNumber:1}})]})}fromSchema(e){Y(e,EM);let t=H(e,e,ve.schema());R.assertSchema(t,this.className),this.version=t.result[Ew].valueBlock.valueDec;let s=t.result[WA];s.idBlock.tagClass===1?this.sid=new Ke({schema:s}):this.sid=s,this.digestAlgorithm=new k({schema:t.result[yw]}),xd in t.result&&(this.signedAttrs=new dt({type:0,schema:t.result[xd]})),this.signatureAlgorithm=new k({schema:t.result[Iw]}),this.signature=t.result[Cw],Td in t.result&&(this.unsignedAttrs=new dt({type:1,schema:t.result[Td]}))}toSchema(){if(ve.compareWithDefault(Ii,this.sid))throw new Error('Incorrectly initialized "SignerInfo" class');let e=[];return e.push(new x({value:this.version})),this.sid instanceof Ke?e.push(this.sid.toSchema()):e.push(this.sid),e.push(this.digestAlgorithm.toSchema()),this.signedAttrs&&ve.compareWithDefault(jr,this.signedAttrs)===!1&&e.push(this.signedAttrs.toSchema()),e.push(this.signatureAlgorithm.toSchema()),e.push(this.signature),this.unsignedAttrs&&ve.compareWithDefault(Jr,this.unsignedAttrs)===!1&&e.push(this.unsignedAttrs.toSchema()),new M({value:e})}toJSON(){if(ve.compareWithDefault(Ii,this.sid))throw new Error('Incorrectly initialized "SignerInfo" class');let e={version:this.version,digestAlgorithm:this.digestAlgorithm.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signature:this.signature.toJSON()};return this.sid instanceof re||(e.sid=this.sid.toJSON()),this.signedAttrs&&ve.compareWithDefault(jr,this.signedAttrs)===!1&&(e.signedAttrs=this.signedAttrs.toJSON()),this.unsignedAttrs&&ve.compareWithDefault(Jr,this.unsignedAttrs)===!1&&(e.unsignedAttrs=this.unsignedAttrs.toJSON()),e}},u(ve,"mB"),ve);Im.CLASS_NAME="SignerInfo";var PA="version",zA="policy",ZA="messageImprint",KA="serialNumber",qA="genTime",Ci="ordering",Mi="nonce",Nc="accuracy",vc="tsa",Dc="extensions",gs="TSTInfo",Mw=`${gs}.${PA}`,bw=`${gs}.${zA}`,Nw=`${gs}.${ZA}`,vw=`${gs}.${KA}`,Dw=`${gs}.${qA}`,Ud=`${gs}.${Nc}`,Rd=`${gs}.${Ci}`,Gd=`${gs}.${Mi}`,Fd=`${gs}.${vc}`,Hd=`${gs}.${Dc}`,yM=[Mw,bw,Nw,vw,Dw,Ud,Rd,Gd,Fd,Hd],Fe,Fy=(Fe=class extends F{constructor(e={}){super(),this.version=g(e,PA,Fe.defaultValues(PA)),this.policy=g(e,zA,Fe.defaultValues(zA)),this.messageImprint=g(e,ZA,Fe.defaultValues(ZA)),this.serialNumber=g(e,KA,Fe.defaultValues(KA)),this.genTime=g(e,qA,Fe.defaultValues(qA)),Nc in e&&(this.accuracy=g(e,Nc,Fe.defaultValues(Nc))),Ci in e&&(this.ordering=g(e,Ci,Fe.defaultValues(Ci))),Mi in e&&(this.nonce=g(e,Mi,Fe.defaultValues(Mi))),vc in e&&(this.tsa=g(e,vc,Fe.defaultValues(vc))),Dc in e&&(this.extensions=g(e,Dc,Fe.defaultValues(Dc))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case PA:return 0;case zA:return w;case ZA:return new cs;case KA:return new x;case qA:return new Date(0,0,0);case Nc:return new ba;case Ci:return!1;case Mi:return new x;case vc:return new pe;case Dc:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case PA:case zA:case qA:case Ci:return t===Fe.defaultValues(Ci);case ZA:return cs.compareWithDefault(Vi,t.hashAlgorithm)&&cs.compareWithDefault(Si,t.hashedMessage);case KA:case Mi:return t.isEqual(Fe.defaultValues(Mi));case Nc:return ba.compareWithDefault(ir,t.seconds)&&ba.compareWithDefault(or,t.millis)&&ba.compareWithDefault(cr,t.micros);case vc:return pe.compareWithDefault(ih,t.type)&&pe.compareWithDefault(oh,t.value);case Dc:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||gs,value:[new x({name:t.version||Mw}),new z({name:t.policy||bw}),cs.schema(t.messageImprint||{names:{blockName:Nw}}),new x({name:t.serialNumber||vw}),new Ie({name:t.genTime||Dw}),ba.schema(t.accuracy||{names:{blockName:Ud}}),new Ps({name:t.ordering||Rd,optional:!0}),new x({name:t.nonce||Gd,optional:!0}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[pe.schema(t.tsa||{names:{blockName:Fd}})]}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new ae({name:t.extensions||Hd,value:xt.schema(t.extension||{})})]})]})}fromSchema(e){Y(e,yM);let t=H(e,e,Fe.schema());R.assertSchema(t,this.className),this.version=t.result[Mw].valueBlock.valueDec,this.policy=t.result[bw].valueBlock.toString(),this.messageImprint=new cs({schema:t.result[Nw]}),this.serialNumber=t.result[vw],this.genTime=t.result[Dw].toDate(),Ud in t.result&&(this.accuracy=new ba({schema:t.result[Ud]})),Rd in t.result&&(this.ordering=t.result[Rd].valueBlock.value),Gd in t.result&&(this.nonce=t.result[Gd]),Fd in t.result&&(this.tsa=new pe({schema:t.result[Fd]})),Hd in t.result&&(this.extensions=Array.from(t.result[Hd],s=>new xt({schema:s})))}toSchema(){let e=[];return e.push(new x({value:this.version})),e.push(new z({value:this.policy})),e.push(this.messageImprint.toSchema()),e.push(this.serialNumber),e.push(new Ie({valueDate:this.genTime})),this.accuracy&&e.push(this.accuracy.toSchema()),this.ordering!==void 0&&e.push(new Ps({value:this.ordering})),this.nonce&&e.push(this.nonce),this.tsa&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[this.tsa.toSchema()]})),this.extensions&&e.push(new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.extensions,t=>t.toSchema())})),new M({value:e})}toJSON(){let e={version:this.version,policy:this.policy,messageImprint:this.messageImprint.toJSON(),serialNumber:this.serialNumber.toJSON(),genTime:this.genTime};return this.accuracy&&(e.accuracy=this.accuracy.toJSON()),this.ordering!==void 0&&(e.ordering=this.ordering),this.nonce&&(e.nonce=this.nonce.toJSON()),this.tsa&&(e.tsa=this.tsa.toJSON()),this.extensions&&(e.extensions=Array.from(this.extensions,t=>t.toJSON())),e}async verify(e,t=ce(!0)){if(!e.data)throw new Error('"data" is a mandatory attribute for TST_INFO verification');let s=e.data;if(e.notBefore&&this.genTime<e.notBefore)throw new Error("Generation time for TSTInfo object is less than notBefore value");if(e.notAfter&&this.genTime>e.notAfter)throw new Error("Generation time for TSTInfo object is more than notAfter value");let n=t.getAlgorithmByOID(this.messageImprint.hashAlgorithm.algorithmId,!0,"MessageImprint.hashAlgorithm"),r=await t.digest(n.name,new Uint8Array(s));return ne.isEqual(r,this.messageImprint.hashedMessage.valueBlock.valueHexView)}},u(Fe,"RB"),Fe);Fy.CLASS_NAME="TSTInfo";var Qc="version",XA="digestAlgorithms",$A="encapContentInfo",Vc="certificates",Sc="crls",_A="signerInfos",rh="ocsps",eo="SignedData",Qw=`${eo}.${Qc}`,Yd=`${eo}.${XA}`,Vw=`${eo}.${$A}`,jd=`${eo}.${Vc}`,Jd=`${eo}.${Sc}`,Ld=`${eo}.${_A}`,IM=[Qw,Yd,Vw,jd,Jd,Ld],wu,$e=(wu=class extends Error{constructor({message:e,code:t=0,date:s=new Date,signatureVerified:n=null,signerCertificate:r=null,signerCertificateVerified:a=null,timestampSerial:o=null,certificatePath:c=[]}){super(e),this.name="SignedDataVerifyError",this.date=s,this.code=t,this.timestampSerial=o,this.signatureVerified=n,this.signerCertificate=r,this.signerCertificateVerified=a,this.certificatePath=c}},u(wu,"$B"),wu),tt,Gu=(tt=class extends F{constructor(e={}){super(),this.version=g(e,Qc,tt.defaultValues(Qc)),this.digestAlgorithms=g(e,XA,tt.defaultValues(XA)),this.encapContentInfo=g(e,$A,tt.defaultValues($A)),Vc in e&&(this.certificates=g(e,Vc,tt.defaultValues(Vc))),Sc in e&&(this.crls=g(e,Sc,tt.defaultValues(Sc))),rh in e&&(this.ocsps=g(e,rh,tt.defaultValues(rh))),this.signerInfos=g(e,_A,tt.defaultValues(_A)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Qc:return 0;case XA:return[];case $A:return new Qi;case Vc:case Sc:case rh:case _A:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Qc:return t===tt.defaultValues(Qc);case $A:return Qi.compareWithDefault("eContentType",t.eContentType)&&Qi.compareWithDefault("eContent",t.eContent);case XA:case Vc:case Sc:case rh:case _A:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return t.optional===void 0&&(t.optional=!1),new M({name:t.blockName||eo,optional:t.optional,value:[new x({name:t.version||Qw}),new Se({value:[new ae({name:t.digestAlgorithms||Yd,value:k.schema()})]}),Qi.schema(t.encapContentInfo||{names:{blockName:Vw}}),new v({name:t.certificates||jd,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:Ri.schema().valueBlock.value}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:ag.schema(t.crls||{names:{crls:Jd}}).valueBlock.value}),new Se({value:[new ae({name:t.signerInfos||Ld,value:Im.schema()})]})]})}fromSchema(e){Y(e,IM);let t=H(e,e,tt.schema());if(R.assertSchema(t,this.className),this.version=t.result[Qw].valueBlock.valueDec,Yd in t.result&&(this.digestAlgorithms=Array.from(t.result[Yd],s=>new k({schema:s}))),this.encapContentInfo=new Qi({schema:t.result[Vw]}),jd in t.result){let s=new Ri({schema:new Se({value:t.result[jd].valueBlock.value})});this.certificates=s.certificates.slice(0)}Jd in t.result&&(this.crls=Array.from(t.result[Jd],s=>s.idBlock.tagClass===1?new Eg({schema:s}):(s.idBlock.tagClass=1,s.idBlock.tagNumber=16,new rg({schema:s})))),Ld in t.result&&(this.signerInfos=Array.from(t.result[Ld],s=>new Im({schema:s})))}toSchema(e=!1){let t=[];if(this.certificates&&this.certificates.length&&this.certificates.some(s=>s instanceof Cd)||this.crls&&this.crls.length&&this.crls.some(s=>s instanceof rg)?this.version=5:this.certificates&&this.certificates.length&&this.certificates.some(s=>s instanceof Pr)?this.version=4:this.certificates&&this.certificates.length&&this.certificates.some(s=>s instanceof nm)||this.signerInfos.some(s=>s.version===3)||this.encapContentInfo.eContentType!==tt.ID_DATA?this.version=3:this.version=1,t.push(new x({value:this.version})),t.push(new Se({value:Array.from(this.digestAlgorithms,s=>s.toSchema())})),t.push(this.encapContentInfo.toSchema()),this.certificates){let s=new Ri({certificates:this.certificates}).toSchema();t.push(new v({idBlock:{tagClass:3,tagNumber:0},value:s.valueBlock.value}))}return this.crls&&t.push(new v({idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.crls,s=>{if(s instanceof rg){let n=s.toSchema();return n.idBlock.tagClass=3,n.idBlock.tagNumber=1,n}return s.toSchema(e)})})),t.push(new Se({value:Array.from(this.signerInfos,s=>s.toSchema())})),new M({value:t})}toJSON(){let e={version:this.version,digestAlgorithms:Array.from(this.digestAlgorithms,t=>t.toJSON()),encapContentInfo:this.encapContentInfo.toJSON(),signerInfos:Array.from(this.signerInfos,t=>t.toJSON())};return this.certificates&&(e.certificates=Array.from(this.certificates,t=>t.toJSON())),this.crls&&(e.crls=Array.from(this.crls,t=>t.toJSON())),e}async verify({signer:e=-1,data:t=Re,trustedCerts:s=[],checkDate:n=new Date,checkChain:r=!1,passedWhenNotRevValues:a=!1,extendedMode:o=!1,findOrigin:c=null,findIssuer:l=null}={},A=ce(!0)){let h=null,d=null;try{let m=Re,E=w,y=[],f=this.signerInfos[e];if(!f)throw new $e({date:n,code:1,message:"Unable to get signer by supplied index"});if(!this.certificates)throw new $e({date:n,code:2,message:"No certificates attached to this signed data"});if(f.sid instanceof Ke){for(let I of this.certificates)if(I instanceof rt&&I.issuer.isEqual(f.sid.issuer)&&I.serialNumber.isEqual(f.sid.serialNumber)){h=I;break}}else{let I=f.sid,b=I.idBlock.isConstructed?I.valueBlock.value[0].valueBlock.valueHex:I.valueBlock.valueHex;for(let V of this.certificates)if(V instanceof rt&&Vu(await A.digest({name:"sha-1"},V.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView),b)){h=V;break}}if(!h)throw new $e({date:n,code:3,message:"Unable to find signer certificate"});if(this.encapContentInfo.eContentType==="1.2.840.113549.1.9.16.1.4"){if(!this.encapContentInfo.eContent)throw new $e({date:n,code:15,message:"Error during verification: TSTInfo eContent is empty",signatureVerified:null,signerCertificate:h,timestampSerial:d,signerCertificateVerified:!0});let I;try{I=Fy.fromBER(this.encapContentInfo.eContent.valueBlock.valueHexView)}catch{throw new $e({date:n,code:15,message:"Error during verification: TSTInfo wrong ASN.1 schema ",signatureVerified:null,signerCertificate:h,timestampSerial:d,signerCertificateVerified:!0})}if(n=I.genTime,d=I.serialNumber.valueBlock.valueHexView.slice(),t.byteLength===0)throw new $e({date:n,code:4,message:"Missed detached data input array"});if(!await I.verify({data:t},A))throw new $e({date:n,code:15,message:"Error during verification: TSTInfo verification is failed",signatureVerified:!1,signerCertificate:h,timestampSerial:d,signerCertificateVerified:!0})}if(r){let I=this.certificates.filter(D=>D instanceof rt&&!!Vy(D,h)),b={checkDate:n,certs:I,trustedCerts:s};l&&(b.findIssuer=l),c&&(b.findOrigin=c);let V=new nB(b);if(V.certs.push(h),this.crls)for(let D of this.crls)"thisUpdate"in D?V.crls.push(D):D.otherRevInfoFormat===ud&&V.ocsps.push(new lg({schema:D.otherRevInfo}));this.ocsps&&V.ocsps.push(...this.ocsps);let G=await V.verify({passedWhenNotRevValues:a},A).catch(D=>{throw new $e({date:n,code:5,message:`Validation of signer's certificate failed with error: ${D instanceof Object?D.resultMessage:D}`,signerCertificate:h,signerCertificateVerified:!1})});if(G.certificatePath&&(y=G.certificatePath),!G.result)throw new $e({date:n,code:5,message:`Validation of signer's certificate failed: ${G.resultMessage}`,signerCertificate:h,signerCertificateVerified:!1})}let p=A.getAlgorithmByOID(f.digestAlgorithm.algorithmId);if(!("name"in p))throw new $e({date:n,code:7,message:`Unsupported signature algorithm: ${f.digestAlgorithm.algorithmId}`,signerCertificate:h,signerCertificateVerified:!0});E=p.name;let B=this.encapContentInfo.eContent;if(B)t=B.idBlock.tagClass===1&&B.idBlock.tagNumber===4?B.getValue():B.valueBlock.valueBeforeDecodeView;else if(t.byteLength===0)throw new $e({date:n,code:8,message:"Missed detached data input array",signerCertificate:h,signerCertificateVerified:!0});if(f.signedAttrs){let I=!1,b=!1;for(let V of f.signedAttrs.attributes)if(V.type==="1.2.840.113549.1.9.3"&&(I=!0),V.type==="1.2.840.113549.1.9.4"&&(b=!0,m=V.values[0].valueBlock.valueHex),I&&b)break;if(I===!1)throw new $e({date:n,code:9,message:'Attribute "content-type" is a mandatory attribute for "signed attributes"',signerCertificate:h,signerCertificateVerified:!0});if(b===!1)throw new $e({date:n,code:10,message:'Attribute "message-digest" is a mandatory attribute for "signed attributes"',signatureVerified:null,signerCertificate:h,signerCertificateVerified:!0})}if(f.signedAttrs){if(!Vu(await A.digest(E,new Uint8Array(t)),m))throw new $e({date:n,code:15,message:"Error during verification: Message digest doesn't match",signatureVerified:null,signerCertificate:h,timestampSerial:d,signerCertificateVerified:!0});t=f.signedAttrs.encodedValue}let C=f.signatureAlgorithm.algorithmId==="1.2.840.113549.1.1.1"?await A.verifyWithPublicKey(t,f.signature,h.subjectPublicKeyInfo,f.signatureAlgorithm,E):await A.verifyWithPublicKey(t,f.signature,h.subjectPublicKeyInfo,f.signatureAlgorithm);return o?{date:n,code:14,message:w,signatureVerified:C,signerCertificate:h,timestampSerial:d,signerCertificateVerified:!0,certificatePath:y}:C}catch(m){throw m instanceof $e?m:new $e({date:n,code:15,message:`Error during verification: ${m instanceof Error?m.message:m}`,signatureVerified:null,signerCertificate:h,timestampSerial:d,signerCertificateVerified:!0})}}async sign(e,t,s="SHA-1",n=Re,r=ce(!0)){var a;if(!e)throw new Error("Need to provide a private key for signing");let o=this.signerInfos[t];if(!o)throw new RangeError("SignerInfo index is out of range");!(!((a=o.signedAttrs)===null||a===void 0)&&a.attributes.length)&&"hash"in e.algorithm&&"hash"in e.algorithm&&e.algorithm.hash&&(s=e.algorithm.hash.name);let c=r.getOIDByAlgorithm({name:s},!0,"hashAlgorithm");this.digestAlgorithms.filter(d=>d.algorithmId===c).length===0&&this.digestAlgorithms.push(new k({algorithmId:c,algorithmParams:new Ve})),o.digestAlgorithm=new k({algorithmId:c,algorithmParams:new Ve});let l=await r.getSignatureParameters(e,s),A=l.parameters;if(o.signatureAlgorithm=l.signatureAlgorithm,o.signedAttrs)o.signedAttrs.encodedValue.byteLength!==0?n=o.signedAttrs.encodedValue:(n=o.signedAttrs.toSchema().toBER(),ne.toUint8Array(n)[0]=49);else{let d=this.encapContentInfo.eContent;if(d)n=d.idBlock.tagClass===1&&d.idBlock.tagNumber===4?d.getValue():d.valueBlock.valueBeforeDecodeView;else if(n.byteLength===0)throw new Error("Missed detached data input array")}let h=await r.signWithPrivateKey(n,e,A);o.signature=new J({valueHex:h})}},u(tt,"ef"),tt);Gu.CLASS_NAME="SignedData",Gu.ID_DATA=zw;var bi="version",Ni="authSafe",cn="macData",ah="parsedValue",CM=[bi,Ni,cn],Lt,MM=(Lt=class extends F{constructor(e={}){super(),this.version=g(e,bi,Lt.defaultValues(bi)),this.authSafe=g(e,Ni,Lt.defaultValues(Ni)),cn in e&&(this.macData=g(e,cn,Lt.defaultValues(cn))),ah in e&&(this.parsedValue=g(e,ah,Lt.defaultValues(ah))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case bi:return 3;case Ni:return new De;case cn:return new Fr;case ah:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case bi:return t===Lt.defaultValues(e);case Ni:return De.compareWithDefault("contentType",t.contentType)&&De.compareWithDefault("content",t.content);case cn:return Fr.compareWithDefault("mac",t.mac)&&Fr.compareWithDefault("macSalt",t.macSalt)&&Fr.compareWithDefault("iterations",t.iterations);case ah:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.version||bi}),De.schema(t.authSafe||{names:{blockName:Ni}}),Fr.schema(t.macData||{names:{blockName:cn,optional:!0}})]})}fromSchema(e){Y(e,CM);let t=H(e,e,Lt.schema({names:{version:bi,authSafe:{names:{blockName:Ni}},macData:{names:{blockName:cn}}}}));R.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.authSafe=new De({schema:t.result.authSafe}),cn in t.result&&(this.macData=new Fr({schema:t.result.macData}))}toSchema(){let e=[new x({value:this.version}),this.authSafe.toSchema()];return this.macData&&e.push(this.macData.toSchema()),new M({value:e})}toJSON(){let e={version:this.version,authSafe:this.authSafe.toJSON()};return this.macData&&(e.macData=this.macData.toJSON()),e}async makeInternalValues(e={},t=ce(!0)){if(Be.assert(e,"parameters","object"),!this.parsedValue)throw new Error('Please call "parseValues" function first in order to make "parsedValue" data');switch(de.assertEmpty(this.parsedValue.integrityMode,"integrityMode","parsedValue"),de.assertEmpty(this.parsedValue.authenticatedSafe,"authenticatedSafe","parsedValue"),this.parsedValue.integrityMode){case 0:{if(!("iterations"in e))throw new de("iterations");de.assertEmpty(e.pbkdf2HashAlgorithm,"pbkdf2HashAlgorithm"),de.assertEmpty(e.hmacHashAlgorithm,"hmacHashAlgorithm"),de.assertEmpty(e.password,"password");let s=new ArrayBuffer(64),n=new Uint8Array(s);t.getRandomValues(n);let r=this.parsedValue.authenticatedSafe.toSchema().toBER(!1);this.authSafe=new De({contentType:De.DATA,content:new J({valueHex:r})});let a=await t.stampDataWithPassword({password:e.password,hashAlgorithm:e.hmacHashAlgorithm,salt:s,iterationCount:e.iterations,contentToStamp:r});this.macData=new Fr({mac:new Di({digestAlgorithm:new k({algorithmId:t.getOIDByAlgorithm({name:e.hmacHashAlgorithm},!0,"hmacHashAlgorithm")}),digest:new J({valueHex:a})}),macSalt:new J({valueHex:s}),iterations:e.iterations})}break;case 1:{if(!("signingCertificate"in e))throw new de("signingCertificate");de.assertEmpty(e.privateKey,"privateKey"),de.assertEmpty(e.hashAlgorithm,"hashAlgorithm");let s=this.parsedValue.authenticatedSafe.toSchema().toBER(!1),n=new Gu({version:1,encapContentInfo:new Qi({eContentType:"1.2.840.113549.1.7.1",eContent:new J({valueHex:s})}),certificates:[e.signingCertificate]}),r=await t.digest({name:e.hashAlgorithm},new Uint8Array(s)),a=[];a.push(new ke({type:"1.2.840.113549.1.9.3",values:[new z({value:"1.2.840.113549.1.7.1"})]})),a.push(new ke({type:"1.2.840.113549.1.9.5",values:[new ku({valueDate:new Date})]})),a.push(new ke({type:"1.2.840.113549.1.9.4",values:[new J({valueHex:r})]})),n.signerInfos.push(new Im({version:1,sid:new Ke({issuer:e.signingCertificate.issuer,serialNumber:e.signingCertificate.serialNumber}),signedAttrs:new dt({type:0,attributes:a})})),await n.sign(e.privateKey,0,e.hashAlgorithm,void 0,t),this.authSafe=new De({contentType:"1.2.840.113549.1.7.2",content:n.toSchema(!0)})}break;default:throw new Error(`Parameter "integrityMode" has unknown value: ${this.parsedValue.integrityMode}`)}}async parseInternalValues(e,t=ce(!0)){switch(Be.assert(e,"parameters","object"),e.checkIntegrity===void 0&&(e.checkIntegrity=!0),this.parsedValue={},this.authSafe.contentType){case De.DATA:{de.assertEmpty(e.password,"password"),this.parsedValue.integrityMode=0,Be.assert(this.authSafe.content,"authSafe.content",J);let s=this.authSafe.content.getValue();if(this.parsedValue.authenticatedSafe=Aw.fromBER(s),e.checkIntegrity){if(!this.macData)throw new Error('Absent "macData" value, can not check PKCS#12 data integrity');let n=t.getAlgorithmByOID(this.macData.mac.digestAlgorithm.algorithmId,!0,"digestAlgorithm");if(!await t.verifyDataStampedWithPassword({password:e.password,hashAlgorithm:n.name,salt:ne.toArrayBuffer(this.macData.macSalt.valueBlock.valueHexView),iterationCount:this.macData.iterations||1,contentToVerify:s,signatureToVerify:ne.toArrayBuffer(this.macData.mac.digest.valueBlock.valueHexView)}))throw new Error("Integrity for the PKCS#12 data is broken!")}}break;case De.SIGNED_DATA:{this.parsedValue.integrityMode=1;let s=new Gu({schema:this.authSafe.content}),n=s.encapContentInfo.eContent;de.assert(n,"eContent","cmsSigned.encapContentInfo"),Be.assert(n,"eContent",J);let r=n.getValue();if(this.parsedValue.authenticatedSafe=Aw.fromBER(r),!await s.verify({signer:0,checkChain:!1},t))throw new Error("Integrity for the PKCS#12 data is broken!")}break;default:throw new Error(`Incorrect value for "this.authSafe.contentType": ${this.authSafe.contentType}`)}}},u(Lt,"of"),Lt);MM.CLASS_NAME="PFX";var kc="status",Lr="statusStrings",Or="failInfo",bM=[kc,Lr,Or],oE;(function(i){i[i.granted=0]="granted",i[i.grantedWithMods=1]="grantedWithMods",i[i.rejection=2]="rejection",i[i.waiting=3]="waiting",i[i.revocationWarning=4]="revocationWarning",i[i.revocationNotification=5]="revocationNotification"})(oE||(oE={}));var Ot,eg=(Ot=class extends F{constructor(e={}){super(),this.status=g(e,kc,Ot.defaultValues(kc)),Lr in e&&(this.statusStrings=g(e,Lr,Ot.defaultValues(Lr))),Or in e&&(this.failInfo=g(e,Or,Ot.defaultValues(Or))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case kc:return 2;case Lr:return[];case Or:return new ue;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case kc:return t===Ot.defaultValues(e);case Lr:return t.length===0;case Or:return t.isEqual(Ot.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||w,value:[new x({name:t.status||w}),new M({optional:!0,value:[new ae({name:t.statusStrings||w,value:new hs})]}),new ue({name:t.failInfo||w,optional:!0})]})}fromSchema(e){Y(e,bM);let t=H(e,e,Ot.schema({names:{status:kc,statusStrings:Lr,failInfo:Or}}));R.assertSchema(t,this.className);let s=t.result.status;if(s.valueBlock.isHexOnly===!0||s.valueBlock.valueDec<0||s.valueBlock.valueDec>5)throw new Error('PKIStatusInfo "status" has invalid value');this.status=s.valueBlock.valueDec,Lr in t.result&&(this.statusStrings=t.result.statusStrings),Or in t.result&&(this.failInfo=t.result.failInfo)}toSchema(){let e=[];return e.push(new x({value:this.status})),this.statusStrings&&e.push(new M({optional:!0,value:this.statusStrings})),this.failInfo&&e.push(this.failInfo),new M({value:e})}toJSON(){let e={status:this.status};return this.statusStrings&&(e.statusStrings=Array.from(this.statusStrings,t=>t.toJSON())),this.failInfo&&(e.failInfo=this.failInfo.toJSON()),e}},u(Ot,"gf"),Ot);eg.CLASS_NAME="PKIStatusInfo";var tg="version",sg="messageImprint",xc="reqPolicy",Tc="nonce",ln="certReq",Uc="extensions",to="TimeStampReq",Sw=`${to}.${tg}`,kw=`${to}.${sg}`,Od=`${to}.${xc}`,Wd=`${to}.${Tc}`,Pd=`${to}.${ln}`,zd=`${to}.${Uc}`,NM=[Sw,kw,Od,Wd,Pd,zd],Ze,vM=(Ze=class extends F{constructor(e={}){super(),this.version=g(e,tg,Ze.defaultValues(tg)),this.messageImprint=g(e,sg,Ze.defaultValues(sg)),xc in e&&(this.reqPolicy=g(e,xc,Ze.defaultValues(xc))),Tc in e&&(this.nonce=g(e,Tc,Ze.defaultValues(Tc))),ln in e&&(this.certReq=g(e,ln,Ze.defaultValues(ln))),Uc in e&&(this.extensions=g(e,Uc,Ze.defaultValues(Uc))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case tg:return 0;case sg:return new cs;case xc:return w;case Tc:return new x;case ln:return!1;case Uc:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case tg:case xc:case ln:return t===Ze.defaultValues(e);case sg:return cs.compareWithDefault("hashAlgorithm",t.hashAlgorithm)&&cs.compareWithDefault("hashedMessage",t.hashedMessage);case Tc:return t.isEqual(Ze.defaultValues(e));case Uc:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||to,value:[new x({name:t.version||Sw}),cs.schema(t.messageImprint||{names:{blockName:kw}}),new z({name:t.reqPolicy||Od,optional:!0}),new x({name:t.nonce||Wd,optional:!0}),new Ps({name:t.certReq||Pd,optional:!0}),new v({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new ae({name:t.extensions||zd,value:xt.schema()})]})]})}fromSchema(e){Y(e,NM);let t=H(e,e,Ze.schema());R.assertSchema(t,this.className),this.version=t.result[Sw].valueBlock.valueDec,this.messageImprint=new cs({schema:t.result[kw]}),Od in t.result&&(this.reqPolicy=t.result[Od].valueBlock.toString()),Wd in t.result&&(this.nonce=t.result[Wd]),Pd in t.result&&(this.certReq=t.result[Pd].valueBlock.value),zd in t.result&&(this.extensions=Array.from(t.result[zd],s=>new xt({schema:s})))}toSchema(){let e=[];return e.push(new x({value:this.version})),e.push(this.messageImprint.toSchema()),this.reqPolicy&&e.push(new z({value:this.reqPolicy})),this.nonce&&e.push(this.nonce),ln in this&&Ze.compareWithDefault(ln,this.certReq)===!1&&e.push(new Ps({value:this.certReq})),this.extensions&&e.push(new v({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.extensions,t=>t.toSchema())})),new M({value:e})}toJSON(){let e={version:this.version,messageImprint:this.messageImprint.toJSON()};return this.reqPolicy!==void 0&&(e.reqPolicy=this.reqPolicy),this.nonce!==void 0&&(e.nonce=this.nonce.toJSON()),this.certReq!==void 0&&Ze.compareWithDefault(ln,this.certReq)===!1&&(e.certReq=this.certReq),this.extensions&&(e.extensions=Array.from(this.extensions,t=>t.toJSON())),e}},u(Ze,"Qf"),Ze);vM.CLASS_NAME="TimeStampReq";var Rc="status",Gc="timeStampToken",oB="TimeStampResp",xw=`${oB}.${Rc}`,Zd=`${oB}.${Gc}`,DM=[xw,Zd],Jn,QM=(Jn=class extends F{constructor(e={}){super(),this.status=g(e,Rc,Jn.defaultValues(Rc)),Gc in e&&(this.timeStampToken=g(e,Gc,Jn.defaultValues(Gc))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Rc:return new eg;case Gc:return new De;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Rc:return eg.compareWithDefault(Rc,t.status)&&!("statusStrings"in t)&&!("failInfo"in t);case Gc:return t.contentType===w&&t.content instanceof re;default:return super.defaultValues(e)}}static schema(e={}){let t=g(e,"names",{});return new M({name:t.blockName||oB,value:[eg.schema(t.status||{names:{blockName:xw}}),De.schema(t.timeStampToken||{names:{blockName:Zd,optional:!0}})]})}fromSchema(e){Y(e,DM);let t=H(e,e,Jn.schema());R.assertSchema(t,this.className),this.status=new eg({schema:t.result[xw]}),Zd in t.result&&(this.timeStampToken=new De({schema:t.result[Zd]}))}toSchema(){let e=[];return e.push(this.status.toSchema()),this.timeStampToken&&e.push(this.timeStampToken.toSchema()),new M({value:e})}toJSON(){let e={status:this.status.toJSON()};return this.timeStampToken&&(e.timeStampToken=this.timeStampToken.toJSON()),e}async sign(e,t,s=ce(!0)){return this.assertContentType(),new Gu({schema:this.timeStampToken.content}).sign(e,0,t,void 0,s)}async verify(e={signer:0,trustedCerts:[],data:Re},t=ce(!0)){return this.assertContentType(),new Gu({schema:this.timeStampToken.content}).verify(e,t)}assertContentType(){if(!this.timeStampToken)throw new Error("timeStampToken is absent in TSP response");if(this.timeStampToken.contentType!==hy)throw new Error(`Wrong format of timeStampToken: ${this.timeStampToken.contentType}`)}},u(Jn,"Gf"),Jn);QM.CLASS_NAME="TimeStampResp",function(){if(typeof self<"u"){if("crypto"in self){let i="webcrypto";"webkitSubtle"in self.crypto&&(i="safari"),Zp(i,new sm({name:i,crypto}))}}else if(typeof crypto<"u"&&"webcrypto"in crypto){let i="NodeJS ^15",e=crypto.webcrypto;Zp(i,new sm({name:i,crypto:e}))}}();var VM=`
-----BEGIN CERTIFICATE-----
MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAw
gb4xCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL
Ex9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg
MjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAw
BgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0
MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYTAlVT
MRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1
c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJ
bmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3Qg
Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0MIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3DumSXbcr3DbVZwbPLqGgZ
2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV3imz/f3E
T+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j
5pds8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAM
C1rlLAHGVK/XqsEQe9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73T
DtTUXm6Hnmo9RR3RXRv06QqsYJn7ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNX
wbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5XxNMhIWNlUpEbsZmOeX7m640A
2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV7rtNOzK+mndm
nqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8
dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwl
N4y6mACXi0mWHv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNj
c0kCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
VR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9nMA0GCSqGSIb3DQEBCwUAA4ICAQAS
5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4QjbRaZIxowLByQzTS
Gwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht7LGr
hFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/
B7NTeLUKYvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uI
AeV8KEsD+UmDfLJ/fOPtjqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbw
H5Lk6rWS02FREAutp9lfx1/cH6NcjKF+m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+
b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKWRGhXxNUzzxkvFMSUHHuk
2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjAJOgc47Ol
IQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk
5F6G+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuY
n/PIjhs4ViFqUZPTkcpG2om3PVODLAgfi49T3f+sHw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYD
VQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBU
ZWNobm9sb2dpZXMgTGltaXRlZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBH
MTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgxODMwMDBaMGcxCzAJBgNVBAYTAklO
MRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVkaHJhIFRlY2hub2xv
Z2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIBIjAN
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQz
f2N4aLTNLnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO
8oG0x5ZOrRkVUkr+PHB1cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aq
d7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHWDV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhM
tTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ6DqS0hdW5TUaQBw+jSzt
Od9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrHhQIDAQAB
o0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQD
AgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31x
PaOfG1vR2vjTnGs2vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjM
wiI/aTvFthUvozXGaCocV685743QNcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6d
GNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q+Mri/Tm3R7nrft8EI6/6nAYH
6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeihU80Bv2noWgby
RQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx
iN66zB+Afko=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQG
EwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNo
bm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g
RzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4MTgzMDAwWjBrMQswCQYDVQQGEwJJ
TjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9s
b2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMw
djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0
WXTsuwYc58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xyS
fvalY8L1X44uT6EYGQIrMgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuB
zhccLikenEhjQjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggq
hkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+DCBeQyh+KTOgNG3qxrdWB
CUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7jHvrZQnD
+JbNR6iC8hZVdyR+EhCVBCyj
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkG
A1UEBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEg
SW5jMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAw
MFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln
biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNpZ24gUm9v
dCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+upufGZ
BczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZ
HdPIWoU/Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH
3DspVpNqs8FqOp099cGXOFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvH
GPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4VI5b2P/AgNBbeCsbEBEV5f6f9vtKppa+c
xSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleoomslMuoaJuvimUnzYnu3Yy1
aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+XJGFehiq
TbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
BQADggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87
/kOXSTKZEhVb3xEp/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4
kqNPEjE2NuLe/gDEo2APJ62gsIq1NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrG
YQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9wC68AivTxEDkigcxHpvOJpkT
+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQBmIMMMAVSKeo
WXzhriKi4gp6D/piq1JM4fHfyr6DDUI=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQG
EwJVUzETMBEGA1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMx
IDAeBgNVBAMTF2VtU2lnbiBFQ0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAw
MFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln
biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQDExdlbVNpZ24gRUND
IFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd6bci
MK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4Ojavti
sIGJAnB9SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0O
BBYEFPtaSNCAIEDyqOkAB2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB
Af8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQC02C8Cif22TGK6Q04ThHK1rt0c
3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwUZOR8loMRnLDRWmFLpg9J
0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNV
BAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04g
Uk9PVCBDQSBHMjAeFw0xNzAyMDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJ
BgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJ
R04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDF
dRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05N0Iw
vlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZ
uIt4ImfkabBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhp
n+Sc8CnTXPnGFiWeI8MgwT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKs
cpc/I1mbySKEwQdPzH/iV8oScLumZfNpdWO9lfsbl83kqK/20U6o2YpxJM02PbyW
xPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91QqhngLjYl/rNUssuHLoPj1P
rCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732jcZZroiF
DsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fx
DTvf95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgy
LcsUDFDYg2WD7rlcz8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6C
eWRgKRM+o/1Pcmqr4tTluCRVLERLiohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSCIS1mxteg4BXrzkwJ
d8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOBywaK8SJJ6ejq
kX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC
b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQl
qiCA2ClV9+BB/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0
OJD7uNGzcgbJceaBxXntC6Z58hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+c
NywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5BiKDUyUM/FHE5r7iOZULJK2v0ZXk
ltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklWatKcsWMy5WHgUyIO
pwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tUSxfj
03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZk
PuXaTH4MNMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE
1LlSVHJ7liXMvGnjSG4N0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MX
QRBdJ3NghVdJIgc=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UE
BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h
cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1
MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg
Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9
thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM
cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG
L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i
NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h
X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b
m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy
Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja
EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T
KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF
6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh
OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1UdDgQWBBRlzeurNR4APn7VdMAc
tHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4wgZswgZgGBFUd
IAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j
b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABC
AG8AbgBhAG4AbwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAw
ADEANzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9m
iWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL4QjbEwj4KKE1soCzC1HA01aajTNF
Sa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDbLIpgD7dvlAceHabJ
hfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1ilI45P
Vf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZE
EAEeiGaPcjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV
1aUsIC+nmCjuRfzxuIgALI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2t
CsvMo2ebKHTEm9caPARYpoKdrcd7b/+Alun4jWq9GJAd/0kakFI3ky88Al2CdgtR
5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH9IBk9W6VULgRfhVwOEqw
f9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpfNIbnYrX9
ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNK
GbqEZycPvEJdvSRUDewdcAZfpLz6IHxV
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD
VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf
BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3
YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x
NzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G
A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0
d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF
Q0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN
FWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w
DwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw
CgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh
DDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw
CQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x
ITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1
c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx
OTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI
SWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI
b2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
ALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn
swuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu
7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8
1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW
80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP
JqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l
RtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw
hI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10
coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc
BW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n
twiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud
DwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W
0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe
uyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q
lG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB
aCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE
sLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT
MaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe
qu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh
VicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8
h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9
EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK
yeC2nOnOcXHebD8WpHk=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD
VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf
BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3
YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x
NzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G
A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0
d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF
Q0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB
BAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ
j9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF
1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G
A1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3
AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC
MGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu
Sw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw
CQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw
FgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S
Q00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5
MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL
DAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS
QUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB
BAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH
sbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK
Um8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
VR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu
SuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC
MQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy
v+c=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQEL
BQAwQzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4x
FjAUBgNVBAMTDXZUcnVzIFJvb3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMx
MDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoGA1UEChMTaVRydXNDaGluYSBDby4s
THRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZotsSKYc
IrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykU
AyyNJJrIZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+
GrPSbcKvdmaVayqwlHeFXgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z9
8Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KAYPxMvDVTAWqXcoKv8R1w6Jz1717CbMdH
flqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70kLJrxLT5ZOrpGgrIDajt
J8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2AXPKBlim
0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZN
pGvu/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQ
UqqzApVg+QxMaPnu1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHW
OXSuTEGC2/KmSNGzm/MzqvOmwMVO9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMB
AAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYgscasGrz2iTAPBgNVHRMBAf8E
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAKbqSSaet
8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd
nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1j
bhd47F18iMjrjld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvM
Kar5CKXiNxTKsbhm7xqC5PD48acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIiv
TDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJnxDHO2zTlJQNgJXtxmOTAGytfdELS
S8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554WgicEFOwE30z9J4nfr
I8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4sEb9
b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNB
UvupLnKWnyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1P
Ti07NEPhmg4NpGaXutIcSkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929ven
sBxXVsFy6K2ir40zSbofitzmdHxghm+Hl3s=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMw
RzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAY
BgNVBAMTEXZUcnVzIEVDQyBSb290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDcz
MTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28u
LEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYwEAYHKoZIzj0CAQYF
K4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+cToL0
v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUd
e4BdS49nTPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYD
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIw
V53dVvHH4+m4SVBrm2nDb+zDfSXkV5UTQJtS0zvzQBm8JsctBp61ezaf9SXUY2sA
AjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQLYgmRWAD5Tfs0aNoJrSEG
GJTO
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV
BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE
CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy
dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy
MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G
A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD
DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq
M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf
OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa
4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9
HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR
aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA
b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ
Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV
PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO
pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu
UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY
MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV
HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4
9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW
s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5
Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg
cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM
79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz
/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt
ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm
Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK
QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ
w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi
S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07
mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBP
MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0
ZC4xGzAZBgNVBAMMEkhpUEtJIFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRa
Fw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3
YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kgUm9vdCBDQSAtIEcx
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0o9Qw
qNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twv
Vcg3Px+kwJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6
lZgRZq2XNdZ1AYDgr/SEYYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnz
Qs7ZngyzsHeXZJzA9KMuH5UHsBffMNsAGJZMoYFL3QRtU6M9/Aes1MU3guvklQgZ
KILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfdhSi8MEyr48KxRURHH+CK
FgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj1jOXTyFj
HluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDr
y+K49a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ
/W3c1pzAtH2lsN0/Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgM
a/aOEmem8rJY5AIJEzypuxC00jBF8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6
fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
HQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQDAgGGMA0GCSqG
SIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi
7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqc
SE5XCV0vrPSltJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6Fza
ZsT0pPBWGTMpWmWSBUdGSquEwx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9Tc
XzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07QJNBAsNB1CI69aO4I1258EHBGG3zg
iLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv5wiZqAxeJoBF1Pho
L5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+GpzjLrF
Ne85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wr
kkVbbiVghUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+
vhV4nYWBSipX3tUZQ9rbyltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQU
YDksswBVLuT1sw5XxJFBAJw/6KXf6vb/yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQsw
CQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91
bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwg
Um9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRaFw00MjA1MDkwOTU4MzNaMG0xCzAJ
BgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBGb3Vu
ZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2JhbCBS
b290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4ni
eUqjFqdrVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4W
p2OQ0jnUsYd4XxiWD1AbNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8E
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7T
rYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0EAwMDaAAwZQIwJsdpW9zV
57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtkAjEA2zQg
Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNV
BAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRk
LjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJv
b3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZaFw00MjA4MjIxMjA3MDZaMHExCzAJ
BgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMg
THRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25v
IFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtv
xie+RJCxs1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+H
Wyx7xf58etqjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
A1UdDgQWBBSHERUI0arBeAyxr87GyZDvvzAEwDAfBgNVHSMEGDAWgBSHERUI0arB
eAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEAtVfd14pVCzbhhkT61Nlo
jbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxOsvxyqltZ
+efcMQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE
BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h
cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy
MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg
Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9
thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM
cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG
L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i
NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h
X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b
m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy
Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja
EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T
KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF
6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh
OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD
VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD
VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv
ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl
AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF
661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9
am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1
ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481
PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS
3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k
SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF
3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM
ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g
StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz
Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB
jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV
BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu
MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy
MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx
EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw
ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe
NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH
PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I
x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe
QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR
yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO
QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912
H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ
QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD
i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs
nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1
rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud
DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI
hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM
tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf
GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb
lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka
+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal
TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i
nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3
gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr
G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os
zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x
L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT
AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD
QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP
MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do
0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ
UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d
RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ
OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv
JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C
AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O
BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ
LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY
MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ
44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I
Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw
i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN
9u6wWk5JRFRYX0KD
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM
MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D
ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU
cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3
WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg
Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw
IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH
UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM
TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU
BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM
kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x
AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV
HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y
sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL
I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8
J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY
VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkG
A1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkw
FwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYx
MDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9u
aXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMIICIjANBgkq
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWiD59b
RatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9Z
YybNpyrOVPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3
QWPKzv9pj2gOlTblzLmMCcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPw
yJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCmfecqQjuCgGOlYx8ZzHyyZqjC0203b+J+
BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKAA1GqtH6qRNdDYfOiaxaJ
SaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9ORJitHHmkH
r96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj0
4KlGDfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9Me
dKZssCz3AwyIDMvUclOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIw
q7ejMZdnrY8XD2zHc+0klGvIg5rQmjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2
nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1UdIwQYMBaAFNwu
H9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA
VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJC
XtzoRlgHNQIw4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd
6IwPS3BD0IL/qMy/pJTAvoe9iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf
+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS8cE54+X1+NZK3TTN+2/BT+MAi1bi
kvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2HcqtbepBEX4tdJP7
wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxSvTOB
TI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6C
MUO+1918oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn
4rnvyOL2NSl6dPrFf4IFYqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+I
aFvowdlxfv1k7/9nR4hYJS8+hge9+6jlgqispdNpQ80xiEmEU5LAsTkbOYMBMMTy
qfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB
gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV
BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw
MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P
RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3
UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI
2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8
Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp
+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+
DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O
nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW
/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g
PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u
QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY
SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv
IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4
zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd
BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB
ZQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL
MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT
IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw
MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy
ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N
T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv
biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR
FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J
cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW
BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm
fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv
GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF
MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD
bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha
ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM
HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03
UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42
tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R
ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM
lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp
/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G
A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G
A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj
dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy
MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl
cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js
L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL
BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni
acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0
o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K
zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8
PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y
Johw1+qRzT65ysCQblrGXnRl11z+o+I=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF
MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD
bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw
NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV
BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn
ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0
3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z
qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR
p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8
HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw
ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea
HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw
Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh
c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E
RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt
dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku
Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp
3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05
nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF
CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na
xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX
KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB
8zELMAkGA1UEBhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2Vy
dGlmaWNhY2lvIChOSUYgUS0wODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1
YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYDVQQLEyxWZWdldSBodHRwczovL3d3
dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UECxMsSmVyYXJxdWlh
IEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMTBkVD
LUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQG
EwJFUzE7MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8g
KE5JRiBRLTA4MDExNzYtSSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBD
ZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZlZ2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQu
bmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJhcnF1aWEgRW50aXRhdHMg
ZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUNDMIIBIjAN
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R
85iKw5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm
4CgPukLjbo73FCeTae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaV
HMf5NLWUhdWZXqBIoH7nF2W4onW4HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNd
QlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0aE9jD2z3Il3rucO2n5nzbcc8t
lGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw0JDnJwIDAQAB
o4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4
opvpXY0wfwYDVR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBo
dHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidW
ZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAwDQYJKoZIhvcN
AQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJlF7W2u++AVtd0x7Y
/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNaAl6k
SBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhy
Rp/7SNVel+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOS
Agu+TGbrIP65y7WZf+a2E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xl
nJ2lYJU6Un/10asIbvPuW/mIPX64b24D5EI=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC
VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0
Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW
KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl
cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw
NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw
NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy
ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV
BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo
Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4
4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9
KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI
rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi
94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB
sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi
gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo
kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE
vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t
O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua
AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP
9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/
eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m
0vdXcDazv/wor3ElhVsT/h5/WrQ8
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML
RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp
bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5
IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp
ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3
MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe
sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX
MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT
XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/
HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH
4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub
j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo
U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b
u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+
bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er
fF6adulZkMV8gzURZVE=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe
MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0
ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe
Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw
IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL
SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH
SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh
ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X
DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1
TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ
fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA
sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU
WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS
nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH
dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip
NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC
AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF
MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH
ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB
uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl
PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP
JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/
gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2
j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6
5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB
o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS
/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z
Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE
W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D
hNQ+IIX3Sj0rnP0qCglN6oH4EZw=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNV
BAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBC
aWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNV
BAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQDDB9FLVR1
Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMwNTEyMDk0OFoXDTIz
MDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+
BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhp
em1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN
ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4vU/kwVRHoViVF56C/UY
B4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vdhQd2h8y/L5VMzH2nPbxH
D5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5KCKpbknSF
Q9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEo
q1+gElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3D
k14opz8n8Y4e0ypQBaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcH
fC425lAcP9tDJMW/hkd5s3kc91r0E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsut
dEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gzrt48Ue7LE3wBf4QOXVGUnhMM
ti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAqjqFGOjGY5RH8
zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn
rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUX
U8u3Zg5mTPj5dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6
Jyr+zE7S6E5UMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5
XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAF
Nzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAKkEh47U6YA5n+KGCR
HTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jOXKqY
GwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c
77NCR807VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3
+GbHeJAAFS6LrVE1Uweoa2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WK
vJUawSg5TB9D0pH0clmKuVb8P7Sd2nCcdlqMQ1DujjByTd//SffGqWfZbawCEeI6
FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEVKV0jq9BgoRJP3vQXzTLl
yb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gTDx4JnW2P
AJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpD
y4Q08ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8d
NL/+I5c30jn6PQ0GC7TbO6Orb1wdtn7os4I07QZcJA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5
MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g
Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG
A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg
Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl
ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j
QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr
ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr
BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM
YyRIHN8wfdVoOw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE
BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ
IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0
MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV
BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w
HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj
Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj
TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u
KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj
qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm
MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12
ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP
zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk
L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC
jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA
HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC
AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg
p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm
DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5
COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry
L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf
JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg
IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io
2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV
09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ
XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq
T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe
MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF
ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL
MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK
gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ
W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg
1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K
8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r
2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me
z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR
8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj
mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz
7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6
+XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI
0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB
Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm
UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2
LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY
+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS
k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl
7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm
btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl
urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+
fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63
n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE
76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H
9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT
4PsJYGw=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF
ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL
MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj
ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM
9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw
IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6
VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L
93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm
jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA
A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI
U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs
N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv
o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU
5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy
rqXRfboQnoZsG4q5WTP468SQvvG5
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G
A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp
Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4
MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG
A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8
RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT
gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm
KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd
QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ
XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw
DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o
LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU
RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp
jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK
6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX
mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs
Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH
WD9f
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh
MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE
YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3
MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo
ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg
MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN
ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA
PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w
wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi
EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY
avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+
YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE
sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h
/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5
IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj
YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD
ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy
OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P
TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER
dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf
ReYNnyicsbkqWletNw+vHX/bvZ8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT
EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp
ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz
NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH
EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE
AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD
E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH
/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy
DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh
GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR
tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA
AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX
WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu
9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr
gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo
2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI
4uJEvlz36hz1
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx
FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg
Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG
A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr
b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ
jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn
PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh
ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9
nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h
q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED
MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC
mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3
7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB
oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs
EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO
fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi
AmvZWg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD
VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0
ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G
CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y
OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx
FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp
Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP
kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc
cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U
fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7
N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC
xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1
+rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM
Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG
SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h
mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk
ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c
2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t
HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG
EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3
MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl
cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR
dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB
pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM
b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm
aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz
IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT
lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz
AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5
VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG
ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2
BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG
AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M
U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh
bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C
+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F
uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2
XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5
MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g
Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG
A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg
Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi
9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk
M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB
/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB
MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw
CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW
1KyLa2tJElMzrdfkviT8tQp21KW8EA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix
DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k
IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT
N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v
dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG
A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh
ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx
QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1
dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA
4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0
AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10
4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C
ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV
9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD
gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6
Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq
NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko
LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc
Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV
HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd
ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I
XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI
M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot
9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V
Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea
j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh
X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ
l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf
bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4
pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK
e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0
vm9qp/UsQu0yrbYhnr68
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA
MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD
VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy
MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt
c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ
OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG
vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud
316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo
0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE
y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF
zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE
+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN
I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs
x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa
ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC
4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4
7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg
JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti
2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk
pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF
FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt
rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk
ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5
u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP
4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6
N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3
vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx
CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD
ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw
MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex
HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA
IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq
R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd
yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ
7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8
+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF8zCCA9ugAwIBAgIUDU3FzRYilZYIfrgLfxUGNPt5EDQwDQYJKoZIhvcNAQEL
BQAwgYAxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHEwZBbmthcmExGTAXBgNVBAoTEEUt
VHVncmEgRUJHIEEuUy4xHTAbBgNVBAsTFEUtVHVncmEgVHJ1c3QgQ2VudGVyMSYw
JAYDVQQDEx1FLVR1Z3JhIEdsb2JhbCBSb290IENBIFJTQSB2MzAeFw0yMDAzMTgw
OTA3MTdaFw00NTAzMTIwOTA3MTdaMIGAMQswCQYDVQQGEwJUUjEPMA0GA1UEBxMG
QW5rYXJhMRkwFwYDVQQKExBFLVR1Z3JhIEVCRyBBLlMuMR0wGwYDVQQLExRFLVR1
Z3JhIFRydXN0IENlbnRlcjEmMCQGA1UEAxMdRS1UdWdyYSBHbG9iYWwgUm9vdCBD
QSBSU0EgdjMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCiZvCJt3J7
7gnJY9LTQ91ew6aEOErxjYG7FL1H6EAX8z3DeEVypi6Q3po61CBxyryfHUuXCscx
uj7X/iWpKo429NEvx7epXTPcMHD4QGxLsqYxYdE0PD0xesevxKenhOGXpOhL9hd8
7jwH7eKKV9y2+/hDJVDqJ4GohryPUkqWOmAalrv9c/SF/YP9f4RtNGx/ardLAQO/
rWm31zLZ9Vdq6YaCPqVmMbMWPcLzJmAy01IesGykNz709a/r4d+ABs8qQedmCeFL
l+d3vSFtKbZnwy1+7dZ5ZdHPOrbRsV5WYVB6Ws5OUDGAA5hH5+QYfERaxqSzO8bG
wzrwbMOLyKSRBfP12baqBqG3q+Sx6iEUXIOk/P+2UNOMEiaZdnDpwA+mdPy70Bt4
znKS4iicvObpCdg604nmvi533wEKb5b25Y08TVJ2Glbhc34XrD2tbKNSEhhw5oBO
M/J+JjKsBY04pOZ2PJ8QaQ5tndLBeSBrW88zjdGUdjXnXVXHt6woq0bM5zshtQoK
5EpZ3IE1S0SVEgpnpaH/WwAH0sDM+T/8nzPyAPiMbIedBi3x7+PmBvrFZhNb/FAH
nnGGstpvdDDPk1Po3CLW3iAfYY2jLqN4MpBs3KwytQXk9TwzDdbgh3cXTJ2w2Amo
DVf3RIXwyAS+XF1a4xeOVGNpf0l0ZAWMowIDAQABo2MwYTAPBgNVHRMBAf8EBTAD
AQH/MB8GA1UdIwQYMBaAFLK0ruYt9ybVqnUtdkvAG1Mh0EjvMB0GA1UdDgQWBBSy
tK7mLfcm1ap1LXZLwBtTIdBI7zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEL
BQADggIBAImocn+M684uGMQQgC0QDP/7FM0E4BQ8Tpr7nym/Ip5XuYJzEmMmtcyQ
6dIqKe6cLcwsmb5FJ+Sxce3kOJUxQfJ9emN438o2Fi+CiJ+8EUdPdk3ILY7r3y18
Tjvarvbj2l0Upq7ohUSdBm6O++96SmotKygY/r+QLHUWnw/qln0F7psTpURs+APQ
3SPh/QMSEgj0GDSz4DcLdxEBSL9htLX4GdnLTeqjjO/98Aa1bZL0SmFQhO3sSdPk
vmjmLuMxC1QLGpLWgti2omU8ZgT5Vdps+9u1FGZNlIM7zR6mK7L+d0CGq+ffCsn9
9t2HVhjYsCxVYJb6CH5SkPVLpi6HfMsg2wY+oF0Dd32iPBMbKaITVaA9FCKvb7jQ
mhty3QUBjYZgv6Rn7rWlDdF/5horYmbDB7rnoEgcOMPpRfunf/ztAmgayncSd6YA
VSgU7NbHEqIbZULpkejLPoeJVF3Zr52XnGnnCv8PWniLYypMfUeUP95L6VPQMPHF
9p5J3zugkaOj/s1YzOrfr28oO6Bpm4/srK4rVJ2bBLFHIK+WEj5jlB0E5y67hscM
moi/dkfv97ALl2bSRM9gUgfh1SxKOidhd8rXj+eHDjD/DLsE4mHDosiXYY60MGo8
bcIHX0pzLz/5FooBZu+6kcpSV3uu1OYP3Qt6f4ueJiDPO++BcYNZ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICpTCCAiqgAwIBAgIUJkYZdzHhT28oNt45UYbm1JeIIsEwCgYIKoZIzj0EAwMw
gYAxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHEwZBbmthcmExGTAXBgNVBAoTEEUtVHVn
cmEgRUJHIEEuUy4xHTAbBgNVBAsTFEUtVHVncmEgVHJ1c3QgQ2VudGVyMSYwJAYD
VQQDEx1FLVR1Z3JhIEdsb2JhbCBSb290IENBIEVDQyB2MzAeFw0yMDAzMTgwOTQ2
NThaFw00NTAzMTIwOTQ2NThaMIGAMQswCQYDVQQGEwJUUjEPMA0GA1UEBxMGQW5r
YXJhMRkwFwYDVQQKExBFLVR1Z3JhIEVCRyBBLlMuMR0wGwYDVQQLExRFLVR1Z3Jh
IFRydXN0IENlbnRlcjEmMCQGA1UEAxMdRS1UdWdyYSBHbG9iYWwgUm9vdCBDQSBF
Q0MgdjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASOmCm/xxAeJ9urA8woLNheSBkQ
KczLWYHMjLiSF4mDKpL2w6QdTGLVn9agRtwcvHbB40fQWxPa56WzZkjnIZpKT4YK
fWzqTTKACrJ6CZtpS5iB4i7sAnCWH/31Rs7K3IKjYzBhMA8GA1UdEwEB/wQFMAMB
Af8wHwYDVR0jBBgwFoAU/4Ixcj75xGZsrTie0bBRiKWQzPUwHQYDVR0OBBYEFP+C
MXI++cRmbK04ntGwUYilkMz1MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNp
ADBmAjEA5gVYaWHlLcoNy/EZCL3W/VGSGn5jVASQkZo1kTmZ+gepZpO6yGjUij/6
7W4WAie3AjEA3VoXK3YdZUKWpqxdinlW2Iob35reX8dQj7FbcQwm32pAAOwzkSFx
vmjkI6TZraE3
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi
MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp
dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV
UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO
ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz
c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP
OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl
mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF
BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4
qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw
gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB
BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu
bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp
dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8
6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/
h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH
/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN
pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL
BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc
BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00
MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG
SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV
wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe
rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341
68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh
4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp
UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o
abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc
3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G
KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt
hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO
Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt
zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD
ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC
MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2
cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN
qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5
YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv
b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2
8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k
NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj
ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp
q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt
nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x
GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv
b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV
BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W
YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa
GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg
Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J
WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB
rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp
+ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1
ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i
Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz
PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og
/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH
oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI
yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud
EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2
A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL
MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f
BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn
g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl
fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K
WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha
B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc
hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR
TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD
mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z
ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y
4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza
8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL
BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc
BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00
MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG
SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf
qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW
n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym
c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+
O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1
o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j
IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq
IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz
8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh
vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l
7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG
cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD
ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66
AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC
roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga
W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n
lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE
+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV
csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd
dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg
KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM
HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4
WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x
GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv
b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV
BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W
YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM
V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB
4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr
H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd
8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv
vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT
mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe
btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc
T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt
WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ
c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A
4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD
VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG
CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0
aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu
dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw
czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G
A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC
TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg
Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0
7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem
d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd
+LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B
4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN
t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x
DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57
k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s
zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j
Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT
mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK
4SVhM7JZG+Ju1zdXtg2pEto=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL
BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc
BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00
MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG
SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR
/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu
FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR
U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c
ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR
FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k
A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw
eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl
sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp
VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q
A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+
ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD
ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px
KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI
FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv
oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg
u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP
0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf
3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl
8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+
DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN
PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/
ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK
MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x
GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx
MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg
Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ
iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa
/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ
jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI
HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7
sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w
gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF
MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw
KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG
AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L
URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO
H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm
I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY
iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr
MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG
A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0
MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp
Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD
QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz
i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8
h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV
MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9
UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni
8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC
h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD
VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB
AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm
KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ
X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr
QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5
pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN
QSdJQO7e5iNEOdyhIta6A/I=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI
MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x
FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz
MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv
cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz
Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO
0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao
wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj
7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS
8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT
BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg
JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC
NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3
6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/
3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm
D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS
CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY
MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t
dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5
WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD
VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8
9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ
DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9
Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N
QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ
xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G
A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T
AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG
kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr
Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5
Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU
JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot
RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl
MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe
U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX
DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy
dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj
YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV
OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr
zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM
VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ
hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO
ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw
awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs
OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF
coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc
okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8
t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy
1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/
SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAw
PTELMAkGA1UEBhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2Vy
dGFpbmx5IFJvb3QgUjEwHhcNMjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9
MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0
YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANA2
1B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O5MQT
vqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbed
aFySpvXl8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b0
1C7jcvk2xusVtyWMOvwlDbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5
r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGIXsXwClTNSaa/ApzSRKft43jvRl5tcdF5
cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkNKPl6I7ENPT2a/Z2B7yyQ
wHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQAjeZjOVJ
6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA
2CnbrlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyH
Wyf5QBGenDPBt+U1VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMR
eiFPCyEQtkA6qyI6BJyLm4SGcprSp6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB
/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTgqj8ljZ9EXME66C6u
d0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAszHQNTVfSVcOQr
PbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d
8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi
1wrykXprOQ4vMMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrd
rRT90+7iIgXr0PK3aBLXWopBGsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9di
taY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+gjwN/KUD+nsa2UUeYNrEjvn8K8l7
lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgHJBu6haEaBQmAupVj
yTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7fpYn
Kx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLy
yCwzk5Iwx06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5n
wXARPbv0+Em34yaXOp/SX3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6
OV+KmalBWQewLK8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQsw
CQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlu
bHkgUm9vdCBFMTAeFw0yMTA0MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJ
BgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlubHkxGjAYBgNVBAMTEUNlcnRhaW5s
eSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4fxzf7flHh4axpMCK
+IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9YBk2
QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8E
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4
hevIIgcwCgYIKoZIzj0EAwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozm
ut6Dacpps6kFtZaSF4fC0urQe87YQVt8rgIwRt7qy12a7DLCZRawTDBcMPPaTnOG
BtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl
MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp
U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw
NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE
ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp
ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3
DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf
8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN
+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0
X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa
K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA
1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G
A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR
zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0
YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD
bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w
DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3
L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D
eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp
VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY
WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT
HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs
ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw
MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj
aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp
Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg
nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1
HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N
Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN
dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0
HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO
BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G
CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU
sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3
4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg
8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1
mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT
HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs
ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy
ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy
dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p
OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2
8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K
Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe
hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk
6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw
DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q
AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI
bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB
ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z
qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn
0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN
sSi6
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln
biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF
MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT
d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8
76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+
bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c
6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE
emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd
MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt
MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y
MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y
FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi
aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM
gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB
qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7
lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn
8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6
45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO
UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5
O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC
bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv
GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a
77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC
hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3
92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp
Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w
ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt
Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UE
BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWdu
IFNpbHZlciBDQSAtIEcyMB4XDTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0Nlow
RzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMY
U3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
MIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644N0Mv
Fz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7br
YT7QbNHm+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieF
nbAVlDLaYQ1HTWBCrpJH6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH
6ATK72oxh9TAtvmUcXtnZLi2kUpCe2UuMGoM9ZDulebyzYLs2aFK7PayS+VFheZt
eJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5hqAaEuSh6XzjZG6k4sIN/
c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5FZGkECwJ
MoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRH
HTBsROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTf
jNFusB3hB48IHpmccelM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb6
5i/4z3GcRm25xBWNOHkDRUjvxF3XCO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOB
rDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU
F6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRBtjpbO8tFnb0c
wpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIB
AHPGgeAn0i0P4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShp
WJHckRE1qTodvBqlYJ7YH39FkWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9
xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L3XWgwF15kIwb4FDm3jH+mHtwX6WQ
2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx/uNncqCxv1yL5PqZ
IseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFaDGi8
aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2X
em1ZqSqPe97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQR
dAtq/gsD/KNVV4n+SsuuWxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/
OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJDIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+
hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ubDgEj8Z+7fNzcbBGXJbLy
tGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNV
BAUTCUc2MzI4NzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlk
YWQgZGUgQ2VydGlmaWNhY2lvbjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNV
BAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3QgQ0EwHhcNMTkwOTA0MTAwMDM4WhcN
MzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEwMQswCQYDVQQGEwJF
UzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQwEgYD
VQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9v
dCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCj
cqQZAZ2cC4Ffc0m6p6zzBE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9q
yGFOtibBTI3/TO80sh9l2Ll49a2pcbnvT1gdpd50IJeh7WhM3pIXS7yr/2WanvtH
2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcvB2VSAKduyK9o7PQUlrZX
H1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXsezx76W0OL
zc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyR
p1RMVwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQz
W7i1o0TJrH93PB0j7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/
SiOL9V8BY9KHcyi1Swr1+KuCLH5zJTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJn
LNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe8TZBAQIvfXOn3kLMTOmJDVb3
n5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVOHj1tyRRM4y5B
u8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj
o1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAO
BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC
AgEATh65isagmD9uw2nAalxJUqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L
9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzxj6ptBZNscsdW699QIyjlRRA96Gej
rw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDtdD+4E5UGUcjohybK
pFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM5gf0
vPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjq
OknkJjCb5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ
/zo1PqVUSlJZS2Db7v54EX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ9
2zg/LFis6ELhDtjTO0wugumDLmsx2d1Hhk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI
+PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGyg77FGr8H6lnco4g175x2
MjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3r5+qPeoo
tt7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw
NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv
b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD
VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2
MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F
VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1
7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X
Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+
/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs
81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm
dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe
Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu
sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4
pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs
slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ
arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD
VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG
9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl
dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx
0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj
TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed
Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7
Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI
OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7
vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW
t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn
HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx
SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx
KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd
BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl
YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1
OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy
aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50
ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd
AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC
FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi
1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq
jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ
wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj
QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/
WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy
NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC
uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw
IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6
g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP
BSeOE6Fuwg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx
KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd
BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl
YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1
OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy
aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50
ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN
8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/
RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4
hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5
ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM
EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj
QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1
A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy
WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ
1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30
6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT
91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p
TpPDpFQUWw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx
EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT
VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5
NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT
B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG
SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF
10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz
0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh
MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH
zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc
46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2
yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi
laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP
oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA
BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE
qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm
4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL
1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn
LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF
H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo
RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+
nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh
15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW
6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW
nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j
wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz
aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy
KwbQBM0=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES
MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU
V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz
WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO
LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm
aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE
AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH
K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX
RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z
rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx
3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq
hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC
MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls
XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D
lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn
aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ
YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEg
MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2Jh
bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQx
MjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjET
MBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJ
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRI
xutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1k
ZguSgMpE3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxD
aNc9PIrFsmbVkJq3MQbFvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJw
LnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw
1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNX
k7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2
SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/h
bguyCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4n
WUx2OVvq+aWh2IMP0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpY
rZxCRXluDocZXFSxZba/jJvcE+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1Bonvzce
MgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTAD
AQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSu
bAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN
nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGt
Ixg93eFyRJa0lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr61
55wsTLxDKZmOMNOsIeDjHfrYBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLj
vUYAGm0CuiVdjaExUd1URhxN25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvf
cDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpz
oHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZp
nOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfs
pA9MRf/TuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+v
JJUEeKgDu+6B5dpffItKoZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R
8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW4
5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQEL
BQAwYTELMAkGA1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUg
Q2VydGlmaWNhdGlvbiBFbGVjdHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJv
b3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQwNDI2MDg1NzU2WjBhMQswCQYDVQQG
EwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBDZXJ0aWZpY2F0aW9u
IEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIwDQYJ
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZ
n56eY+hz2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd
2JQDoOw05TDENX37Jk0bbjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgF
VwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZ
GoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAdgjH8KcwAWJeRTIAAHDOF
li/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViWVSHbhlnU
r8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2
eY8fTpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIb
MlEsPvLfe/ZdeikZjuXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISg
jwBUFfyRbVinljvrS5YnzWuioYasDXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB
7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwSVXAkPcvCFDVDXSdOvsC9qnyW
5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI04Y+oXNZtPdE
ITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0
90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+z
xiD2BkewhpMl0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYu
QEkHDVneixCwSQXi/5E/S7fdAo74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4
FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRYYdZ2vyJ/0Adqp2RT8JeNnYA/u8EH
22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJpadbGNjHh/PqAulxP
xOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65xxBzn
dFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5
Xc0yGYuPjCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7b
nV2UqL1g52KAdoGDDIzMMEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQ
CvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9zZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZH
u/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3rAZ3r2OvEhJn7wAzMMujj
d9qDRIueVSjAi1jTkD5OGwDxFa2DK5o=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB
gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk
MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY
UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx
NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3
dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy
dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6
38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP
KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q
DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4
qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa
JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi
PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P
BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs
jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0
eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD
ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR
vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa
IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy
i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ
O+7ETPTsJ3xCwnR8gooJybQDJbw=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN
BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl
c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl
bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv
b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ
BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj
YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5
MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0
dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg
QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa
jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi
C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep
lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof
TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQsw
CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS
VVNUIEVWIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5
NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG
A1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB
BAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8ZRCC
/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rD
wpdhQntJraOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3
OqQo5FD4pPfsazK2/umLMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g
PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2V2X3Jvb3Rf
Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l
dC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1
c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO
PQQDAwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CA
y/m0sRtW9XLS/BnRAjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJb
gfM0agPnIjhQW+0ZT0MW
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYD
VQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEk
MCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U
cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxFzAVBgNVBAMMDlRydXN0Q29y
IEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3MjgwN1owgZwxCzAJBgNV
BAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQw
IgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRy
dXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3Ig
RUNBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb
3w9U73NjKYKtR8aja+3+XzP4Q1HpGjORMRegdMTUpwHmspI+ap3tDvl0mEDTPwOA
BoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23xFUfJ3zSCNV2HykVh0A5
3ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmcp0yJF4Ou
owReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/
wZ0+fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZF
ZtS6mFjBAgMBAAGjYzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAf
BgNVHSMEGDAWgBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/
MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAQEABT41XBVwm8nHc2Fv
civUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u/ukZMjgDfxT2
AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F
hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50
soIipX1TH0XsJ5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BI
WJZpTdwHjFGTot+fDz2LYLSCjaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1Wi
tJ/X5g==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNV
BAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQw
IgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRy
dXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0eTEfMB0GA1UEAwwWVHJ1c3RDb3Ig
Um9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEyMzExNzI2MzlaMIGk
MQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEg
Q2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYD
VQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRy
dXN0Q29yIFJvb3RDZXJ0IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
AoICAQCnIG7CKqJiJJWQdsg4foDSq8GbZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+
QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9NkRvRUqdw6VC0xK5mC8tkq
1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1oYxOdqHp
2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nK
DOObXUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hape
az6LMvYHL1cEksr1/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF
3wP+TfSvPd9cW436cOGlfifHhi5qjxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88
oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQPeSghYA2FFn3XVDjxklb9tTNM
g9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+CtgrKAmrhQhJ8Z3
mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh
8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAd
BgNVHQ4EFgQU2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6U
nrybPZx9mCAZ5YwwYrIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYw
DQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/hOsh80QA9z+LqBrWyOrsGS2h60COX
dKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnpkpfbsEZC89NiqpX+
MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv2wnL
/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RX
CI/hOWB3S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYa
ZH9bDTMJBzN7Bj8RpFxwPIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW
2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dvDDqPys/cA8GiCcjl/YBeyGBCARsaU1q7
N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYURpFHmygk71dSTlxCnKr3
Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANExdqtvArB
As8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp
5KeXRKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu
1uwJ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBs
MQswCQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl
c2VhcmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0Eg
Um9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUzOFoXDTQ1MDIxMzEwNTUzN1owbDEL
MAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl
YXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNBIFJv
b3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569l
mwVnlskNJLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE
4VGC/6zStGndLuwRo0Xua2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uv
a9of08WRiFukiZLRgeaMOVig1mlDqa2YUlhu2wr7a89o+uOkXjpFc5gH6l8Cct4M
pbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K5FrZx40d/JiZ+yykgmvw
Kh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEvdmn8kN3b
LW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcY
AuUR0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqB
AGMUuTNe3QvboEUHGjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYq
E613TBoYm5EPWNgGVMWX+Ko/IIqmhaZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHr
W2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQCPxrvrNQKlr9qEgYRtaQQJKQ
CoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8GA1UdEwEB/wQF
MAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE
AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAU
X15QvWiWkKQUEapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3
f5Z2EMVGpdAgS1D0NTsY9FVqQRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxaja
H6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxDQpSbIPDRzbLrLFPCU3hKTwSUQZqP
JzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcRj88YxeMn/ibvBZ3P
zzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5vZSt
jBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0
/L5H9MG0qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pT
BGIBnfHAT+7hOtSLIBD6Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79
aPib8qXPMThcFarmlwDB31qlpzmq6YR/PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YW
xw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnnkf3/W9b3raYvAwtt41dU
63ZTGI0RmLo=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQsw
CQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2Vh
cmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9v
dCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoXDTQ1MDIxMzExMDEwOVowbDELMAkG
A1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj
aCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJvb3Qg
Q0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7
KKrxcm1lAEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9Y
STHMmE5gEYd103KUkE+bECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUw
AwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQD
AgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAircJRQO9gcS3ujwLEXQNw
SaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/QwCZ61IygN
nxS2PFOiTAZpffpskcYqSUXm7LcT4Tps
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYD
VQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEk
MCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U
cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29y
IFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkxMjMxMTcyMzE2WjCB
pDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFuYW1h
IENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUG
A1UECwweVHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZU
cnVzdENvciBSb290Q2VydCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAv463leLCJhJrMxnHQFgKq1mqjQCj/IDHUHuO1CAmujIS2CNUSSUQIpid
RtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4pQa81QBeCQryJ3pS/C3V
seq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0JEsq1pme
9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CV
EY4hgLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorW
hnAbJN7+KIor0Gqw/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/
DeOxCbeKyKsZn3MzUOcwHwYDVR0jBBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcw
DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD
ggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5mDo4Nvu7Zp5I
/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf
ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZ
yonnMlo2HD6CqFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djts
L1Ac59v2Z3kf9YKVmgenFK+P3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdN
zl/HHk484IkzlQsPpTLWPFp5LBk=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBH
MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBF
eHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMx
MDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNV
BAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrsiWog
D4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvS
sPGP2KxFRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aop
O2z6+I9tTcg1367r3CTueUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dk
sHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR59mzLC52LqGj3n5qiAno8geK+LLNEOfi
c0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH0mK1lTnj8/FtDw5lhIpj
VMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KRel7sFsLz
KuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/
TuDvB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41G
sx2VYVdWf6/wFlthWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs
1+lvK9JKBZP8nm9rZ/+I8U6laUpSNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQD
fwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS3H5aBZ8eNJr34RQwDwYDVR0T
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADaN
l8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR
ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQ
VBcZEhrxH9cMaVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5
c6sq1WnIeJEmMX3ixzDx/BR4dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp
4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb+7lsq+KePRXBOy5nAliRn+/4Qh8s
t2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOWF3sGPjLtx7dCvHaj
2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwiGpWO
vpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2C
xR9GUeOcGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmx
cmtpzyKEC2IPrNkZAJSidjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbM
fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9
MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBH
bG9iYWwgRzIgUm9vdDAeFw0xNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0x
CzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEds
b2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxeYr
b3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmToni9
kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzm
VHqUwCoV8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/R
VogvGjqNO7uCEeBHANBSh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDc
C/Vkw85DvG1xudLeJ1uK6NjGruFZfc8oLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIj
tm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/R+zvWr9LesGtOxdQXGLY
D0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBeKW4bHAyv
j5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6Dl
NaBa4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6
iIis7nCs+dwp4wwcOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznP
O6Q0ibd5Ei9Hxeepl2n8pndntd978XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIHEjMz15DD/pQwIX4wV
ZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo5sOASD0Ee/oj
L3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5
1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl
1qnN3e92mI0ADs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oU
b3n09tDh05S60FdRvScFDcH9yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LV
PtateJLbXDzz2K36uGt/xDYotgIVilQsnLAXc47QN6MUPJiVAAwpBVueSUmxX8fj
y88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHojhJi6IjMtX9Gl8Cb
EGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZkbxqg
DMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI
+Vg7RE+xygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGy
YiGqhkCyLmTTX8jjfhFnRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bX
UB+K+wb1whnw0A==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC
VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T
U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx
NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv
dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv
bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49
AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA
VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku
WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP
MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX
5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ
ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg
h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC
VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T
U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz
WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0
b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS
b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB
BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI
7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg
CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud
EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD
VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T
kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+
gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE
BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK
DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz
OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv
dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv
bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN
AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R
xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX
qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC
C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3
6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh
/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF
YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E
JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc
US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8
ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm
+Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi
M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV
HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G
A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV
cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc
Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs
PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/
q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0
cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr
a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I
H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y
K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu
nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf
oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY
Ic2wBlX7Jz9TkHCpBB5XJ7k=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYT
AkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYD
VQQDEyJTZWN1cml0eSBDb21tdW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYx
NjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTELMAkGA1UEBhMCSlAxJTAjBgNVBAoT
HFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNVBAMTIlNlY3VyaXR5
IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQAIgNi
AASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+Cnnfdl
dB9sELLo5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpK
ULGjQjBAMB0GA1UdDgQWBBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8E
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu
9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3LsnNdo4gIxwwCMQDAqy0O
be0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70eN9k=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNV
BAYTAkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScw
JQYDVQQDEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2
MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UEAxMeU2VjdXJpdHkg
Q29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4r
CmDvu20rhvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzA
lrenfna84xtSGc4RHwsENPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MG
TfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF7
9+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGmnpjKIG58u4iFW/vAEGK7
8vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtYXLVqAvO4
g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3we
GVPKp7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst
+3A7caoreyYn8xrC3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M
0V9hvqG8OmpI6iZVIhZdXw3/JzOfGAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQ
T9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0VcwCBEF/VfR2ccCAwEAAaNCMEAw
HQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB/wQEAwIBBjAP
BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS
YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PA
FNr0Y/Dq9HHuTofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd
9XbXv8S2gVj/yP9kaWJ5rW4OH3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQI
UYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASxYfQAW0q3nHE3GYV5v4GwxxMOdnE+
OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZXSEIx2C/pHF7uNke
gr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml+LLf
iAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUV
nuiZIesnKwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD
2NCcnWXL0CsnMQMeNuE9dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//
1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm6Vwdp6POXiUyK+OVrCoHzrQoeIY8Laad
TdJ0MN1kURXbg4NR16/9M51NZg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB
hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5
MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT
EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh
dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR
6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X
pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC
9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV
/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf
Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z
+pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w
qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah
SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC
u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf
Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq
crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB
/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl
wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM
4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV
2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna
FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ
CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK
boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke
jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL
S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb
QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl
0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB
NVOFBkpdn627G190
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw
MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV
BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy
dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B
3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY
tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/
Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2
VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT
79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6
c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT
Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l
c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee
UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE
Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd
BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF
Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO
VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3
ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs
8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR
iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze
Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ
XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/
qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB
VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB
L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG
jjxDah2nGN59PRbxYvnKkKj9
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl
eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT
JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx
MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg
VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm
aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo
I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng
o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G
A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD
VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB
zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW
RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk
MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH
bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX
DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD
QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc
8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke
hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI
KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg
515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO
xwy8p2Fp8fc74SrL+SvzZpA3
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK
MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu
VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw
MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw
JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG
SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT
3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU
+ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp
S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1
bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi
T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL
vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK
Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK
dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT
c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv
l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N
iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD
ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH
6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt
LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93
nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3
+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK
W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT
AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq
l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG
4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ
mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A
7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN
MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu
VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN
MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0
MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7
ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy
RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS
bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF
/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R
3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw
EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy
9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V
GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ
2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV
WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD
W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN
AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj
t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV
DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9
TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G
lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW
mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df
WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5
+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ
tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA
GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv
8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw
CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg
R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00
MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT
ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw
EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW
+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9
ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI
zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW
tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1
/q4AaOeMSQ+2b1tbFfLn
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJO
TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFh
dCBkZXIgTmVkZXJsYW5kZW4gRVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0y
MjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIg
TmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRlcmxhbmRlbiBFViBS
b290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkkSzrS
M4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nC
UiY4iKTWO0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3d
Z//BYY1jTw+bbRcwJu+r0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46p
rfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13l
pJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gVXJrm0w912fxBmJc+qiXb
j5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr08C+eKxC
KFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS
/ZbV0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0X
cgOPvZuM5l5Tnrmd74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH
1vI4gnPah1vlPNOePqc7nvQDs/nxfRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrP
px9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB
/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwaivsnuL8wbqg7
MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI
eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u
2dfOWBfoqSmuc0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHS
v4ilf0X8rLiltTMMgsT7B/Zq5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTC
wPTxGfARKbalGAKb12NMcIxHowNDXLldRqANb/9Zjr7dn3LDWyvfjFvO5QxGbJKy
CqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tNf1zuacpzEPuKqf2e
vTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi5Dp6
Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIa
Gl6I6lD4WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeL
eG9QgkRQP2YGiqtDhFZKDyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8
FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGyeUN51q1veieQA6TqJIc/2b3Z6fJfUEkc
7uzXLg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC
VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50
cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs
IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz
dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy
NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu
dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt
dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0
aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj
YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T
RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN
cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW
wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1
U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0
jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN
BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/
jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v
1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R
nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH
VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG
A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3
d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu
dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq
RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy
MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD
VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0
L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g
Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi
A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt
ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH
Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC
R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX
hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx
CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ
WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ
BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG
Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/
yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf
BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz
WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF
tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z
374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC
IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL
mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7
wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS
MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2
ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet
UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H
YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3
LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD
nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1
RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM
LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf
77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N
JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm
fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp
6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp
1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B
9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok
RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv
uu8wd+RU4riEmViAqhOLUTpPSPaLtrM=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw
CQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw
JQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT
EENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0
WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT
LkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX
BgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE
KI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm
Fy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj
QjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8
EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J
UG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn
nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6
MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEu
MScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHzAdBgNV
BAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwHhcNMTgwMzE2MTIxMDEzWhcNNDMw
MzE2MTIxMDEzWjB6MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEg
U3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRo
b3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwggIiMA0GCSqG
SIb3DQEBAQUAA4ICDwAwggIKAoICAQDRLY67tzbqbTeRn06TpwXkKQMlzhyC93yZ
n0EGze2jusDbCSzBfN8pfktlL5On1AFrAygYo9idBcEq2EXxkd7fO9CAAozPOA/q
p1x4EaTByIVcJdPTsuclzxFUl6s1wB52HO8AU5853BSlLCIls3Jy/I2z5T4IHhQq
NwuIPMqw9MjCoa68wb4pZ1Xi/K1ZXP69VyywkI3C7Te2fJmItdUDmj0VDT06qKhF
8JVOJVkdzZhpu9PMMsmN74H+rX2Ju7pgE8pllWeg8xn2A1bUatMn4qGtg/BKEiJ3
HAVz4hlxQsDsdUaakFjgao4rpUYwBI4Zshfjvqm6f1bxJAPXsiEodg42MEx51UGa
mqi4NboMOvJEGyCI98Ul1z3G4z5D3Yf+xOr1Uz5MZf87Sst4WmsXXw3Hw09Omiqi
7VdNIuJGmj8PkTQkfVXjjJU30xrwCSss0smNtA0Aq2cpKNgB9RkEth2+dv5yXMSF
ytKAQd8FqKPVhJBPC/PgP5sZ0jeJP/J7UhyM9uH3PAeXjA6iWYEMspA90+NZRu0P
qafegGtaqge2Gcu8V/OXIXoMsSt0Puvap2ctTMSYnjYJdmZm/Bo/6khUHL4wvYBQ
v3y1zgD2DGHZ5yQD4OMBgQ692IU0iL2yNqh7XAjlRICMb/gv1SHKHRzQ+8S1h9E6
Tsd2tTVItQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSM+xx1
vALTn04uSNn5YFSqxLNP+jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQAD
ggIBAEii1QALLtA/vBzVtVRJHlpr9OTy4EA34MwUe7nJ+jW1dReTagVphZzNTxl4
WxmB82M+w85bj/UvXgF2Ez8sALnNllI5SW0ETsXpD4YN4fqzX4IS8TrOZgYkNCvo
zMrnadyHncI013nR03e4qllY/p0m+jiGPp2Kh2RX5Rc64vmNueMzeMGQ2Ljdt4NR
5MTMI9UGfOZR0800McD2RrsLrfw9EAUqO0qRJe6M1ISHgCq8CYyqOhNf6DR5UMEQ
GfnTKB7U0VEwKbOukGfWHwpjscWpxkIxYxeU72nLL/qMFH3EQxiJ2fAyQOaA4kZf
5ePBAFmo+eggvIksDkc0C+pXwlM2/KfUrzHN/gLldfq5Jwn58/U7yn2fqSLLiMmq
0Uc9NneoWWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7D
P78v3DSk+yshzWePS/Tj6tQ/50+6uaWTRRxmHyH6ZF5v4HaUMst19W7l9o/HuKTM
qJZ9ZPskWkoDbGs4xugDQ5r3V7mzKWmTOPQD8rv7gmsHINFSH5pkAnuYZttcTVoP
0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZckbxJF0WddCajJFdr60qZf
E2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx
GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp
bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w
KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0
BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy
dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG
EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll
IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU
QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT
TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg
LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7
a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr
LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr
N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X
YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/
iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f
AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH
V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh
AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf
IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4
lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c
8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf
lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQx
CzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UE
AwwQVGVsaWEgUm9vdCBDQSB2MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1
NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZ
MBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ76zBq
AMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9
vVYiQJ3q9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9
lRdU2HhE8Qx3FZLgmEKnpNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTOD
n3WhUidhOPFZPY5Q4L15POdslv5e2QJltI5c0BE0312/UqeBAMN/mUWZFdUXyApT
7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW5olWK8jjfN7j/4nlNW4o
6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNrRBH0pUPC
TEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6
WT0EBXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63R
DolUK5X6wK0dmBR4M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZI
pEYslOqodmJHixBTB0hXbOKSTbauBcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGj
YzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7Wxy+G2CQ5MB0GA1UdDgQWBBRy
rOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw
AwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ
8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi
0f6X+J8wfBj5tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMM
A8iZGok1GTzTyVR8qPAs5m4HeW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBS
SRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+Cy748fdHif64W1lZYudogsYMVoe+K
TTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygCQMez2P2ccGrGKMOF
6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15h2Er
3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMt
Ty3EHD70sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pT
VmBds9hCG1xLEooc6+t9xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAW
ysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQraVplI/owd8k+BsHMYeB2F326CjYSlKA
rBPuUBQemMc=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt
MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg
Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i
YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x
CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG
b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh
bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3
HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx
WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX
1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk
u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P
99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r
M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB
BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh
cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5
gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO
ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf
aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic
Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb
MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj
YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL
MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM
GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua
BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe
3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4
YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR
rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm
ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU
oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v
QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t
b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF
AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q
GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2
G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi
l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3
smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE
AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw
CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ
BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND
VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb
qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY
HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo
G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA
lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr
IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/
0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH
k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47
4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO
m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa
cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl
uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI
KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls
ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG
AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT
VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG
CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA
cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA
QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA
7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA
cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA
QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA
czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu
aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt
aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud
DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF
BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp
D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU
JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m
AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD
vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms
tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH
7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA
h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF
d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H
pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE
BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w
MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC
SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1
ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv
UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX
4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9
KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/
gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb
rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ
51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F
be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe
KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F
v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn
fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7
jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz
ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL
e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70
jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz
WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V
SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j
pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX
X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok
fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R
K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU
ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU
LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT
LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE
BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz
dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL
MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp
cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP
Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr
ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL
MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1
yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr
VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/
nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ
KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG
XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj
vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt
Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g
N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC
nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE
BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz
dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL
MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp
cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y
YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua
kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL
QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp
6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG
yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i
QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ
KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO
tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu
QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ
Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u
olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48
x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE
BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz
dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG
A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U
cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf
qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ
JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ
+jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS
s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5
HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7
70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG
V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S
qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S
5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia
C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX
OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE
FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2
KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B
8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ
MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc
0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ
u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF
u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH
YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8
GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO
RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e
KeC2uAloGRwYQw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC
VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ
cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ
BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt
VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D
0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9
ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G
A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G
A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs
aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I
flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE
AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG
EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM
FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC
REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp
Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM
VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+
SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ
4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L
cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi
eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV
HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG
A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3
DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j
vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP
DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc
maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D
lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv
KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL
BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6
ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw
NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L
cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg
Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN
QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT
3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw
3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6
3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5
BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN
XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD
AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF
AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw
8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG
nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP
oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy
d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg
LvWpCz/UXeHPhJ/iGcJfitYgHuNztw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB
gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu
QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG
A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz
OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ
VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp
ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3
b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA
DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn
0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB
OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE
fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E
Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m
o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i
sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW
OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez
Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS
adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n
3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ
F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf
CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29
XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm
djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/
WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb
AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq
P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko
b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj
XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P
5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi
DrW5viSP
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd
MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg
Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow
TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw
HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB
BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y
ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E
N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9
tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX
0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c
/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X
KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY
zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS
O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D
34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP
K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3
AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv
Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj
QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV
cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS
IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2
HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa
O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv
033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u
dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE
kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41
3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD
u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq
4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD
TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y
aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx
MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j
aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP
T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03
sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL
TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5
/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp
7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz
EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt
hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP
a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot
aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg
TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV
PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv
cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL
tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd
BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB
ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT
ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL
jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS
ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy
P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19
xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d
Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN
5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe
/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z
AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ
5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd
MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg
Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow
TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw
HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB
BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr
6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV
L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91
1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx
MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ
QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB
arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr
Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi
FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS
P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN
9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP
AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz
uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h
9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s
A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t
OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo
+fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7
KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2
DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us
H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ
I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7
5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h
3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz
Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQEL
BQAwbzELMAkGA1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJ
SG9uZyBLb25nMRYwFAYDVQQKEw1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25n
a29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2MDMwMjI5NDZaFw00MjA2MDMwMjI5
NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtvbmcxEjAQBgNVBAcT
CUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMXSG9u
Z2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
AoICAQCziNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFO
dem1p+/l6TWZ5Mwc50tfjTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mI
VoBc+L0sPOFMV4i707mV78vH9toxdCim5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV
9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOesL4jpNrcyCse2m5FHomY
2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj0mRiikKY
vLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+Tt
bNe/JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZb
x39ri1UbSsUgYT2uy1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+
l2oBlKN8W4UdKjk60FSh0Tlxnf0h+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YK
TE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsGxVd7GYYKecsAyVKvQv83j+Gj
Hno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwIDAQABo2MwYTAP
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e
i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEw
DQYJKoZIhvcNAQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG
7BJ8dNVI0lkUmcDrudHr9EgwW62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCk
MpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWldy8joRTnU+kLBEUx3XZL7av9YROXr
gZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov+BS5gLNdTaqX4fnk
GMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDceqFS
3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJm
Ozj/2ZQw9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+
l6mc1X5VTMbeRRAc6uk7nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6c
JfTzPV4e0hz5sy229zdcxsshTrD3mUcYhcErulWuBurQB7Lcq9CClnXO0lD+mefP
L5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB60PZ2Pierc+xYw5F9KBa
LJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fqdBb9HxEG
mpv0
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEM
BQAwaTELMAkGA1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRG
T1JNIENvcnAuMTIwMAYDVQQDDClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4NDJaFw0zNzA4MTgyMzU5NTlaMGkx
CzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVTUyBQTEFURk9STSBD
b3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlvbiBB
dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVA
iQqrDZBbUGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH
38dq6SZeWYp34+hInDEW+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lE
HoSTGEq0n+USZGnQJoViAbbJAh2+g1G7XNr4rRVqmfeSVPc0W+m/6imBEtRTkZaz
kVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2aacp+yPOiNgSnABIqKYP
szuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4Yb8Obtoq
vC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHf
nZ3zVHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaG
YQ5fG8Ir4ozVu53BA0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo
0es+nPxdGoMuK8u180SdOqcXYZaicdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3a
CJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejyYhbLgGvtPe31HzClrkvJE+2K
AQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNVHQ4EFgQU0p+I
36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB
Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoN
qo0hV4/GPnrK21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatj
cu3cvuzHV+YwIHHW1xDBE1UBjCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm
+LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bxhYTeodoS76TiEJd6eN4MUZeoIUCL
hr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTgE34h5prCy8VCZLQe
lHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTHD8z7
p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8
piKCk5XQA76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLR
LBT/DShycpWbXgnbiUSYqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX
5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oGI/hGoiLtk/bdmuYqh7GYVPEi92tF4+KO
dh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmgkpzNNIaRkPpkUZ3+/uul
9XXeifdy
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c
JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+
wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4
VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/
AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB
AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC
dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm
NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx
H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA
n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc
biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp
EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA
bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu
YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB
AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW
BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI
QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I
0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni
lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9
B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv
ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
IhNzbM8m9Yop5w==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw
CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg
RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu
Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq
hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf
Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q
RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD
AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY
JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv
6pZjamVFkpUBtA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI
2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx
1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ
q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz
tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ
vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV
5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY
1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4
NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG
Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91
8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe
pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
MrY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw
CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe
Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw
EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x
IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF
K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG
fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO
Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd
BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx
AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/
oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8
sycX
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
+OkuE6N36B9K
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg
RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu
Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG
SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y
ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If
xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV
ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO
DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ
jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/
CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi
EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM
fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY
uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK
chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t
9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD
ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2
SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd
+SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc
fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa
sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N
cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N
0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie
4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI
r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1
/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm
gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4
MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6
ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD
VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j
b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq
scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO
xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H
LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX
uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD
yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+
JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q
rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN
BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L
hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB
QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+
HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu
Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg
QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB
BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA
A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb
laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56
awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo
JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw
LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT
VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk
LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb
UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/
QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+
naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls
QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYD
VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG
A1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw
WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz
IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi
AATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzuhXyi
QHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvR
HYqjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
BBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D
9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/Cr8deVl5c1RxYIigL9zC2L7F8AjEA8GE8
p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh4rsUecrNIdSUtUlD
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQsw
CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw
MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUA
A4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaMf/vo
27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7w
Cl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjw
TcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0Pfybl
qAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaH
szVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4Zor8
Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUspzBmk
MiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92
wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70p
aDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrN
VjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQID
AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
FgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBAJ+qQibb
C5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe
QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuy
h6f88/qBVRRiClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM4
7HLwEXWdyzRSjeZ2axfG34arJ45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8J
ZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYciNuaCp+0KueIHoI17eko8cdLiA6Ef
MgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5meLMFrUKTX5hgUvYU/
Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJFfbdT
6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ
0E6yove+7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm
2tIMPNuzjsmhDYAPexZ3FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bb
bP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3gm3c
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQsw
CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
MBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw
MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUA
A4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3LvCvpt
nfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY
6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAu
MC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7k
RXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWg
f9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1mKPV
+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K8Yzo
dDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW
Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKa
G73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCq
gc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwID
AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
FgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBAB/Kzt3H
vqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8
0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyC
B19m3H0Q/gxhswWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2u
NmSRXbBoGOqKYcl3qJfEycel/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMg
yALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVnjWQye+mew4K6Ki3pHrTgSAai/Gev
HyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y59PYjJbigapordwj6
xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M7YNR
TOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924Sg
JPFI/2R80L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV
7LXTWtiBmelDGDfrs7vRWGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl
6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjWHYbL
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYD
VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG
A1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw
WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz
IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNi
AAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout736G
jOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL2
4CejQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
BBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7
VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azTL818+FsuVbu/3ZL3pAzcMeGiAjEA/Jdm
ZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV11RZt+cRLInUue4X
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYD
VQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2Jh
bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgw
MTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0g
UjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wWTAT
BgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkWymOx
uYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNV
HQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/
+wpu+74zyTyjhNUwCgYIKoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147
bmF0774BxL4YSFlhgjICICadVGNA3jdgUM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQsw
CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYD
VQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw
MTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4MjMxNjA0WjBlMQswCQYDVQQGEwJV
UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNy
b3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQBgcq
hkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZR
ogPZnZH6thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYb
hGBKia/teQ87zvH2RPUBeMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8E
BTADAQH/MB0GA1UdDgQWBBTIy5lycFIM+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3
FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlfXu5gKcs68tvWMoQZP3zV
L8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaReNtUjGUB
iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBl
MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw
NAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIwNzE4MjMwMDIzWjBlMQswCQYDVQQG
EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1N
aWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZ
Nt9GkMml7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0
ZdDMbRnMlfl7rEqUrQ7eS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1
HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw71VdyvD/IybLeS2v4I2wDwAW9lcfNcztm
gGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+dkC0zVJhUXAoP8XFWvLJ
jEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49FyGcohJUc
aDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaG
YaRSMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6
W6IYZVcSn2i51BVrlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4K
UGsTuqwPN1q3ErWQgR5WrlcihtnJ0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH
+FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJClTUFLkqqNfs+avNJVgyeY+Q
W5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/
BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC
NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZC
LgLNFgVZJ8og6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OC
gMNPOsduET/m4xaRhPtthH80dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6
tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk+ONVFT24bcMKpBLBaYVu32TxU5nh
SnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex/2kskZGT4d9Mozd2
TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDyAmH3
pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGR
xpl/j8nWZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiApp
GWSZI1b7rCoucL5mxAyE7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9
dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKTc0QWbej09+CVgI+WXTik9KveCjCHk9hN
AHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D5KbvtwEwXlGjefVwaaZB
RA+GsCyRxj3qrg+E
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQsw
CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS
VVNUIEJSIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5
NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG
A1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB
BAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7dPYS
zuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0
QVK5buXuQqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/
VbNafAkl1bK6CKBrqx9tMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g
PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2JyX3Jvb3Rf
Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l
dC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1
c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO
PQQDAwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFW
wKrY7RjEsK70PvomAjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHV
dWNbFJWcHwHP2NVypw87
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk
MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH
bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX
DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD
QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ
FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw
DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F
uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX
kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs
ewv4n4Q=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQsw
CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
MBIGA1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw
MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQA
IgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu
hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/l
xKvRHYqjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
DgQWBBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0
CMRw3J5QdCHojXohw0+WbhXRIjVhLfoIN+4Zba3bssx9BzT1YBkstTTZbyACMANx
sbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11xzPKwTdb+mciUqXWi4w==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBH
MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM
QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy
MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl
cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM
f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vX
mX7wCl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7
zUjwTcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0P
fyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtc
vfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4
Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUsp
zBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOO
Rc92wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYW
k70paDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+
DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgF
lQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
HQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBADiW
Cu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1
d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6Z
XPYfcX3v73svfuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZR
gyFmxhE+885H7pwoHyXa/6xmld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3
d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9bgsiG1eGZbYwE8na6SfZu6W0eX6Dv
J4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq4BjFbkerQUIpm/Zg
DdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWErtXvM
+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyy
F62ARPBopY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9
SQ98POyDGCBDTtWTurQ0sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdws
E3PYJ/HQcu51OyLemGhmW/HGY0dVHLqlCFF1pkgl
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBH
MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM
QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy
MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl
cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv
CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3Kg
GjSY6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9Bu
XvAuMC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOd
re7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXu
PuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1
mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K
8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqj
x5RWIr9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsR
nTKaG73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0
kzCqgc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9Ok
twIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
HQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBALZp
8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT
vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiT
z9D2PGcDFWEJ+YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiA
pJiS4wGWAqoC7o87xdFtCjMwc3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvb
pxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3DaWsYDQvTtN6LwG1BUSw7YhN4ZKJmB
R64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5rn/WkhLx3+WuXrD5R
RaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56GtmwfuNmsk
0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC
5AwiWVIQ7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiF
izoHCBy69Y9Vmhh1fuXsgWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLn
yOd/xCxgXS/Dr55FBcOEArf9LAhST4Ldo/DUhgkC
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQsw
CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
MBIGA1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw
MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQA
IgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout
736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2A
DDL24CejQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
DgQWBBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFuk
fCPAlaUs3L6JbyO5o91lAFJekazInXJ0glMLfalAvWhgxeG4VDvBNhcl2MG9AjEA
njWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOaKaqW04MjyaR7YbPMAuhd
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw
WjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw
MiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x
MzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD
VQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX
BgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO
ty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M
CiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu
I9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm
TLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh
C59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf
ePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz
IoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT
Co/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k
JWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5
hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB
GjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
FBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of
1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov
L3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo
dHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr
aHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq
hkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L
6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG
HVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6
0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB
lA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi
o2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1
gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v
faci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63
Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh
jWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw
3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV
BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X
DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ
BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4
QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny
gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw
zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q
130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2
JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw
DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw
ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT
AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj
AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG
9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h
bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc
fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu
HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w
t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBN
MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMT
HERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcN
NDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs
IEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS87IE+
ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG0
2C+JFvuUAT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgp
wgscONyfMXdcvyej/Cestyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZM
pG2T6T867jp8nVid9E6P/DsjyG244gXazOvswzH016cpVIDPRFtMbzCe88zdH5RD
nU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnVDdXifBBiqmvwPXbzP6Po
sMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9qTXeXAaDx
Zre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cd
Lvvyz6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvX
KyY//SovcfXWJL5/MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNe
XoVPzthwiHvOAbWWl9fNff2C+MIkwcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPL
tgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4EFgQUUTMc7TZArxfTJc1paPKv
TiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN
AQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw
GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7H
PNtQOa27PShNlnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLF
O4uJ+DQtpBflF+aZfTCIITfNMBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQ
REtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/u4cnYiWB39yhL/btp/96j1EuMPik
AdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9GOUrYU9DzLjtxpdRv
/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh47a+
p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilw
MUc/dNAUFvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WF
qUITVuwhd4GTWgzqltlJyqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCK
ovfepEWFJqgejF0pW8hL2JpqA15w8oVPbEtoL8pU9ozaMv7Da4M/OMZ+
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQsw
CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURp
Z2lDZXJ0IFRMUyBFQ0MgUDM4NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2
MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJ
bmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQgUm9vdCBHNTB2MBAG
ByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1TzvdlHJS
7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp
0zVozptjn4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICIS
B4CIfBFqMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49
BAMDA2gAMGUCMQCJao1H5+z8blUD2WdsJk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQ
LgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIxAJSdYsiJvRmEFOml+wG4
DXZDjC5Ty3zfDBeWUA==
-----END CERTIFICATE-----
`;function Qf(i,e){return new Uint8Array(i).join("")==new Uint8Array(e).join("")}u(Qf,"Rf");function Hy(i){let e=i.map(n=>rt.fromBER(n)),t=function(n){for(let r=0;r<n.length;r++){let a=n[r];if(n.find(o=>!Qf(a.subject.valueBeforeDecode,o.subject.valueBeforeDecode)&&Qf(a.subject.valueBeforeDecode,o.issuer.valueBeforeDecode))==null)return a}}(e),s=e.find(n=>Qf(t.issuer.valueBeforeDecode,n.subject.valueBeforeDecode));return[t,s]}u(Hy,"Ff");async function SM(i){let e=Hy(i),t=function(){let r=VM.replace(/\r\n/g,"").split(/-----BEGIN CERTIFICATE-----|-----END CERTIFICATE-----}?/g).filter(o=>o.length>1),a=[];return r.forEach(o=>{let c=Qe(function(A){let h=atob(A).split("").map(function(d){return d.charCodeAt(0)});return new Uint8Array(h)}(o).buffer),l=new rt({schema:c.result});a.push(l)}),a}(),s=new nB({certs:e,trustedCerts:t,checkDate:new Date}),n=await s.verify();if(n.result==0)throw n.resultMessage;return!0}u(SM,"Hf");var Bu,kM=(Bu=class{constructor(e){if(this.record_header=Et.fromBuffer(e),!this.record_header.isType(Wt))throw new Error("bad record type",this.record_header.type);if(this.handshake_header=zs.fromBuffer(e),!this.handshake_header.isType(l0))throw new Error("bad handshake type",this.handshake_header.type);let t=e.bytesRead();this.certificates_len=new ug(e.readUint24()),this.certificates=[];let s=0;for(;s<this.certificates_len.val;){let r=new ug(e.readUint24()),a=e.readBytes(r.val);this.certificates.push(new Uint8Array(a)),s+=3+r.val}let n=e.bytesRead()-t;if(this.handshake_header.length.val!=n)throw new Error("bad handshake length");if(this.record_header.length=new Ee(n+4),!SM(this.certificates))throw new Error("invalid certificate chain")}toString(){let e=`-------------------------------Server Certificate---------------------------------------
`;return e+=this.record_header.toString(),e+=this.handshake_header.toString(),e+=` Certificates Length: ${this.certificates_len.hex()}
`,e+=` Certificates:
`,this.certificates.forEach(t=>e+=` Length: ${t.length}, Certificate:${t.slice(0,20).map(s=>s.toString(16).padStart(2,"0")).join(",")}...
`),e}},u(Bu,"Yf"),Bu),pu,xM=(pu=class{constructor(e){if(this.record_header=Et.fromBuffer(e),!this.record_header.isType(Wt))throw new Error("bad record type",this.record_header.type);if(this.handshake_header=zs.fromBuffer(e),!this.handshake_header.isType(u0))throw new Error("bad handshake type",this.handshake_header.type);let t=e.bytesRead();this.status_type=e.readUint8(),this.length=new ug(e.readUint24()),this.response=e.readBytes(this.length.val);let s=e.bytesRead()-t;if(s!==this.handshake_header.length.val)throw new Error(`bad handshake size, ${s}, ${this.handshake_header.length.val}`);this.record_header.length=new Ee(s+4)}toString(){let e=`-------------------------------ServerCertificateStatus-------------------------------
`;return e+=this.record_header.toString(),e+=this.handshake_header.toString(),e+=` Status Type: ${this.status_type}
`,e+=` Length: ${this.length.hex()}
`,e+=` Response: ${ga(this.response)}
`,e}},u(pu,"Jf"),pu),Eu,TM=(Eu=class{constructor(e){if(this.record_header=Et.fromBuffer(e),!this.record_header.isType(Wt))throw new Error("bad record type",this.record_header.type);if(this.handshake_header=zs.fromBuffer(e),!this.handshake_header.isType(h0))throw new Error("bad handshake type",this.handshake_header.type);let t=e.bytesRead();this.curve_type=e.readUint8(),this.named_curve=new Ee(e.readUint16()),this.pub_key_len=e.readUint8(),this.pub_key=new Uint8Array(e.readBytes(this.pub_key_len)),this.signature_algorithm=new Ee(e.readUint16()),this.signature_len=new Ee(e.readUint16()),this.signature=new Uint8Array(e.readBytes(this.signature_len.val));let s=e.bytesRead()-t;if(s!==this.handshake_header.length.val)throw new Error("bad handshake size");this.record_header.length=new Ee(s+4)}toString(){let e=`-------------------------------------Server Key Exchange-------------------------------------
`;return e+=this.record_header.toString(),e+=this.handshake_header.toString(),e+=` Curve Type: ${this.curve_type}
`,e+=` Named Curve: ${this.named_curve.hex()}
`,e+=` PubKey Length: ${this.pub_key_len}
`,e+=` PubKey: ${ga(this.pub_key)}
`,e+=` Signature Algorithm: ${this.signature_algorithm.hex()}
`,e+=` Signature Length: ${this.signature_len.hex()}
`,e+=` Signature: ${ga(this.signature.slice(0,16))}...
`,e}},u(Eu,"jf"),Eu),yu,UM=(yu=class{constructor(e){if(this.record_header=Et.fromBuffer(e),!this.record_header.isType(Wt))throw new Error("bad record type",this.record_header.type);if(this.handshake_header=zs.fromBuffer(e),!this.handshake_header.isType(A0))throw new Error("bad handshake type",this.handshake_header.type)}toString(){let e=`-------------------------------------Server Hello Done-------------------------------------
`;return e+=this.record_header.toString(),e+=this.handshake_header.toString(),e}},u(yu,"Of"),yu),Iu,RM=(Iu=class{constructor(e){this.pk=e,this.pk_len=e.length;let t=this.pk_len+1;this.handshake_header=new zs(d0,t),this.record_header=new Et(Wt,Ln,t+4)}toBytes(){let e=new Ne;return e.writeBytes(this.record_header.toBytes()).writeBytes(this.handshake_header.toBytes()).writeUint8(this.pk_len).writeBytes(this.pk),e.drain()}toString(){let e=`-------------------------------Client Key Exchange-------------------------------
`;return e+=this.record_header.toString(),e+=this.handshake_header.toString(),e+=` PubKey Length: ${this.pk_len}
`,e+=` PubKey: ${ga(this.pk)}
`,e}},u(Iu,"Lf"),Iu),Cu,GM=(Cu=class{constructor(){this.message=[1],this.record_header=new Et(_E,Ln,this.message.length)}toBytes(){let e=new Ne;return e.writeBytes(this.record_header.toBytes()).writeBytes(this.message),e.drain()}toString(){let e=`-------------------------------Client Change Cipher Spec-------------------------------
`;return e+=this.record_header.toString(),e+=` Message: ${this.message}
`,e}},u(Cu,"zf"),Cu),Mu,FM=(Mu=class{constructor(){this.payload=null}async encrypt(e){let t=await e.hash(),s=await kE(e.ms,"client finished",t);this.verify_data=s,this.handshake_header=new zs(ey,s.length);let n=new Uint8Array([...this.handshake_header.toBytes(),...s]),r=new Ne().writeUint64(e.client_seq_number).writeUint8(Wt).writeUint16(Ln).writeUint16(16).Bytes(),{cipher:a}=await VE(e.client_write_iv,e.client_write_key,n,r);this.payload=a,this.record_header=new Et(Wt,Ln,this.payload.length)}toBytes(){let e=new Ne;return e.writeBytes(this.record_header.toBytes()).writeBytes(this.payload),e.drain()}toString(){let e=`-------------------------------------Client Finished-------------------------------------
`;return e+=this.record_header.toString(),e+=` Payload: ${this.payload}
`,e}},u(Mu,"Wf"),Mu),bu,HM=(bu=class{constructor(e){if(this.record_header=Et.fromBuffer(e),!this.record_header.isType(Wt))throw new Error("bad record type",this.record_header.type);if(this.handshake_header=zs.fromBuffer(e),!this.handshake_header.isType(g0))throw new Error("bad handshake type",this.handshake_header.type);let t=e.bytesRead();this.lifetime=new cE(e.readUint32()),this.length=new Ee(e.readUint16()),this.ticket=e.readBytes(this.length.val);let s=e.bytesRead()-t;if(s!==this.handshake_header.length.val)throw new Error("bad handshake size");this.record_header.length=new Ee(s+4)}toString(){let e=`Server New Session Ticket
`;return e+=` Lifetime: ${this.lifetime.hex()}
`,e+=` Length: ${this.length.hex()}
`,e+=` Ticket: ${ga(this.ticket)}
`,e}},u(bu,"Zf"),bu),Nu,YM=(Nu=class{constructor(e){if(this.record_header=Et.fromBuffer(e),this.message=e.readUint8(),!this.record_header.isType(_E))throw new Error("bad record type",this.record_header.type);e.size()>0&&(this.record_header.length=new Ee(1))}toString(){let e=`Server Change Cipher Spec
`;return e+=` Record Header: ${this.record_header.toString()}
`,e+=` Message: ${this.message}
`,e}},u(Nu,"Kf"),Nu),vu,jM=(vu=class{constructor(e){if(this.record_header=Et.fromBuffer(e),!this.record_header.isType(Wt))throw new Error("bad record type",this.record_header.type);if(e.size()!=this.record_header.length.val)throw new Error("bad record length");this.encrypted_content=e.Bytes()}async decrypt(e){let t=new Ne().writeUint64(e.server_seq_number).writeUint8(Wt).writeUint16(Ln).writeUint16(16).Bytes(),s=await SE(e.server_write_iv,e.server_write_key,this.encrypted_content,t),n=new Ne(s);if(this.handshake_header=zs.fromBuffer(n),!this.handshake_header.isType(ey))throw new Error("bad handshake type",handshake_header.type);let r=n.drain(),a=await e.hash(),o=await kE(e.ms,"server finished",a);if(r.length!=12||o.length!=12)throw new Error("bad verify data length");for(let c=0;c<12;c++)if(r[c]!=o[c])throw new Error("bad verify data")}toString(){let e=`Server Finished
`;return e+=` Record Header: ${this.record_header.toString()}
`,e+=` Encrypted Content: ${this.encrypted_content}
`,e}},u(vu,"Pf"),vu),Aa,JM=(Aa=class{constructor(e){let t=e||128;this.bytes=new Uint8Array(t),this.offset=0,this.cursor=0}static fromBytes(e){let t=new Aa(e.length);return t.writeBytes(e),t}size(){return this.offset-this.cursor}drain(){let e=this.bytes.slice(this.cursor,this.offset);return this.offset=0,this.cursor=0,e}grow(e){let t=this.bytes.length+e;if(t>13107200)throw new Error("buffer grows over 100M.");let s=new Uint8Array(t);return s.set(this.bytes,0),this.bytes=s,this}shift(e){let t=this.bytes.slice(0,e),s=this.bytes.slice(e);return this.bytes=s,this.cursor=Math.max(0,this.cursor-e),this.offset=Math.max(0,this.offset-e),Aa.fromBytes(t)}seek(e){return this.cursor=e,this}write(e,t){if(e=+e,t>>>=0,this.offset+t>this.bytes.length){let r=Math.max(128,t);this.grow(r)}let s=t-1,n=1;for(this.bytes[this.offset+s]=255&e;--s>=0&&(n*=256);)this.bytes[this.offset+s]=e/n&255;return this.offset+=t,this}writeBytes(e){let t=e.length;if(this.offset+t>this.bytes.length){let s=Math.max(128,t);this.grow(s)}return this.bytes.set(e,this.offset),this.offset+=t,this}writeUint8(e){return this.write(e,1)}writeUint16(e){return this.write(e,2)}writeUint24(e){return this.write(e,3)}writeUint32(e){return this.write(e,4)}writeUint64(e){return this.write(e,8)}read(e){if(e==0)throw"can not read 0 length byte";let t=e>>>0,s=this.bytes[this.cursor+--t],n=1;for(;t>0&&(n*=256);)s+=this.bytes[this.cursor+--t]*n;return this.cursor+=e,s}readBytes(e){let t=this.bytes.slice(this.cursor,this.cursor+e);return this.cursor+=e,t}readUint8(){return this.read(1)}readUint16(){return this.read(2)}readUint24(){return this.read(3)}readUint32(){return this.read(4)}readUint64(){return this.read(8)}peek(e,t){let s=t>>>0,n=this.bytes[e+--s],r=1;for(;s>0&&(r*=256);)n+=this.bytes[e+--s]*r;return n}peekBytes(e,t){let s=e+t;return this.bytes.slice(e,s)}peekAllBytes(){return this.bytes.slice(this.cursor,this.offset)}peekUint8(e){return this.peek(e,1)}peekUint16(e){return this.peek(e,2)}peekUint24(e){return this.peek(e,3)}peekUint32(e){return this.peek(e,4)}},u(Aa,"Xf"),Aa),LM=u(i=>new Promise(e=>setTimeout(e,i)),"qf"),OM={"/setup/connect":"Connecting with zkpass node","/handshake/hello":"Start 3P-TLS","/handshake/client/finish":"3P-TLS running","/app/data/send":"3P-TLS running","/app/data/recv":"3P-TLS running","/app/data/end":"3P-TLS success","/zkp/complete/grammar":"Generating proof","/proof/gc/table":"Generating proof","/proof/aes":"Generating proof","/zkp/izk/seed":"Generating proof","/proof/hmac":"Generating proof","/zkp/izk/prove":"Verifying proof","/zkp/circuit/build":"Verifying proof"},Du,WM=(Du=class{constructor(e,t,s,n,r="v3",a=!1){this.domain=e,this.encKey=s,this.decKey=n,this.tid=t,this.buffer=new JM,this.recvSeq=0,this.apiVersion=r,this.serverSide=a}async send(e,t,s,n=!0){let r=await this.sendMessageToNode(e,t,s);n&&this.buffer.writeBytes(r)}async recv(){await this.send("POST","/app/data/recv",new Uint8Array([this.recvSeq])),this.recvSeq+=1}async close(){await this.send("POST","/app/data/end")}bufferSize(){return this.buffer.size()}drain(){return this.buffer.drain()}async read(e){let t=0;for(;this.buffer.size()<e&&t<100;)await this.recv(),await LM(200),t++;if(t==100)throw"read server data error";return this.buffer.readBytes(e)}async sendMessageToNode(e,t,s,n=!0){try{s||(s=new Uint8Array);let r=OM[t]||`REQUEST DATA FROM: ${t}`;!this.serverSide&&r&&this.sendMessageToContent("generate zkProof with node",r);let a=this.encKey?await async function(d,m){try{let E=Rw(12),y=await crypto.subtle.encrypt({name:"AES-GCM",iv:E.buffer},d,m.buffer);return new Uint8Array([...Array.from(E),...Array.from(new Uint8Array(y))])}catch{throw"Encrypting data Error"}}(this.encKey,s):s.buffer,o=`https://${this.domain}/tls/3p/${this.apiVersion}`,c={method:e,headers:{"Content-Type":"text/plain","Cache-Control":"no-cache","Access-Control-Allow-Origin":"*",tid:this.tid}};e.toLowerCase()==="post"&&(c.body=a);let l={},A=5;for(;A>0;)try{l=await fetch(`${o}${t}`,c),A=0}catch{A-=1}let h=await l.arrayBuffer();return this.decKey&&n?await async function(d,m){try{return new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:m.slice(0,12).buffer},d,m.slice(12).buffer))}catch{throw"Decrypting data Error"}}(this.decKey,new Uint8Array(h)):new Uint8Array(h)}catch{throw"3-Party TLS Computation failed. Please ensure you have a stable internet connection and try again."}}async sendMessageToContent(e,t){if(chrome&&chrome.tabs&&chrome.storage)try{let s=await chrome.storage.session.get("lastTab");if(s&&s.lastTab){let n=s.lastTab;await chrome.tabs.sendMessage(n?.id,{action:e,event:t,actionTabId:n?.id})}}catch{}}},u(Du,"$f"),Du),PM=u(i=>new Promise(e=>setTimeout(e,i)),"eE"),Qu,zM=(Qu=class{constructor({host:e,tls_version:t,node:s,serverSide:n}){this.tls_version=t,this.host=e,this.server=new WM(s.domain,s.task_id,s.enc_key,s.dec_key,s.version,n),this.session=new XI,this.buf=new Ne,this.response="",this.records=[],this.responseContentLength=-3}async connect(){await this.server.connect()}async close(){await this.server.close()}async recv(){let e=await this.server.read(5),t=e[0],s=(e[3]<<8)+e[4],n=await this.server.read(s);if(t===21){let r=new $I({level:n[0],description:n[1]});throw new Error(r.toString())}return[...e,...n]}async checkSignature(e,t,s){let n=Hy(s)[0],r=new Ne().writeBytes(this.session.client_random).writeBytes(this.session.server_random).writeUint8(this.session.curve_type).writeUint16(this.session.named_curve.val).writeUint8(this.session.server_pk.length).writeBytes(this.session.server_pk).Bytes();if(!await II(n,e,r,t))throw"bad signature."}async sendClientHello(){let e=new f0({host:this.host,version:this.tls_version});this.session.client_random=e.message.random;let t=e.toBytes();this.session.keep(t.slice(5),"client hello",t.slice(0,5)),await this.server.send("POST","/handshake/hello",new Uint8Array(t))}async recvServerHello(){let e=await this.recv();this.session.keep(e.slice(5)),this.buf.writeBytes(e);let t=new w0(this.buf);if(this.session.server_random=t.server_random,this.session.cipher_suite=t.cipher_suite,this.session.support_extended_master_secret=t.supportExtension(qE),this.session.support_session_ticket=t.supportExtension(XE),this.buf.size()>0){let r=new Ne([22,3,3,0,0]);r.writeBytes(this.buf.drain()),this.buf=r}else{let r=await this.recv();this.session.keep(r.slice(5)),this.buf.writeBytes(r)}let s=new kM(this.buf);if(t.supportExtension($E)){if(this.buf.size()>0){let r=new Ne([22,3,3,0,0]);r.writeBytes(this.buf.drain()),this.buf=r}else{let r=await this.recv();this.session.keep(r.slice(5)),this.buf.writeBytes(r)}new xM(this.buf)}if(this.buf.size()>0){let r=new Ne([22,3,3,0,0]);r.writeBytes(this.buf.drain()),this.buf=r}else{let r=await this.recv();this.session.keep(r.slice(5)),this.buf.writeBytes(r)}let n=new TM(this.buf);if(this.session.server_pk=n.pub_key,this.session.curve_type=n.curve_type,this.session.named_curve=n.named_curve,await this.checkSignature(n.signature,n.signature_algorithm.val,s.certificates),this.buf.size()>0){let r=new Ne([22,3,3,0,0]);r.writeBytes(this.buf.drain()),this.buf=r}else{let r=await this.recv();this.session.keep(r.slice(5)),this.buf.writeBytes(r)}if(new UM(this.buf),this.buf.size()>0)throw new Error("unexpected data, buf should be empty.")}async sendClientFinish(){this.session.generateClientKeys();let e=new RM(this.session.client_pk).toBytes();this.session.keep(e.slice(5));let t=new GM().toBytes();await this.session.derivateSessionKeys();let s=new FM;await s.encrypt(this.session);let n=s.toBytes();this.session.keep(s.handshake_header.toBytes()),this.session.keep(s.verify_data);let r=new Uint8Array([...e,...t,...n]);await this.server.send("POST","/handshake/client/finish",r),this.session.incClientSeq()}async recvServerFinish(){if(this.session.support_session_ticket){let t=await this.recv();this.buf.writeBytes(t),new HM(this.buf),this.session.keep(t.slice(5))}if(this.buf.size()>0){let t=new Ne([22,3,3,0,0]);t.writeBytes(this.buf.drain()),this.buf=t}else{let t=await this.recv();this.buf.writeBytes(t)}if(new YM(this.buf),this.buf.size()>0){let t=new Ne([22,3,3,0,0]);t.writeBytes(this.buf.drain()),this.buf=t}else{let t=await this.recv();this.buf.writeBytes(t)}await new jM(this.buf).decrypt(this.session),this.session.incServerSeq()}async handshake(){await this.sendClientHello(),await this.recvServerHello(),await this.sendClientFinish(),await this.recvServerFinish()}async sendAppData(e,t="application/json"){let s=xi(e),n=new Ne().writeUint64(this.session.client_seq_number).writeUint8(Gg).writeUint16(Ln).writeUint16(s.length).Bytes(),{cipher:r,nonce:a}=await VE(this.session.client_write_iv,this.session.client_write_key,s,n);this.session.client_write_nonce=a,this.session.request_cipher_bytes=r.slice(8);let o=new Et(Gg,Ln,r.length),c=new Uint8Array([...o.toBytes(),...r]);await this.server.send("post","/app/data/send",c,!1),this.session.incClientSeq(),await this.receiveResponseData(),await this.close();let l=this.splitResponse(),A=this.getResponseCode(this.response),h=l.join(""),d={responseStatus:A,records:this.records,serverKey:this.session.server_write_key,clientKey:this.session.client_write_key,clientNonce:this.session.client_write_nonce,requestCipherBytes:this.session.request_cipher_bytes,fullResponse:this.response,accept:t,responseSliceList:l,responseBody:h};return t.indexOf("text/html")>-1||(d.json=JSON.parse(l.join(""))),d}async receiveResponseData(){for(;!this.isFinished();)await this.parseResponseData(),await PM(100)}async parseResponseData(){let e=await this.recv(),t=new Ne(e),s=Et.fromBuffer(t);if(!s.isType(Gg))throw new Error("bad record type",s.type);let n=t.Bytes(),r=new Ne().writeUint64(this.session.server_seq_number).writeUint8(Gg).writeUint16(Ln).writeUint16(n.length-16-8).Bytes(),a=await SE(this.session.server_write_iv,this.session.server_write_key,n,r),o=(A=>{let h="";for(let d of A)h+=String.fromCharCode(d);return h})(a),c=n.slice(0,8),l=new Uint8Array([...this.session.server_write_iv,...c]);this.records.push({nonce:l,data:a,cipherData:n.slice(8)}),this.response+=o,this.responseContentLength==-3&&this.response.length>0&&(this.responseContentLength=this.getResponseContentLength(this.response)),this.session.incServerSeq()}getResponseContentLength(e){let t=e.split(`\r
`),s=t.find(r=>r.toLowerCase().startsWith("content-length"));if(s){let r=s?.split(":")[1].trim();return parseInt(r)}let n=t.find(r=>r.toLowerCase().startsWith("transfer-encoding"));return n&&(n?.split(":")[1].trim()).toLowerCase()==="chunked"?-1:-3}isFinished(){let e=this.response.split(`\r
\r
`),t=this.response.indexOf(`\r
\r
`),s=this.response.substring(t+4);return t==-1?!1:this.responseContentLength==-1?this.isTransferComplete(s):this.responseContentLength>=0?xi(s).length>=this.responseContentLength:!(!e||!e[0]||this.responseContentLength!==0)}isTransferComplete(e){let t=0;for(;t<e.length;){let s=e.indexOf(`\r
`,t),n=e.substring(t,s),r=parseInt(n,16);if(t=s+2,r===0)return!0;t+=r+2}return!1}splitResponse(){let e=this.response.substring(this.response.indexOf(`\r
\r
`)+4)||"";return this.responseContentLength===-1?this.getResponseChunkContent(e).map(t=>t.replace(/^\n+|\n+$/g,"")):[e.replace(/^\n+|\n+$/g,"")]}getResponseChunkContent(e){let t=0,s=[];for(;t<e.length;){let n=e.indexOf(`\r
`,t),r=parseInt(e.substring(t,n),16);if(t=n+2,r===0)return s;let a=e.substring(t,t+r);t+=r+2,s.push(a)}return s}getResponseCode(e){return(e?.split(`\r
`).find(t=>t.toLowerCase().indexOf("http/1.1")>-1)||"").trim().split(" ")[1]||""}},u(Qu,"tE"),Qu);async function Yy(i,e){let{host:t,requestText:s,acceptType:n,serverSide:r=!1}=i,a=new zM({host:t,tls_version:Ln,node:e,serverSide:r});return await a.handshake(),await a.sendAppData(s,n)}u(Yy,"sE");function jy(i,e,t){let{records:s,fullResponse:n,responseSliceList:r,serverKey:a,clientKey:o,clientNonce:c,requestCipherBytes:l}=e,A=Vg(s,n,r),h=cB({verifyMessage:i.verifyMessage,text:i.text,requestCipher:l,clientNonce:c},{recordBoundaries:A,records:s,responseStruct:r.join("")},t);return{serverKey:a,clientKey:o,...h}}u(jy,"genCircuitInfoByJsonResponse");function cB(i,e,t){let{recordBoundaries:s,records:n,responseStruct:r}=e,a=[],o=[],c=s.findIndex(D=>D.end-D.start>D.headerLen),l=n.slice(c).map((D,S)=>{let{start:Q,end:N,headerLen:T}=s[S+c];return D.headerLen=T,D.bodyLen=N-Q-T,D}),A=r,h=he(A).length,d=wa(A),m=[];t=SB(t),t.forEach(D=>{let{key:S,value:Q,operation:N,targetSlice:T,isPublic:j,dataPattern:U}=D,L=Ou(S,d),q=qn(L.keyStart,L.keyEnd,h,l),K=qn(L.start,L.end,h,l),$=qn(L.start-1,L.start,h,l),_=qn(L.end,L.end+1,h,l),{key:O,value:X,prefix:P,suffix:ee}=Um(S,A),oe=null,fe=null,Me=null;if(U){let ge=`${X}`.match(new RegExp(U.regex)),te=0;oe={},fe={},Me={},Object.entries(U).filter(W=>W[0]!=="regex"&&W[0]!=="order"&&W[0]!=="valRegex").sort((W,Ye)=>W[1].regexMatchIndex-Ye[1].regexMatchIndex).forEach(W=>{let Ye=W[0],qe=W[1].regexMatchIndex,At=W[1].prefix,Ae=W[1].suffix,ma=ge[qe],so=X.indexOf(ma,te),me=he(X.substring(0,so)).length,Kn=he(`${ma}`).length+me;if(At){let Pt=me-At.length;oe[Ye]=qn(L.start+Pt,L.start+Pt+At.length,h,l)}if(Ae){let Pt=Kn;fe[Ye]=qn(L.start+Pt,L.start+Pt+Ae.length,h,l)}Me[Ye]=qn(L.start+me,L.start+Kn,h,l),te=so+ma.length,Ae&&(te+=Ae.length)})}m.push({key:S,keyStr:O,value:X,prefix:P,suffix:ee,keyUsedRecords:q,valueUsedRecords:K,prefixUsedRecords:$,suffixUsedRecords:_,targetValue:Q,targetSlice:T,operation:N,isPublic:j,dataPattern:U,patternValueRecordMap:Me,patternPrefixRecordMap:oe,patternSuffixRecordMap:fe,type:"assert"})}),m=m.map(D=>{let{valueUsedRecords:S,keyUsedRecords:Q,prefixUsedRecords:N,suffixUsedRecords:T}=D,{patternValueRecordMap:j,patternPrefixRecordMap:U,patternSuffixRecordMap:L}=D,q=Xn(Q,a),K=Xn(N,q.responseCounter),$=Xn(S,K.responseCounter),_=Xn(T,$.responseCounter);return j&&Object.keys(j).forEach(O=>{j[O]=Xn(j[O],[]).usedRecords}),U&&Object.keys(U).forEach(O=>{U[O]=Xn(U[O],[]).usedRecords}),L&&Object.keys(L).forEach(O=>{L[O]=Xn(L[O],[]).usedRecords}),Q=q.usedRecords,S=$.usedRecords,N=K.usedRecords,T=_.usedRecords,a=_.responseCounter,{...D,valueUsedRecords:S,keyUsedRecords:Q,prefixUsedRecords:N,suffixUsedRecords:T,patternValueRecordMap:j,patternPrefixRecordMap:U,patternSuffixRecordMap:L}});let E=[],y=[];a.forEach((D,S)=>{let{index:Q,counters:N}=D,T=l[Q],{data:j,cipherData:U}=T;E[S]=[],y[S]=[],N.forEach(L=>{let q=(L-1)*16,K=q+16>j.length?j.length:q+16,$=j.slice(q,K);E[S].push($),y[S].push(U.slice(q,K))}),E[S]=E[S].reverse(),y[S]=y[S].reverse()});let f=a.map(D=>{let{index:S,counters:Q}=D,{nonce:N}=l[S];return Q.map(T=>no(N,km(T+1,4))).reverse()});m.forEach(D=>{let{keyUsedRecords:S,valueUsedRecords:Q,prefixUsedRecords:N,suffixUsedRecords:T,patternValueRecordMap:j,patternPrefixRecordMap:U,patternSuffixRecordMap:L,type:q,key:K,keyStr:$,targetValue:_,targetSlice:O,operation:X,value:P,isPublic:ee,prefix:oe,suffix:fe,dataPattern:Me,maxByteCount:ge}=D,te={key:K,keyStr:$,type:q,value:P,prefix:oe,suffix:fe,targetValue:_,targetSlice:O,operation:X,dataPattern:Me,isPublic:ee,maxByteCount:ge},W=S.map(me=>$n(me.recordIndex,me.start,me.valueLen,me.startCounter,a)),Ye=Q.map(me=>$n(me.recordIndex,me.start,me.valueLen,me.startCounter,a)),qe=N.map(me=>$n(me.recordIndex,me.start,me.valueLen,me.startCounter,a)),At=T.map(me=>$n(me.recordIndex,me.start,me.valueLen,me.startCounter,a)),Ae=null,ma=null,so=null;j&&(so={},Object.entries(j).forEach(me=>{let Kn=me[0],Pt=me[1];so[Kn]=Pt.map(gt=>$n(gt.recordIndex,gt.start,gt.valueLen,gt.startCounter,a)).reverse()})),U&&(Ae={},Object.entries(U).forEach(me=>{let Kn=me[0],Pt=me[1];Ae[Kn]=Pt.map(gt=>$n(gt.recordIndex,gt.start,gt.valueLen,gt.startCounter,a)).reverse()})),L&&(ma={},Object.entries(L).forEach(me=>{let Kn=me[0],Pt=me[1];ma[Kn]=Pt.map(gt=>$n(gt.recordIndex,gt.start,gt.valueLen,gt.startCounter,a)).reverse()})),te.valuePositions=Ye.reverse(),te.keyPositions=W.reverse(),te.prefixPositions=qe.reverse(),te.suffixPositions=At.reverse(),te.patternPrefixPositionMap=Ae,te.patternSuffixPositionMap=ma,te.patternValuePositionMap=so,o.push(te)});let p=new Uint8Array(12).fill(0),{verifyMessage:B,text:C,requestCipher:I,clientNonce:b=p}=i,V=B.counters.map(D=>no(b,km(D+1,4))),G=[];return B.counters.forEach(D=>{let S=(D-1)*16,Q=S+16>C.length?C.length:S+16;G.push(I.slice(S,Q))}),{requestCounters:V.reverse(),requestAesBlockMessage:B.inputMessage.reverse(),requestAesCipherBlockMessage:G.reverse(),requestVerifyFields:B.verifyStringPositionList,responseCounters:f.reverse(),responseAesBlockMessage:E.reverse(),responseAesCipherBlockMessage:y.reverse(),responseVerifyFields:o}}u(cB,"genCircuitByJsonFetchInfo");var lB=class lB{padMessage(e,t){let s=It(e).reverse(),n=t?t/8:s.length/8,r=CB(n*8),a=(9+s.length/8)%64,o=a===0?9:64-a+9,c=Array(o*8-1-r.length).fill(0);return s.push(1),s=s.concat(c,r).reverse(),{msgBits:s,padLength:o*8}}addPublicAssertCircuit(e){let t=[];t.push(`2 1 0 0 ${e} XOR`),t.push(`1 1 ${e} ${e+1} INV`);let s=e+2;for(let a=0;a<e;a++)t.push(`2 1 ${a} ${e+1} ${s+a} AND`);let n=e;return`${`${t.length} ${s+e}
1 ${e}
1 ${n}
`}${t.join(`
`)}`}addAndCircuit(e){let t=[],s=[];for(let o=0;o<e;o++)s.push(o);let n=s.length;for(;s.length>1;){let o=s.splice(0,2);t.push(`2 1 ${o[0]} ${o[1]} ${n} AND`),s.splice(1,0,n),n+=1}return`${`${t.length} ${n}
1 ${e}
1 1
`}${t.join(`
`)}`}addXORCircuit(e){let t=[],s=[];for(let o=0;o<e;o++)s.push(o);let n=s.length;for(;s.length>1;){let o=s.splice(0,2);t.push(`2 1 ${o[0]} ${o[1]} ${n} XOR`),s.splice(1,0,n),n+=1}return`${`${t.length} ${n}
1 ${e}
1 1
`}${t.join(`
`)}`}genCircuitText(e){let t=It(e),s=t.length,n=[];for(let a=0;a<t.length;a++)t[a]?n.push(`1 1 1 ${a+3} INV`):n.push(`1 1 2 ${a+3} INV`);return`${`${n.length+2} ${s+3}
1 1
1 ${s}
2 1 0 0 1 XOR
1 1 1 2 INV
`}${n.join(`
`)}`}genCircuitByInputSizeAndCompareFlag(e,t){let s="greater than";switch(t){case">":s="greater than";break;case"<=":s="less than and equal";break;case"<":s="less than";break;case">=":s="greater than and equal";break;case"!=":s="not equal";break;case"contain":s="equal";break;case"in":s="equal";break;default:s="equal"}return this.genCompareCircuit(e,s)}genCompareCircuit(e,t="greater than"){if(!e)return"";if(t==="equal"||t==="not equal")return this.genEqualCircuit(e,t);let s=[],n=e*2;s.push(`2 1 0 0 ${n} XOR`);let r=t==="greater than"||t==="less than and equal";for(let A=0;A<e;A++){let h=`2 1 ${A} ${n} ${n+1} XOR`,d=`2 1 ${A+e} ${n} ${n+2} XOR`,m=`2 1 ${n+1} ${n+2} ${n+3} AND`,E=`2 1 ${r?A:A+e} ${n+3} ${n+4} XOR`;n+=4,s.push(h,d,m,E)}(t==="less than and equal"||t==="greater than and equal")&&(s.push(`1 1 ${n} ${n+1} INV`),n+=1);let a=s.length,o=n+1,c=`1 ${e*2}`;return`${a} ${o}
${c}
1 1
${s.join(`
`)}`}genXORCircuit(e){let t=[],s=[],n=e*2;for(let l=0;l<e;l++)t.push(`2 1 ${l} ${l+e} ${n} XOR`),s.push(n),n+=1;let r=t.length,a=n,o=`1 ${e*2}`,c=`1 ${e}`;return`${r} ${a}
${o}
${c}
${t.join(`
`)}`}genMapCircuit(e){let t=e.map(E=>E.split("|")[0]),s=Math.max(...t.map(E=>he(E).length));t=t.map(E=>E.padStart(s,"0"));let n=e.map(E=>E.split("|")[1]),r=s*8,a=n[0].length*8,o=[];o.push(`1 ${r}`),o.push(`1 ${a}`),o.push(`2 1 0 0 ${r} XOR`),o.push(`1 1 ${r} ${r+1} INV`);let c=r,l=r+1,A=r+2,h=[];for(let E=0;E<t.length;E++){let y=It(he(t[E])),f=It(he(n[E])),p=A+y.length,B=[],C=A+2*y.length,I=[],b=A+3*y.length,V=[],G=A+4*y.length-1,D=[],S=A+4*y.length-1+f.length,Q=[],N=[];for(let U=0;U<y.length;U++)y[U]?o.push(`1 1 ${c} ${U+A} INV`):o.push(`1 1 ${l} ${U+A} INV`),B.push(`2 1 ${U+A} ${U} ${U+p} XOR`),I.push(`1 1 ${U+p} ${U+C} INV`);let T=[];for(let U=0;U<y.length;U++)T.push(C+U);let j=b;for(;T.length>1;){let U=T.splice(0,2);V.push(`2 1 ${U[0]} ${U[1]} ${j} AND`),T.splice(1,0,j),j+=1}for(let U=0;U<f.length;U++){f[U]?D.push(`1 1 ${c} ${U+G} INV`):D.push(`1 1 ${l} ${U+G} INV`);let L=G-1;Q.push(`2 1 ${L} ${U+G} ${U+S} AND`),N.push(U+S)}o.push(...B,...I,...V,...D,...Q),h.push(N),A=S+f.length}for(;h.length>1;){let E=[];for(let f=0;f<a;f++)E.push(A+f);let y=h.splice(0,2);for(let f=0;f<a;f++)o.push(`2 1 ${y[0][f]} ${y[1][f]} ${E[f]} XOR`);h.unshift(E),A+=a}let d=o.length-2,m=A;return{circuit:`${d} ${m}
${o.join(`
`)}`,inputSize:r,outputSize:a,totalGate:d,totalWires:m}}genNumberCheckCircuit(e){let t=[48,49,50,51,52,53,54,55,56,57],s=[],n=e;s.push(`2 1 0 0 ${n} XOR`),s.push(`1 1 ${n} ${n+1} INV`);let r=e,a=e+1,o=e/8;n+=2;let c=[];for(let m=0;m<o;m++){let E=[];for(let y=0;y<t.length;y++){let f=t[y],p=It(new Uint8Array([f])),B=p.length;for(let I=0;I<B;I++)p[I]?s.push(`2 1 ${m*8+I} ${a} ${I+n} XOR`):s.push(`2 1 ${m*8+I} ${r} ${I+n} XOR`);n+=B;let C=[];for(let I=0;I<B;I++)s.push(`1 1 ${n-B+I} ${I+n} INV`),C.push(I+n);for(n+=B;C.length>0;){let I=C.shift(),b=C.shift();s.push(`2 1 ${I} ${b} ${n} AND`),C.length>0&&C.splice(1,0,n),n+=1}E.push(n-1)}for(;E.length>0;){let y=E.shift(),f=E.shift();s.push(`2 1 ${y} ${f} ${n} XOR`),E.length>0&&E.splice(1,0,n),n+=1}c.push(n-1)}for(;c.length>1;){let m=c.shift(),E=c.shift();s.push(`2 1 ${m} ${E} ${n} AND`),c.length>0&&c.splice(1,0,n),n+=1}let l=s.length,A=n,h=`1 ${e}`;return`${l} ${A}
${h}
1 1
${s.join(`
`)}`}genEqualCircuit(e,t){let s=[],n=[],r=e*2;for(let A=0;A<e;A++)s.push(`2 1 ${A} ${A+e} ${r} XOR`),n.push(r),r+=1;for(let A=0;A<e;A++)s.push(`1 1 ${n[A]} ${r} INV`),n.push(r),r+=1;for(n.splice(0,e);n.length>1;){let A=n.splice(0,2);s.push(`2 1 ${A[0]} ${A[1]} ${r} AND`),n.splice(1,0,r),r+=1}t==="not equal"&&(s.push(`1 1 ${r-1} ${r} INV`),r+=1);let a=s.length,o=r,c=`1 ${e*2}`;return`${a} ${o}
${c}
1 1
${s.join(`
`)}`}getAndGateCount(e,t,s){let n=0,r=22573,a=6400,o=8832*s,c=e.filter(A=>A.circuitName==="sha256").length*r,l=e.filter(A=>A.circuitName==="AES").length*a;return Object.values(t).forEach(A=>{let h=A.split("AND").length-1;n+=h}),n+c+l+o}resetValuePositions(e,t,s){let n=he(e),r=he(t),a=n.length*8,o=r.length*8,c=this.findBytesIndex(n,r)*8,l=a-c-o,A=0,h=[];return s.forEach(d=>{let m=d.end-d.start;if(m<=l){l-=m;return}else d.start=d.start+l,l=0;m=d.end-d.start;let E=o-A;A<o&&E>=m?(h.push({start:d.start,end:d.end}),A+=d.end-d.start):A<o&&E<m&&h.push({start:d.start,end:d.start+E})}),h}findBytesIndex(e,t){let s=Array.from(e).join("|"),n=Array.from(t).join("|"),r=s.indexOf(n);return r>-1?s.substring(0,r).split("|").filter(a=>a!=="").length:-1}saveStringToFile(e,t){let s=new Blob([e],{type:"text/plain"}),n=URL.createObjectURL(s),r=document.createElement("a");r.href=n,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}};u(lB,"CasmHelper");var bg=lB;import Ng from"lodash";import ZM from"lodash";var Ly=32,Jy=64,KM=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function uB(i,e,t,s,n){let r,a,o,c,l,A,h,d,m,E,y,f,p;for(;n>=64;){for(r=e[0],a=e[1],o=e[2],c=e[3],l=e[4],A=e[5],h=e[6],d=e[7],E=0;E<16;E++)y=s+E*4,i[E]=(t[y]&255)<<24|(t[y+1]&255)<<16|(t[y+2]&255)<<8|t[y+3]&255;for(E=16;E<64;E++)m=i[E-2],f=(m>>>17|m<<15)^(m>>>19|m<<13)^m>>>10,m=i[E-15],p=(m>>>7|m<<25)^(m>>>18|m<<14)^m>>>3,i[E]=(f+i[E-7]|0)+(p+i[E-16]|0);for(E=0;E<64;E++)f=(((l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&A^~l&h)|0)+(d+(KM[E]+i[E]|0)|0)|0,p=((r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10))+(r&a^r&o^a&o)|0,d=h,h=A,A=l,l=c+f|0,c=o,o=a,a=r,r=f+p|0;e[0]+=r,e[1]+=a,e[2]+=o,e[3]+=c,e[4]+=l,e[5]+=A,e[6]+=h,e[7]+=d,s+=64,n-=64}return s}u(uB,"hashBlocks");var AB=class AB{constructor(e){Xe(this,"digestLength",Ly);Xe(this,"blockSize",Jy);Xe(this,"state",new Int32Array(8));Xe(this,"temp",new Int32Array(64));Xe(this,"buffer",new Uint8Array(128));Xe(this,"bufferLength",0);Xe(this,"bytesHashed",0);Xe(this,"finished",!1);this.reset(),e&&this._restoreState(e,Jy)}reset(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this}clean(){for(let e=0;e<this.buffer.length;e++)this.buffer[e]=0;for(let e=0;e<this.temp.length;e++)this.temp[e]=0;this.reset()}update(e,t=e.length){if(this.finished)throw new Error("SHA256: can't update because hash was finished.");let s=0;if(this.bytesHashed+=t,this.bufferLength>0){for(;this.bufferLength<64&&t>0;)this.buffer[this.bufferLength++]=e[s++],t--;this.bufferLength===64&&(uB(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(t>=64&&(s=uB(this.temp,this.state,e,s,t),t%=64);t>0;)this.buffer[this.bufferLength++]=e[s++],t--;return this}getState(){return this.state}finish(e,t){if(!this.finished){let s=t||this.bytesHashed,n=this.bufferLength,r=s/536870912|0,a=s<<3,o=s%64<56?64:128;this.buffer[n]=128;for(let c=n+1;c<o-8;c++)this.buffer[c]=0;this.buffer[o-8]=r>>>24&255,this.buffer[o-7]=r>>>16&255,this.buffer[o-6]=r>>>8&255,this.buffer[o-5]=r>>>0&255,this.buffer[o-4]=a>>>24&255,this.buffer[o-3]=a>>>16&255,this.buffer[o-2]=a>>>8&255,this.buffer[o-1]=a>>>0&255,uB(this.temp,this.state,this.buffer,0,o),this.finished=!0}for(let s=0;s<8;s++)e[s*4+0]=this.state[s]>>>24&255,e[s*4+1]=this.state[s]>>>16&255,e[s*4+2]=this.state[s]>>>8&255,e[s*4+3]=this.state[s]>>>0&255;return this}digest(e){let t=new Uint8Array(this.digestLength);return this.finish(t,e),t}_saveState(e){for(let t=0;t<this.state.length;t++)e[t]=this.state[t]}_restoreState(e,t){for(let s=0;s<this.state.length;s++)this.state[s]=e[s];this.bytesHashed=t,this.finished=!1,this.bufferLength=0}};u(AB,"Hash");var hB=AB;function qM(i,e,t){let s=new hB(e).update(i),n=ZM.cloneDeep(s.getState()),r=s.digest(t);return s.clean(),[r,n]}u(qM,"hash");var Oy=qM;var s1=new Uint8Array(Ly);var gB=class gB extends bg{constructor(){super(...arguments);Xe(this,"circuit",{});Xe(this,"circuitLineArray",[]);Xe(this,"compareCircuitIds",[])}async init(){this.circuit.equal128=this.genCircuitByInputSizeAndCompareFlag(128,"="),this.circuit.xor128=this.genXORCircuit(128)}genProofCircuit(t){this.genAESCircuits(t),this.checkPublicBoundaries(t),this.checkNullifierBoundaries(t),this.checkConstantBoundaries(t,"public");let s=this.genNullifierCircuit(t);this.genAndCircuit(),this.genPublicAssertCircuit(t);let n=[];return this.circuitLineArray.forEach(r=>{n.push(r.id,r.circuitName),r.dependency.forEach(a=>{n.push(`([${a.id}] [${a.dependencyInputWire}|>${a.offset}])`)}),n.push(`\r
`)}),{nullifierHex:s,circuitList:this.circuitLineArray,baseCircuits:this.circuit}}genAESCircuits(t){let s=this.checkRequestInfo(t,0,0);this.checkResponseInfo(t,s,0)}checkRequestInfo(t,s,n){let{requestCounters:r,requestAesBlockMessage:a,requestAesCipherBlockMessage:o,requestVerifyFields:c}=t,l=s,h=r.length*128,d=0;a.forEach(f=>{d+=f.length*8});let m=[],E=0,y=128;for(let f=0;f<r.length;f++){E=this.circuitLineArray.length,m.push(E),m.push("AES"),m.push({id:-1,currentStartWire:0,dependencyInputWire:l,offset:128}),m.push({id:-1,currentStartWire:128,dependencyInputWire:l+(f+1)*128,offset:128}),this.setCircuitLine(m);let p=this.circuitLineArray.length,B=a[f].length*8,C=`xor_${B}`;this.circuit[C]=this.genXORCircuit(B),m.push(p),m.push(C),m.push({id:E,currentStartWire:0,dependencyInputWire:128-B,offset:B}),m.push({id:-1,currentStartWire:B,dependencyInputWire:l+y+h,offset:B}),y+=B,this.setCircuitLine(m);let I=o[f],b=`request_cipher_${n}_${f}`,V=this.addConstCircuit(I,b),G=this.circuitLineArray.length;if(m.push(G),B===128)m.push("equal128");else{let D=`equal_${B}`;this.circuit[D]=this.genCircuitByInputSizeAndCompareFlag(B,"="),m.push(D)}m.push({id:p,currentStartWire:0,dependencyInputWire:0,offset:B},{id:V,currentStartWire:B,dependencyInputWire:0,offset:B}),this.setCircuitLine(m),this.compareCircuitIds.push(G)}if(c){let f=l+128+h;c.forEach((p,B)=>{let{sliceList:C,isNullifier:I}=p;if(I)return;C?.filter(V=>!V.isNullifier)?.forEach((V,G)=>{let D=[],{value:S,end:Q,referredField:N,wires:T}=V,j=he(S),U=j.length*8,L=d-Q*8;D.push({id:-1,currentStartWire:0,dependencyInputWire:f+L,offset:U});let q=U;if(N)T?.forEach(K=>{let $=K.end-K.start;D.push({id:-1,currentStartWire:q,dependencyInputWire:K.start,offset:$}),q+=$});else{let K=`request_value_${n}_${B}_${G}`,$=this.addConstCircuit(j,K);D.push({id:$,currentStartWire:q,dependencyInputWire:0,offset:U})}this.compareConstValue(U,D)})})}return s+128+h+d}checkResponseInfo(t,s,n){let{responseCounters:r,responseAesBlockMessage:a,responseAesCipherBlockMessage:o,responseVerifyFields:c}=t,l=s,A=0,h=[];r.forEach(y=>{A+=y.length*128});let d=0;a.forEach(y=>{y.forEach(f=>{d+=f.length*8})});let m=0,E=0;return r.forEach((y,f)=>{f>0&&(m+=r[f-1].length*128,a[f-1].forEach(C=>{E+=C.length*8}));let p=0,B=128;y.forEach((C,I)=>{p=this.circuitLineArray.length,h.push(p),h.push("AES"),h.push({id:-1,currentStartWire:0,dependencyInputWire:l,offset:128}),h.push({id:-1,currentStartWire:128,dependencyInputWire:l+m+(I+1)*128,offset:128}),this.setCircuitLine(h);let b=this.circuitLineArray.length,V=a[f][I].length*8,G=`xor_${V}`;this.circuit[G]=this.genXORCircuit(V),h.push(b),h.push(G),h.push({id:p,currentStartWire:0,dependencyInputWire:128-V,offset:V}),h.push({id:-1,currentStartWire:V,dependencyInputWire:l+B+A+E,offset:V}),B+=V,this.setCircuitLine(h);let D=o[f][I],S=`response_cipher_${n}_${f}_${I}`,Q=this.addConstCircuit(D,S),N=this.circuitLineArray.length;if(h.push(N),V===128)h.push("equal128");else{let T=`equal_${V}`;this.circuit[T]=this.genCircuitByInputSizeAndCompareFlag(V,"="),h.push(T)}h.push({id:b,currentStartWire:0,dependencyInputWire:0,offset:V},{id:Q,currentStartWire:V,dependencyInputWire:0,offset:V}),this.setCircuitLine(h),this.compareCircuitIds.push(N)})}),c&&c.filter(y=>y.type==="assert"&&!y.isPublic).forEach((y,f)=>{let{targetValue:p,targetSlice:B,operation:C}=y,{value:I,valuePositions:b}=y;if(this.checkBoundaryValue(y,n,f),C==="contain"&&(b=this.resetValuePositions(I,p,b),I=p),C==="in"){let V=[];p.split("|").forEach((G,D)=>{let S=this.checkAssertValue(y,I,G,[B[D]],C,b,n,f+100*(D+1),!0);V.push(S)}),this.aggregationEqualCircuit(V,`${n}_${f}`)}else this.checkAssertValue(y,I,p,B,C,b,n,f)}),s+128+A+d}checkAssertValue(t,s,n,r,a,o,c,l,A=!1){t.dataPattern&&(s=Sg(s,t.dataPattern),t.dataPattern.order.split("|").reverse().forEach(m=>{t.dataPattern[m].map&&(t.dataPattern[m].mapCircuit=this.addMapCircuit(c,l,t.dataPattern[m].map||[],t.patternValuePositionMap[m]))}));let h=["!=",">","<",">=","<="];if(MB(n)&&h.includes(a)){let{valuePositions:d,dataPattern:m,patternValuePositionMap:E}=t;if(m){let y=m.order.split("|").reverse(),f=[];y.forEach(p=>{m[p].map?f.push({circuitId:m[p].mapCircuit?.circuitId,start:0,end:m[p].mapCircuit?.outputSize||0}):f.push(...E[p])}),this.addNumberCheckCircuit(s,c,l,f)}else this.addNumberCheckCircuit(s,c,l,d)}return ro(n)||ro(s)?this.addDotCircuit(t,c,l,r,A):this.compareValue(s,n,r,a,o,c,l,A,"value",t.dataPattern,t.patternValuePositionMap)}compareValue(t,s,n,r,a,o,c,l=!1,A="value",h,d){let m=[],E=0,y=he(t),f=he(s),p=y.length-f.length,B=y.length>f.length?y.length*8:f.length*8;if(h){let b=this.addDataPatternCircuit(h,d,E);E=b.valueStartWire,m.push(...b.circuitLines)}else a.forEach(b=>{let{start:V,end:G}=b;m.push({id:-1,currentStartWire:E,dependencyInputWire:V,offset:G-V}),E+=G-V});let C=this.genTargetValueCircuitLine(n,B,o,c,A),I=-2;return p!=0&&(I=this.addZeroCircuit(Math.abs(p),o,c,"pad_value")),p<0&&m.push({id:I,currentStartWire:E,dependencyInputWire:0,offset:Math.abs(p)*8}),m.push(...C),p>0&&m.push({id:I,currentStartWire:B+s.length*8,dependencyInputWire:0,offset:Math.abs(p)*8}),this.compareConstValue(B,m,r,l)}addDataPatternCircuit(t,s,n){let r=[];return t.order.split("|").reverse().forEach(o=>{t[o].map?(r.push({id:t[o].mapCircuit?.circuitId,currentStartWire:n,dependencyInputWire:0,offset:t[o].mapCircuit?.outputSize}),n+=t[o].mapCircuit?.outputSize||0):s[o].forEach(c=>{let{start:l,end:A}=c;r.push({id:-1,currentStartWire:n,dependencyInputWire:l,offset:A-l}),n+=A-l})}),{circuitLines:r,valueStartWire:n}}compareConstValue(t,s,n="=",r=!1){let a=[],o=this.circuitLineArray.length,c=`compare_${n}_${t}`;return this.circuit[c]=this.genCircuitByInputSizeAndCompareFlag(t,n),a.push(o),a.push(c),a.push(...s),this.setCircuitLine(a),r||this.compareCircuitIds.push(o),o}addNumberCheckCircuit(t,s,n,r){let a=[],o=he(t).length,c=-1,l=-1;ro(t)&&(c=t.indexOf("."),o--);let A=`number_check__${s}_${n}`,h=this.circuitLineArray.length;this.circuit[A]=this.genNumberCheckCircuit(o*8),a.push(h),a.push(A);let d=0;if(c===-1)r.forEach(m=>{let{start:E,end:y,circuitId:f=-1}=m;a.push({id:f,currentStartWire:d,dependencyInputWire:E,offset:y-E}),d+=y-E});else{let m=(o-c)*8,E=0;r.forEach(y=>{let{start:f,end:p,circuitId:B=-1}=y,C=p-f;if(E+C<m||E>m+8)a.push({id:B,currentStartWire:d,dependencyInputWire:f,offset:p-f}),d+=p-f;else{let I=m-E;if(a.push({id:B,currentStartWire:d,dependencyInputWire:f,offset:I}),l=f+I,p>f+I+8){let b=f+I+8;a.push({id:B,currentStartWire:d+I,dependencyInputWire:b,offset:p-b})}d+=p-f-8}E+=p-f})}if(this.setCircuitLine(a),this.compareCircuitIds.push(h),c>-1){let m=this.dotCircuit(s,n,"dot"),E=[{id:-1,currentStartWire:0,dependencyInputWire:l,offset:8},{id:m,currentStartWire:8,dependencyInputWire:0,offset:8}];this.compareConstValue(8,E)}}addZeroCircuit(t,s,n,r){let a=[],o=new Uint8Array(t).fill(48),c=`pad_${r}_${s}_${n}`,l=this.circuitLineArray.length;return this.circuit[c]=this.genCircuitText(o),a.push(l),a.push(c),a.push({id:-1,currentStartWire:0,dependencyInputWire:0,offset:1}),this.setCircuitLine(a),l}dotCircuit(t,s,n){let r=[],a=new Uint8Array(1).fill(46),o=`dot_${t}_${s}`,c=this.circuitLineArray.length;return this.circuit[o]=this.genCircuitText(a),r.push(c),r.push(o),r.push({id:-1,currentStartWire:0,dependencyInputWire:0,offset:1}),this.setCircuitLine(r),c}addMapCircuit(t,s,n,r){let a=[],o=0;r.forEach(f=>{let{start:p,end:B}=f;o+=B-p}),o=o/8;let c=n.map(f=>f.split("|")[0]),l=Math.max(...c.map(f=>he(f).length)),A=-1,h=l-o;if(h){let f="".padStart(h,"0");A=this.addConstCircuit(he(f),`pad_value_map_${t}_${s}`)}let d=`value_map_${t}_${s}`,m=this.circuitLineArray.length,E=this.genMapCircuit(n);this.circuit[d]=E.circuit,a.push(m),a.push(d);let y=0;return r.forEach(f=>{let{start:p,end:B}=f;a.push({id:-1,currentStartWire:y,dependencyInputWire:p,offset:B-p}),y+=B-p}),A>-1&&a.push({id:A,currentStartWire:y,dependencyInputWire:0,offset:h*8}),this.setCircuitLine(a),{circuitId:m,inputSize:y,outputSize:E.outputSize}}addConstCircuit(t,s){let n=[],r=this.circuitLineArray.length;return this.circuit[s]=this.genCircuitText(t),n.push(r),n.push(s),n.push({id:-1,currentStartWire:0,dependencyInputWire:0,offset:1}),this.setCircuitLine(n),r}genTargetValueCircuitLine(t,s,n,r,a="value"){let o=[];return t.forEach((c,l)=>{let{value:A,referredField:h,wires:d}=c,m=he(A),E=m.length*8,y=s;if(h)d?.forEach(f=>{let p=f.end-f.start;o.push({id:-1,currentStartWire:y,dependencyInputWire:f.start,offset:p}),y+=p});else{let f=`response_target_value_${n}_${r}_${l}_${a}`,p=this.addConstCircuit(m,f);o.push({id:p,currentStartWire:y,dependencyInputWire:0,offset:E}),y+=E}}),o}addDotCircuit(t,s,n,r,a=!1){let{targetValue:o,operation:c,valuePositions:l}=t,{value:A}=t;t.dataPattern&&(A=Sg(A,t.dataPattern));let h=he(o),d=h.length,m=A.toString().split("."),E=o.toString().split("."),y=-2,f=-2,p=-2,B=!1,C=!1;m.length===1&&(m.push(""),B=!0),E.length===1&&(E.push(""),C=!0,d+=1);let I=m[0].length-E[0].length,b=m[1].length-E[1].length;I>0&&(d+=I),b>0&&(d+=b),d*=8,b!=0&&(f=this.addZeroCircuit(Math.abs(b),s,n,"decimal")),I!=0&&(y=this.addZeroCircuit(Math.abs(I),s,n,"digits")),(B||C)&&(p=this.dotCircuit(s,n,"dot"));let V=[],G=[],D=0,S=d;b>0?(G.push({id:f,currentStartWire:S,dependencyInputWire:0,offset:b*8}),S+=b*8):b<0&&(V.push({id:f,currentStartWire:D,dependencyInputWire:0,offset:Math.abs(b)*8}),D+=Math.abs(b)*8),C?(G.push({id:p,currentStartWire:S,dependencyInputWire:0,offset:8}),S+=8):B&&(V.push({id:p,currentStartWire:D,dependencyInputWire:0,offset:8}),D+=8);let Q=this.genTargetValueCircuitLine(r,S,s,n);if(t.dataPattern){let N=this.addDataPatternCircuit(t.dataPattern,t.patternValuePositionMap,D);D=N.valueStartWire,V.push(...N.circuitLines)}else l.forEach(N=>{let{start:T,end:j}=N;V.push({id:-1,currentStartWire:D,dependencyInputWire:T,offset:j-T}),D+=j-T});G.push(...Q),S+=h.length*8,I>0?G.push({id:y,currentStartWire:S,dependencyInputWire:0,offset:I*8}):I<0&&V.push({id:y,currentStartWire:D,dependencyInputWire:0,offset:Math.abs(I)*8}),this.compareConstValue(d,[...V,...G],c,a)}aggregationEqualCircuit(t,s){let n=[],r=`equal_circuit_aggregation_${s}`,a=this.circuitLineArray.length;this.circuit[r]=this.addXORCircuit(t.length),n.push(a),n.push(r),t.forEach((o,c)=>{n.push({id:o,currentStartWire:c,dependencyInputWire:0,offset:1})}),this.setCircuitLine(n),this.compareCircuitIds.push(a)}genAndCircuit(){let t=[];this.circuit.and_circuit=this.addAndCircuit(this.compareCircuitIds.length),t.push(this.circuitLineArray.length),t.push("and_circuit"),this.compareCircuitIds.forEach((s,n)=>{t.push({id:s,currentStartWire:n,dependencyInputWire:0,offset:1})}),this.setCircuitLine(t,!0)}checkPublicBoundaries(t){let s=t.responseVerifyFields.filter(n=>n.isPublic);for(let n=0;n<s.length;n++){let r=s[n];this.checkBoundaryValue(r,1e3,n)}}checkConstantBoundaries(t,s){let n=t.responseVerifyFields.filter(r=>r.type===s);for(let r=0;r<n.length;r++){let a=n[r];this.checkBoundaryValue(a,1e3,r)}}genPrivateDependedCircuit(t,s,n){let r=0;t.forEach(l=>{let A=l.responseVerifyFields.filter(h=>h.type==="private");for(let h=0;h<A.length;h++){let d=A[h];r+=Ng.toString(d.value).length}});let a=s*128-r*8,o=this.addZeroCircuit(Math.abs(a/8),0,0,`private_pad_value_${a}`),c=[];for(let l=0;l<s;l++){let A=this.circuitLineArray.length,h=[];h.push(A),h.push("AES256"),h.push({id:-1,currentStartWire:0,dependencyInputWire:n,offset:256}),h.push({id:-1,currentStartWire:256,dependencyInputWire:n+256+l*128,offset:128}),this.setCircuitLine(h),c.push(A)}return{padCircuitInfo:{padCircuitId:o,padCircuitLength:a},aes256Circuits:c}}genPrivateAESCircuit(t,s,n,r){let a=r*128;this.circuit.aes256XOR=this.genXORCircuit(a);let o=[],c=0;t.forEach(d=>{let m=d.responseVerifyFields.filter(E=>E.type==="private");for(let E=0;E<m.length;E++){let y=m[E],{value:f,valuePositions:p,maxByteCount:B=0}=y,C=Ng.toString(f).length,I=0;p.forEach(V=>{let{start:G,end:D}=V;o.push({id:-1,currentStartWire:I,dependencyInputWire:G,offset:D-G}),I+=D-G});let b=(B-C)*8;b>0&&(o.push({id:s.padCircuitId,currentStartWire:I,dependencyInputWire:c,offset:b}),c+=b)}}),c<s.padCircuitLength&&o.push({id:s.padCircuitId,currentStartWire:c,dependencyInputWire:c,offset:s.padCircuitLength-c});let l=[],A=this.circuitLineArray.length;l.push(A),l.push("aes256XOR");let h=0;for(n.forEach((d,m)=>{l.push({id:d,currentStartWire:h,dependencyInputWire:0,offset:128}),h=(m+1)*128});o.length>0;){let d=o.shift();l.push({id:d.id,currentStartWire:h,dependencyInputWire:d.dependencyInputWire,offset:d.offset}),h+=d.offset}this.setCircuitLine(l,!0)}genPublicAssertCircuit(t){let s=t.responseVerifyFields.filter(n=>n.isPublic);for(let n=0;n<s.length;n++){let r=[],a=s[n],{value:o,valuePositions:c}=a,l=Ng.toString(o).length*8,A=`public_field_0_${n}`;this.circuit[A]=this.addPublicAssertCircuit(l),r.push(this.circuitLineArray.length),r.push(A);let h=0;c.forEach(d=>{let{start:m,end:E}=d;r.push({id:-1,currentStartWire:h,dependencyInputWire:m,offset:E-m}),h+=E-m}),this.setCircuitLine(r,!0)}}checkNullifierBoundaries(t){t.responseVerifyFields.forEach(s=>{let{type:n}=s;n=="nullifier"&&this.checkBoundaryValue(s,1e3,1e3)})}genNullifierCircuit(t){let s="";t.requestVerifyFields.forEach(o=>{let{sliceList:c=[]}=o;c.forEach(l=>{let{value:A,isNullifier:h,start:d,end:m}=l;h&&(this.genSha256Circuit(A,[{start:d*8,end:m*8}]),s=A)})}),t.responseVerifyFields.forEach(o=>{let{type:c,value:l,valuePositions:A}=o;c=="nullifier"&&(this.genSha256Circuit(l,A),s=l)});let n=he(Ng.toString(s)),[r]=Oy(n);return`0x${ju(r)}`}genSha256Circuit(t,s){let{msgBits:n,padLength:r}=this.padMessage(he(Ng.toString(t))),a=n.slice(0,r),o=this.addConstCircuit(Ju(a),"sha256_pad_circuit"),c=new Uint8Array([106,9,230,103,187,103,174,133,60,110,243,114,165,79,245,58,81,14,82,127,155,5,104,140,31,131,217,171,91,224,205,25]),l=this.addConstCircuit(c,"sha256_init_state"),A=n.length/512,h=[];h.push({id:o,currentStartWire:0,dependencyInputWire:0,offset:a.length});let d=a.length;for(s.forEach(m=>{let{start:E,end:y}=m;h.push({id:-1,currentStartWire:d,dependencyInputWire:E,offset:y-E}),d+=y-E});A>0;){let m=[],E=this.circuitLineArray.length;m.push(E),m.push("sha256");let y=0,f=[];for(;y<512;){let p=h.pop();if(y+=p.offset,y<=512)p.currentStartWire=512-y,f.unshift(p);else{let B=y-512;h.push({...p,offset:B}),f.unshift({...p,currentStartWire:0,dependencyInputWire:p.dependencyInputWire+B,offset:p.offset-B})}}m.push(...f),m.push({id:l,currentStartWire:512,dependencyInputWire:0,offset:256}),l=E,this.setCircuitLine(m,A===1),A--}}checkBoundaryValue(t,s=0,n=0){let{key:r,keyStr:a,prefix:o,suffix:c,keyPositions:l,prefixPositions:A,suffixPositions:h,dataPattern:d,patternPrefixPositionMap:m,patternSuffixPositionMap:E}=t;if(l&&l.length>0){let y=`"${r.split("|").pop()}"`;this.compareValue(a,y,[{value:y,start:0,end:y.length}],"=",l,s,n,!1,"key")}this.compareValue(o,o,[{value:o,start:0,end:o.length}],"=",A,s,n,!1,"prefix"),this.compareValue(c,c,[{value:c,start:0,end:c.length}],"=",h,s,n,!1,"suffix"),m&&d&&Object.keys(m).forEach((y,f)=>{let p=d[y].prefix,B=m[y];this.compareValue(p,p,[{value:p,start:0,end:p.length}],"=",B,s,f,!1,`pattern_prefix_${f}`)}),E&&d&&Object.keys(E).forEach(y=>{let f=d[y].suffix,p=E[y];this.compareValue(f,f,[{value:f,start:0,end:f.length}],"=",p,s,n,!1,`pattern_suffix_${n}`)})}setCircuitLine(t,s=!1){this.circuitLineArray.push({id:t.splice(0,1)[0],out:s,circuitName:t.splice(0,1)[0],dependency:t.splice(0)})}};u(gB,"CasmCircuit");var vg=gB;async function Qm(i){let e=new vg;await e.init();let t=[],{clientKey:s,requestCounters:n,requestAesBlockMessage:r,serverKey:a,responseCounters:o,responseAesBlockMessage:c,responseVerifyFields:l}=i;t.push(...It(s)),n.forEach(f=>{t.push(...It(f))}),r.forEach(f=>{t.push(...It(f))}),t.push(...It(a)),o.forEach(f=>{f.forEach(p=>{t.push(...It(p))})});let A=t.length,h=0;c.forEach(f=>{f.forEach(p=>{h+=p.length*8,t.push(...It(p))})}),l.forEach(f=>{f.keyPositions&&f.keyPositions.forEach(p=>{let{start:B,end:C}=p;p.start=A+h-C*8,p.end=p.start+(C-B)*8}),f.valuePositions.forEach(p=>{let{start:B,end:C}=p;p.start=A+h-C*8,p.end=p.start+(C-B)*8}),f.prefixPositions.forEach(p=>{let{start:B,end:C}=p;p.start=A+h-C*8,p.end=p.start+(C-B)*8}),f.suffixPositions.forEach(p=>{let{start:B,end:C}=p;p.start=A+h-C*8,p.end=p.start+(C-B)*8}),f.patternValuePositionMap&&Object.keys(f.patternValuePositionMap).forEach(p=>{f.patternValuePositionMap&&f.patternValuePositionMap[p].forEach(B=>{let{start:C,end:I}=B;B.start=A+h-I*8,B.end=B.start+(I-C)*8})}),f.patternPrefixPositionMap&&Object.keys(f.patternPrefixPositionMap).forEach(p=>{f.patternPrefixPositionMap&&f.patternPrefixPositionMap[p].forEach(B=>{let{start:C,end:I}=B;B.start=A+h-I*8,B.end=B.start+(I-C)*8})}),f.patternSuffixPositionMap&&Object.keys(f.patternSuffixPositionMap).forEach(p=>{f.patternSuffixPositionMap&&f.patternSuffixPositionMap[p].forEach(B=>{let{start:C,end:I}=B;B.start=A+h-I*8,B.end=B.start+(I-C)*8})})});let d=t.length,{circuitList:m,baseCircuits:E,nullifierHex:y}=e.genProofCircuit(i);return{inputBits:t,circuitList:m,baseCircuits:E,nullifierHex:y}}u(Qm,"genCircuit");import{voleithGenProof as sb,voleithVerifyProof as nb}from"@zkpass/wasm-lib-worker";import*as Yu from"borsh";var XM={struct:{id:"i64",k_start:"u64",v_start:"u64",size:"u64"}},$M={struct:{id:"u64",name:"string",out:"bool",deps:{array:{type:XM}}}},_M={struct:{name:"string",data:"string"}},dB={struct:{circuits:{array:{type:_M}},dags:{array:{type:$M}}}},Wy={struct:{seed:"u128",inputs:{array:{type:"bool"}},waterfall:dB}},eb={struct:{w:"bool",m:"u128"}};var mB={struct:{k:"u64",fiat_shamir_r:"u128",choose_keys:{array:{type:{array:{type:"u128"}}}},choose_commits:{array:{type:{array:{type:"u128",len:2}}}},hash:{array:{type:"u128",len:2}},corrections:{array:{type:{array:{type:"u128"}}}},hash_u:{array:{type:"u128"}},hash_v:{array:{type:"u128"}},d:{array:{type:{array:{type:"bool"}}}},u:{array:{type:"u128"}},v:{array:{type:"u128"}},outputs:{map:{key:"u64",value:{array:{type:{array:{type:eb}}}}}}}};async function Py(i,e,t){let s=await rb(i,e,t),{proof:n,runTime:r}=await ib(s),{outputs:a=[]}=Yu.deserialize(mB,n),o=Array.from(a.values()),c=o[0][0].map(d=>d.w).map(d=>d?1:0),l=o[1][0]?.map(d=>d.w).map(d=>d?1:0),A=Ju(l)||new Uint8Array([49]),h=ju(A);return{proof:n,dataHex:h,runTime:r}}u(Py,"generateProofWithCircuitInfo");async function Vm(i,e,t){let s=await ab(i,e),n=await ob(s,t);if(n.verify_result){let{outputs:r=[]}=Yu.deserialize(mB,t),a=Array.from(r.values()),o=a[0][0].map(h=>h.w).map(h=>h?1:0),c=a[1][0]?.map(h=>h.w).map(h=>h?1:0),l=Ju(c)||new Uint8Array([49]),A=ju(l);n.data=`0x${A}`}return n}u(Vm,"verifyProofWithCircuitInfo");var rb=u(async(i,e,t)=>{let s=Object.entries(e).map(o=>({name:o[0],data:o[1]})),n=i.map(o=>{let c=o.dependency.map(l=>({id:l.id,k_start:l.currentStartWire,v_start:l.dependencyInputWire,size:l.offset}));return{id:o.id,name:o.circuitName,deps:c,out:o.out}});return Yu.serialize(Wy,{seed:0n,waterfall:{circuits:s,dags:n},inputs:t.map(o=>!!o)})},"genProofInputs"),ab=u(async(i,e)=>{let t=Object.entries(e).map(r=>({name:r[0],data:r[1]})),s=i.map(r=>{let a=r.dependency.map(o=>({id:o.id,k_start:o.currentStartWire,v_start:o.dependencyInputWire,size:o.offset}));return{id:r.id,name:r.circuitName,deps:a,out:r.out}});return Yu.serialize(dB,{circuits:t,dags:s})},"genVerifyInputs"),ib=u(async i=>{let e=performance.now(),t=await sb(i),n=performance.now()-e;return{proof:t,runTime:`${n}ms`}},"genProof"),ob=u(async(i,e)=>{let t=performance.now(),s=await nb(i,e),r=performance.now()-t;return{verify_result:s,runTime:`${r}ms`}},"verifyProof");var fB="https://task.zkpass.org",wB="https://proof.zkpass.org",Dg="https://proxy.zkpass.org",Sm="https://zk-proofs.zkpass.org";var zy="https://vproof.zkpass.org/proof",Zy="0x2C1711F1c0F4F65600f0AB521BD4959A97D2d216",Ky="0xC339C86B1033009320a341d063Fa6Fc607a71209";import cb from"pako";import{ethers as He}from"ethers";import lb from"json-sorted-stringify";async function qy(i,e,t){let s=await fetch(`${fB}/proof/new`,{method:"POST",headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"},body:JSON.stringify({app_id:i,host:e,ephemeral_address:t}),cache:"no-cache"});if(!s.ok)throw new Error(`Error fetching task info: ${s.statusText}`);return s.json()}u(qy,"requestTaskInfo");async function Xy(i){let e=await fetch(`${fB}/proof/submit`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task_id:i}),cache:"no-cache"});if(!e.ok)throw new Error(`Error updating proof status: ${e.statusText}`);return e.json()}u(Xy,"updateProofStatus");async function $y(i,e,t,s,n){let r=cb.deflate(t);if(!i||!i.task_id||!i.schema_id||!i.recipient_address||!i.signature)throw new Error("Invalid task information provided");let a=`${i.task_id}:${i.schema_id}:${i.recipient_address}:${n.address}:${i.signature}`,o=He.keccak256(He.toUtf8Bytes(i.task_id)),c=Math.floor(Date.now()/1e3),l=He.keccak256(He.toUtf8Bytes(lb({APIs:e,dataHash:s}))),A=["bytes32","uint256","bytes32"],h=[o,c,l],m=new He.AbiCoder().encode(A,h),E=await n.signMessage(m),y=await n.signMessage(He.keccak256(r)),[f,p,B]=await Promise.all([await fetch(`${wB}/public`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Basic ${btoa(`${a}`)}`},body:JSON.stringify({APIs:e,dataHash:s,timestamp:c,publicSignature:E,zkpSignature:y})}),await fetch(`${wB}/zkp`,{method:"POST",headers:{"Content-Type":"text/plain",Authorization:`Basic ${btoa(`${a}`)}`},body:r}),await fetch(`${Dg}/tls/3p/v1/proof/upload`,{method:"POST",headers:{"Content-Type":"text/plain",tid:i.task_id},body:new Uint8Array(0).buffer})]);if(!f.ok)throw new Error(`Error uploading public info: ${f.statusText}`);if(!p.ok)throw new Error(`Error uploading proof: ${p.statusText}`);if(!B.ok)throw new Error(`Failed to sync status to the proxy: ${B.statusText}`)}u($y,"uploadProof");function _y(i,e,t){let s=He.keccak256(He.toUtf8Bytes(i)),n=["bytes32","address"],r=[s,e],a=new He.AbiCoder().encode(n,r),o=He.keccak256(a);return He.recoverAddress(He.getBytes(o),t).toLowerCase()===Ky.toLowerCase()}u(_y,"verifyTaskSig");function BB(i){let{task:e,timestamp:t,APIs:s,signature:n}=i,r="0x";for(let E=0;E<s.length;E++){let{handshake:y,request:f,response:p}=s[E],{clientHSData1:B,serverHSData1:C,clientHSData2:I,serverHSData2:b}=y;r+=`${B}${C}${I}${b}`;let V=`${f.reduce((D,S)=>D+S,"")}`,G=`${p.reduce((D,S)=>D+S,"")}`;r+=`${V}${G}`}let a=He.keccak256(r),o=He.keccak256(He.toUtf8Bytes(e)),c=["bytes32","uint256","bytes32"],l=[o,t,a],h=new He.AbiCoder().encode(c,l),d=He.keccak256(h);return He.recoverAddress(He.getBytes(d),"0x"+n).toLowerCase()===Zy.toLowerCase()}u(BB,"verifyProxySig");import{ethers as tI,Wallet as Ab}from"ethers";import eI from"pako";import{ethers as Oe}from"ethers";import hb from"json-sorted-stringify";var pB=class pB{static async verifyById(e){let t=bB(e),s=Date.now();if(t+6048e5<s)throw new Error("Task ID has expired.");let[n,r,a]=await Promise.all([fetch(`${Sm}/${e}/tls`),fetch(`${Sm}/${e}/zkp`),fetch(`${Sm}/${e}/public`)]);if(!n.ok)throw new Error(`Failed to fetch cipher data for task ID ${e}: ${n.statusText}`);let o=await n.json();if(!r.ok)throw new Error(`Failed to fetch proof data for task ID ${e}: ${r.statusText}`);if(!a.ok)throw new Error(`Failed to fetch public data for task ID ${e}: ${a.statusText}`);let c=await r.arrayBuffer(),l=eI.inflate(new Uint8Array(c)),{APIs:A,dataHash:h}=await a.json(),{request:d,response:m,asserts:E}=A[0],{request:y,response:f}=o.APIs[0]||{};if(!BB(o))throw new Error("Task signature verification failed.");y=fa(y.reduce((b,V)=>b+V,"")),f=f.map(b=>fa(b)),m.records=Rm(f);let{verify_result:p,data:B}=await this.verify({request:d,asserts:E},y,m,l);if(Oe.keccak256(Oe.hexlify(B))!==h)throw new Error("Data hash mismatch. Verification failed.");let I=new URL(d.url);return{verify_result:p,data:B,url:`${I.origin}${I.pathname}`,method:d.method,asserts:E}}static async verifyByFetchInfo(e,t,s){let n=eI.inflate(new Uint8Array(s)),{APIs:r,dataHash:a}=e,{request:o,response:c,asserts:l}=r[0],{request:A,response:h}=t.APIs[0]||{};if(!BB(t))throw new Error("Task signature verification failed.");A=fa(A.reduce((f,p)=>f+p,"")),h=h.map(f=>fa(f)),c.records=Rm(h);let{verify_result:d,data:m}=await this.verify({request:o,asserts:l},A,c,n);if(Oe.keccak256(Oe.hexlify(m))!==a)throw new Error("Data hash mismatch. Verification failed.");let y=new URL(o.url);return{verify_result:d,data:m,url:`${y.origin}${y.pathname}`,method:o.method,asserts:l}}static async verify(e,t,s,n){let{request:r,asserts:a}=e,{url:o,method:c,headers:l,body:A}=r,h=a?.request||{},d=a?.response||[];h=Ba(h,"key");let m=xg(o,c,l,A,h),E=cB({...m,requestCipher:t},s,d),{circuitList:y,baseCircuits:f}=await Qm({...E,serverKey:new Uint8Array(16).fill(0),clientKey:new Uint8Array(16).fill(0)}),{verify_result:p,data:B}=await Vm(y,f,n);return{verify_result:p,data:B}}static recoverVerifyAddress(e){let{taskId:t,url:s,method:n,data:r="0x31",asserts:a,verify_result:o,signature:c,task_signature:l,address:A}=e,h=Oe.keccak256(Oe.toUtf8Bytes(t)),d=Oe.keccak256(Oe.toUtf8Bytes(s)),m=Oe.keccak256(Oe.toUtf8Bytes(n)),E=Oe.keccak256(Oe.hexlify(r)),{request:y={},response:f=[]}=a,p=Oe.keccak256(Oe.toUtf8Bytes(hb({request:y,response:f}))),B=["bytes32","bytes32","bytes32","bytes32","bytes32","bool"],C=[h,d,m,E,p,o],b=new Oe.AbiCoder().encode(B,C),V=Oe.keccak256(b),G=Oe.recoverAddress(Oe.getBytes(V),c);if(!_y(t,A,l))throw new Error("Task signature verification failed.");if(G.toLowerCase()!==A.toLowerCase())throw new Error("Recovered address does not match the provided address.");return G}};u(pB,"FetchHelper");var Qg=pB;var yB=class yB extends Qg{constructor({appId:t}){super();Xe(this,"appId");Xe(this,"wallet");this.appId=t,this.wallet=Ab.createRandom()}async fetchData(t){try{let{request:s,asserts:n}=t,{url:r,method:a,headers:o,body:c}=s,l=n?.request||{},A=n?.response||[];if(!r||!a)throw new Error("URL and method are required parameters.");if(!this.appId)throw new Error("appId is required.");let h=await qy(this.appId,new URL(r).hostname,this.wallet.address);if(!h)throw new Error("Failed to retrieve task information.");if(l){let I=l;Object.keys(I).forEach(b=>{I[b]&&(I[b]=xm(I[b]))}),l=I}A&&A.length>0&&(A=xm(A)),await this.connectNode(Dg,h,this.wallet.address);let d=xg(r,a,o,c,l),m=await Yy({host:d.host,requestText:d.text,acceptType:d.accept,serverSide:!0},{domain:new URL(Dg).hostname,task_id:h.task_id,version:"v1"});if(!m||!m.responseBody)throw new Error("Failed to fetch data from the server.");this.assert(m.responseBody,A);let E=DB(m.json,A),y=await this.prepareProofData(d,m,A),f=await Py(y.circuitList,y.baseCircuits,y.inputBits),{verify_result:p,data:B}=await Vm(y.circuitList,y.baseCircuits,f.proof),C=tI.keccak256(tI.hexlify(B));if(p){let I=xB(t,m),b={request:I.request,response:{recordBoundaries:I.response.recordBoundaries,responseStruct:I.response.responseStruct},asserts:n};E&&(b.data=E.data),await $y(h,[b],f.proof,C,this.wallet),await Xy(h.task_id);let V={task:h.task_id,wait:u(async()=>await this.requestVerifyInfo(h.task_id),"wait")};return E&&(V.data=E.data),V}throw new Error("Proof verification failed. The response may not be valid.")}catch(s){throw s}}assert(t,s){if(!s||s.length===0)return!0;let n=VB(t,s);if(n.length>0){let r=`You do not meet the required criteria. Please check the following criteria. \r
\r
`;throw n.filter(a=>!!a).length>0?n.forEach(a=>{r+=`- ${a} \r
`}):n.forEach(a=>{r+=`\xB7 ${a} \r
`}),r}return n.length===0}async prepareProofData(t,s,n){let r=jy(t,s,n),{inputBits:a,circuitList:o,baseCircuits:c}=await Qm(r);return{inputBits:a,circuitList:o,baseCircuits:c}}async connectNode(t,s,n){let{task_id:r,schema_id:a,recipient_address:o,signature:c}=s,l=no(he(a),he(o),he(n),fa(c));try{let A=`${t}/tls/3p/v1/setup/connect`,h={method:"POST",headers:{"Content-Type":"text/plain","Cache-Control":"no-cache",tid:r,"Access-Control-Allow-Origin":"*"},body:l.buffer},d={},m=5;for(;m>0;)try{d=await fetch(A,h),m=0}catch{m-=1}if(!d.ok)throw new Error(`Failed to connect to node: ${d.statusText}`);let E=await d.arrayBuffer();return new Uint8Array(E)}catch(A){throw A}}async requestVerifyInfo(t,s=0){let n=await fetch(`${zy}/${t}`,{method:"GET",headers:{"Content-Type":"application/json"},cache:"no-cache"});if(n.ok)return await n.json();{if(s>20)throw new Error(`Max retries exceeded for taskId: ${t}`);let r=await n.text();if(n.status===404)return await new Promise(a=>setTimeout(a,5e3)),this.requestVerifyInfo(t,s+1);throw new Error(`Error Verifying Proof: ${r}`)}}};u(yB,"zkFetchClient");var EB=yB;export{EB as default};
/*!
Copyright (c) Peculiar Ventures, LLC
*/
/*!
* Copyright (c) 2014, GMO GlobalSign
* Copyright (c) 2015-2022, Peculiar Ventures
* All rights reserved.
*
* Author 2014-2019, Yury Strozhevsky
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* * Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*!
* Copyright (c) 2014, GlobalSign
* Copyright (c) 2015-2019, Peculiar Ventures
* All rights reserved.
*
* Author 2014-2019, Yury Strozhevsky
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* * Neither the name of the {organization} nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/