@peculiar/certificates-viewer 1.20.1 → 1.20.2-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { h, r as registerInstance, H as Host, c as createEvent } from './index-5ef692cc.js';
2
- import { A as AsnData, a as Attribute$1, i as index, b as id_pkcs9_at_extensionRequest, c as AsnParser, E as ExtensionRequest, d as Extension, e as AsnConvert, f as id_pkcs9_at_unstructuredName, U as UnstructuredName, g as id_pkcs9_at_challengePassword, C as ChallengePassword, h as id_ValuationRanking, V as ValuationRanking, j as id_InsuranceValue, I as InsuranceValue, k as id_WebGDPR, W as WebGDPR, l as id_ActivityDescription, m as ActivityDescription, n as id_TypeRelationship, T as TypeRelationship, o as id_DomainNameTechnicalOperator, D as DomainNameTechnicalOperator, p as id_DomainNameOwner, q as DomainNameOwner, r as id_DomainNameLegalRepresentative, s as DomainNameLegalRepresentative, t as id_DomainNameBeneficiary, u as DomainNameBeneficiary, v as certificateRawToBuffer, w as AttributeCertificate, x as getCertificateThumbprint, y as hexFormat, z as base64Format, B as CertificationRequest, N as Name, F as id_ecPublicKey, G as ECParameters, H as id_rsaEncryption, R as RSAPublicKey, O as OIDs, J as Name$1, K as OtherName, L as DisplayText, M as UserNotice, P as EDIPartyName, Q as AsnIntegerArrayBufferConverter, S as KeyUsage, X as BasicConstraints, Y as ExtendedKeyUsage, Z as SubjectKeyIdentifier, _ as AuthorityKeyIdentifier, $ as CRLDistributionPoints, a0 as AuthorityInfoAccessSyntax, a1 as SubjectInfoAccessSyntax, a2 as SubjectAlternativeName, a3 as CertificatePolicies, a4 as CertificateTransparency, a5 as NameConstraints, a6 as CertificateTemplate, a7 as EnrollCertTypeChoice, a8 as CaVersion, a9 as QCStatements, aa as NetscapeComment, ab as NetscapeCertType, ac as LeiRole, ad as LeiChoice, ae as Timestamp, af as ArchiveRevInfo, ag as CRLReason, ah as SubjectDirectoryAttributes, ai as PrivateKeyUsagePeriod, aj as EntrustVersionInfo, ak as BiometricSyntax, al as LogotypeExtn, am as TNAuthorizationList, an as PolicyConstraints, ao as PolicyMappings, ap as Download, aq as isPem, ar as isX509Pem, as as isPkcs10Pem, at as isX509AttributePem, au as X509Certificate } from './download-250f9495.js';
3
2
  import { d as dateDiff, l as l10n, a as dateShort, h as history } from './l10n-c8cf6930.js';
3
+ import { A as AsnData, a as Attribute$1, b as build_2, i as id_pkcs9_at_extensionRequest, c as AsnParser, E as ExtensionRequest, d as Extension, e as AsnConvert, f as id_pkcs9_at_unstructuredName, U as UnstructuredName, g as id_pkcs9_at_challengePassword, C as ChallengePassword, h as id_ValuationRanking, V as ValuationRanking, j as id_InsuranceValue, I as InsuranceValue, k as id_WebGDPR, W as WebGDPR, l as id_ActivityDescription, m as ActivityDescription, n as id_TypeRelationship, T as TypeRelationship, o as id_DomainNameTechnicalOperator, D as DomainNameTechnicalOperator, p as id_DomainNameOwner, q as DomainNameOwner, r as id_DomainNameLegalRepresentative, s as DomainNameLegalRepresentative, t as id_DomainNameBeneficiary, u as DomainNameBeneficiary, v as certificateRawToBuffer, w as AttributeCertificate, x as getCertificateThumbprint, y as hexFormat, z as base64Format, B as CertificationRequest, N as Name, F as id_ecPublicKey, G as ECParameters, H as id_rsaEncryption, R as RSAPublicKey, O as OIDs, J as Name$1, K as OtherName, L as DisplayText, M as UserNotice, P as build_1, Q as EDIPartyName, S as AsnIntegerArrayBufferConverter, X as KeyUsage, Y as BasicConstraints, Z as ExtendedKeyUsage, _ as SubjectKeyIdentifier, $ as AuthorityKeyIdentifier, a0 as CRLDistributionPoints, a1 as AuthorityInfoAccessSyntax, a2 as SubjectInfoAccessSyntax, a3 as SubjectAlternativeName, a4 as CertificatePolicies, a5 as CertificateTransparency, a6 as NameConstraints, a7 as CertificateTemplate, a8 as EnrollCertTypeChoice, a9 as CaVersion, aa as QCStatements, ab as NetscapeComment, ac as NetscapeCertType, ad as LeiRole, ae as LeiChoice, af as Timestamp, ag as ArchiveRevInfo, ah as CRLReason, ai as SubjectDirectoryAttributes, aj as PrivateKeyUsagePeriod, ak as EntrustVersionInfo, al as BiometricSyntax, am as LogotypeExtn, an as TNAuthorizationList, ao as PolicyConstraints, ap as PolicyMappings, aq as Download, ar as isPem, as as isX509Pem, at as isPkcs10Pem, au as isX509AttributePem, av as X509Certificate } from './download-1580501c.js';
4
4
 
5
5
  /**
6
6
  * @license
@@ -86,7 +86,7 @@ class Attribute extends AsnData {
86
86
  break;
87
87
  }
88
88
  default:
89
- this.value = index.Convert.ToHex(asnExtnValue);
89
+ this.value = build_2.ToHex(asnExtnValue);
90
90
  }
91
91
  }
92
92
  getAsnExtnValue() {
@@ -108,7 +108,7 @@ class X509AttributeCertificate extends AsnData {
108
108
  this.thumbprints = {};
109
109
  this.type = 'X.509 Attribute Certificate';
110
110
  const { acinfo } = this.asn;
111
- this.serialNumber = index.Convert.ToHex(acinfo.serialNumber);
111
+ this.serialNumber = build_2.ToHex(acinfo.serialNumber);
112
112
  this.version = acinfo.version;
113
113
  const notBefore = acinfo.attrCertValidityPeriod.notBeforeTime;
114
114
  if (!notBefore) {
@@ -148,17 +148,17 @@ class X509AttributeCertificate extends AsnData {
148
148
  async getThumbprint(algorithm = 'SHA-1') {
149
149
  try {
150
150
  const thumbprint = await getCertificateThumbprint(algorithm, this.raw);
151
- this.thumbprints[algorithm['name'] || algorithm] = index.Convert.ToHex(thumbprint);
151
+ this.thumbprints[algorithm['name'] || algorithm] = build_2.ToHex(thumbprint);
152
152
  }
153
153
  catch (error) {
154
154
  console.error('Error thumbprint get:', error);
155
155
  }
156
156
  }
157
157
  exportAsBase64() {
158
- return index.Convert.ToBase64(this.raw);
158
+ return build_2.ToBase64(this.raw);
159
159
  }
160
160
  exportAsHexFormatted() {
161
- return hexFormat(index.Convert.ToHex(this.raw));
161
+ return hexFormat(build_2.ToHex(this.raw));
162
162
  }
163
163
  exportAsPemFormatted() {
164
164
  return `-----BEGIN ATTRIBUTE CERTIFICATE-----\n${base64Format(this.exportAsBase64())}\n-----END ATTRIBUTE CERTIFICATE-----`;
@@ -222,7 +222,7 @@ class CSR extends AsnData {
222
222
  async getThumbprint(algorithm = 'SHA-1') {
223
223
  try {
224
224
  const thumbprint = await getCertificateThumbprint(algorithm, this.raw);
225
- this.thumbprints[algorithm['name'] || algorithm] = index.Convert.ToHex(thumbprint);
225
+ this.thumbprints[algorithm['name'] || algorithm] = build_2.ToHex(thumbprint);
226
226
  }
227
227
  catch (error) {
228
228
  console.error('Error thumbprint get:', error);
@@ -236,10 +236,10 @@ class CSR extends AsnData {
236
236
  }
237
237
  }
238
238
  exportAsBase64() {
239
- return index.Convert.ToBase64(this.raw);
239
+ return build_2.ToBase64(this.raw);
240
240
  }
241
241
  exportAsHexFormatted() {
242
- return hexFormat(index.Convert.ToHex(this.raw));
242
+ return hexFormat(build_2.ToHex(this.raw));
243
243
  }
244
244
  exportAsPemFormatted() {
245
245
  return `-----BEGIN CERTIFICATE REQUEST-----\n${base64Format(this.exportAsBase64())}\n-----END CERTIFICATE REQUEST-----`;
@@ -331,7 +331,7 @@ const Signature = (props) => {
331
331
  return [
332
332
  h(RowTitle, { value: l10n.getString('signature') }),
333
333
  h(RowValue, { name: l10n.getString('algorithm'), value: getStringByOID(signature.algorithm) }),
334
- h(RowValue, { name: l10n.getString('value'), value: index.Convert.ToHex(signature.value), monospace: true, collapse: true }),
334
+ h(RowValue, { name: l10n.getString('value'), value: build_2.ToHex(signature.value), monospace: true, collapse: true }),
335
335
  ];
336
336
  };
337
337
 
@@ -429,13 +429,13 @@ const GeneralNamePart = (props) => {
429
429
  catch (error) {
430
430
  //
431
431
  }
432
- return (h(RowValue, { name: OIDs[value.typeId] || value.typeId, value: index.Convert.ToHex(value.value), monospace: true }));
432
+ return (h(RowValue, { name: OIDs[value.typeId] || value.typeId, value: build_2.ToHex(value.value), monospace: true }));
433
433
  }
434
- if (index.BufferSourceConverter.isBufferSource(value)) {
435
- return (h(RowValue, { name: names[name] || name, value: index.Convert.ToString(value) }));
434
+ if (build_1.isBufferSource(value)) {
435
+ return (h(RowValue, { name: names[name] || name, value: build_2.ToString(value) }));
436
436
  }
437
437
  if (value instanceof EDIPartyName) {
438
- return (h(RowValue, { name: names[name] || name, value: index.Convert.ToString(value.partyName) }));
438
+ return (h(RowValue, { name: names[name] || name, value: build_2.ToString(value.partyName) }));
439
439
  }
440
440
  if (name === 'dNSName') {
441
441
  return (h(RowValue, { name: names[name] || name, value: value, href: getDNSNameLink(value) }));
@@ -719,7 +719,7 @@ const ExtendedKeyUsageExtension = (props) => {
719
719
  */
720
720
  const SubjectKeyIdentifierExtension = (props) => {
721
721
  const { extension, getSubjectKeyIdChildrenLink, getSubjectKeyIdSiblingsLink } = props;
722
- const keyId = index.Convert.ToHex(extension.value.buffer);
722
+ const keyId = build_2.ToHex(extension.value.buffer);
723
723
  const childrenLink = getSubjectKeyIdChildrenLink(keyId);
724
724
  const siblingsLink = getSubjectKeyIdSiblingsLink(keyId);
725
725
  return (h(BasicExtension, { extension: extension },
@@ -744,7 +744,7 @@ const SubjectKeyIdentifierExtension = (props) => {
744
744
  */
745
745
  const AuthorityKeyIdentifierExtension = (props) => {
746
746
  const { extension, getAuthKeyIdParentLink, getAuthKeyIdSiblingsLink } = props;
747
- const keyId = index.Convert.ToHex(extension.value.keyIdentifier.buffer);
747
+ const keyId = build_2.ToHex(extension.value.keyIdentifier.buffer);
748
748
  const parentLink = getAuthKeyIdParentLink(keyId);
749
749
  const siblingsLink = getAuthKeyIdSiblingsLink(keyId);
750
750
  return (h(BasicExtension, { extension: extension },
@@ -1017,7 +1017,7 @@ const QCStatementsExtension = (props) => {
1017
1017
  return (h(BasicExtension, { extension: extension }, extension.value.map((statement, arrayIndex) => ([
1018
1018
  h(RowValue, { name: `Statement #${arrayIndex + 1}`, value: "" }),
1019
1019
  h(RowValue, { name: "ID", value: getStringByOID(statement.statementId) }),
1020
- h(RowValue, { name: "Info", value: statement.statementInfo.byteLength ? index.Convert.ToHex(statement.statementInfo) : null, monospace: true }),
1020
+ h(RowValue, { name: "Info", value: statement.statementInfo.byteLength ? build_2.ToHex(statement.statementInfo) : null, monospace: true }),
1021
1021
  ]))));
1022
1022
  };
1023
1023
 
@@ -1122,7 +1122,7 @@ const CRLReasonExtension = (props) => {
1122
1122
  * LICENSE file in the root directory of this source tree.
1123
1123
  */
1124
1124
  function getAttributeValue(attribute) {
1125
- return index.Convert.ToString(attribute.values[0]);
1125
+ return build_2.ToString(attribute.values[0]);
1126
1126
  }
1127
1127
 
1128
1128
  /**
@@ -1196,7 +1196,7 @@ const BiometricSyntaxExtension = (props) => {
1196
1196
  h(RowValue, { name: "OID", value: getStringByOID(data.typeOfBiometricData.biometricDataOid) }),
1197
1197
  h(RowValue, { name: "Type", value: data.typeOfBiometricData.predefinedBiometricType }),
1198
1198
  h(RowValue, { name: "Algorithm", value: getStringByOID(data.hashAlgorithm.algorithm) }),
1199
- h(RowValue, { name: "Hash", value: index.Convert.ToHex(data.biometricDataHash.buffer), monospace: true }),
1199
+ h(RowValue, { name: "Hash", value: build_2.ToHex(data.biometricDataHash.buffer), monospace: true }),
1200
1200
  h(RowValue, { name: "Source Uri", value: data.sourceDataUri }),
1201
1201
  ]))));
1202
1202
  };
@@ -1218,7 +1218,7 @@ const LogotypeExtension = (props) => {
1218
1218
  const { imageDetails } = img;
1219
1219
  return [
1220
1220
  h(RowValue, { name: "Image Type", value: imageDetails.mediaType }),
1221
- h(RowValue, { name: "Image Hash", value: index.Convert.ToHex(imageDetails.logotypeHash[0].hashValue), monospace: true }),
1221
+ h(RowValue, { name: "Image Hash", value: build_2.ToHex(imageDetails.logotypeHash[0].hashValue), monospace: true }),
1222
1222
  h(RowValue, { name: "Image URL", value: imageDetails.logotypeURI[0], monospace: true, collapse: true }),
1223
1223
  h(RowValue, { name: "Image Hash Algorithm", value: getStringByOID(imageDetails.logotypeHash[0].hashAlg.algorithm) }),
1224
1224
  ];
@@ -1232,7 +1232,7 @@ const LogotypeExtension = (props) => {
1232
1232
  const { audioDetails } = aud;
1233
1233
  return [
1234
1234
  h(RowValue, { name: "Audio Type", value: audioDetails.mediaType }),
1235
- h(RowValue, { name: "Audio Hash", value: index.Convert.ToHex(audioDetails.logotypeHash[0].hashValue), monospace: true }),
1235
+ h(RowValue, { name: "Audio Hash", value: build_2.ToHex(audioDetails.logotypeHash[0].hashValue), monospace: true }),
1236
1236
  h(RowValue, { name: "Audio URL", value: audioDetails.logotypeURI[0], monospace: true, collapse: true }),
1237
1237
  h(RowValue, { name: "Audio Hash Algorithm", value: getStringByOID(audioDetails.logotypeHash[0].hashAlg.algorithm) }),
1238
1238
  ];
@@ -1533,7 +1533,7 @@ const Holder = (props) => {
1533
1533
  h("tr", null,
1534
1534
  h("td", null),
1535
1535
  h("td", null)),
1536
- h(RowValue, { name: l10n.getString('serialNumber'), value: index.Convert.ToHex(baseCertificateID.serial), monospace: true }),
1536
+ h(RowValue, { name: l10n.getString('serialNumber'), value: build_2.ToHex(baseCertificateID.serial), monospace: true }),
1537
1537
  h("tr", null,
1538
1538
  h("td", null),
1539
1539
  h("td", null)),
@@ -1541,7 +1541,7 @@ const Holder = (props) => {
1541
1541
  objectDigestInfo && ([
1542
1542
  h(RowValue, { name: l10n.getString('digestInfo'), value: "" }),
1543
1543
  h(RowValue, { name: l10n.getString('algorithm'), value: getStringByOID(objectDigestInfo.digestAlgorithm.algorithm) }),
1544
- h(RowValue, { name: l10n.getString('value'), value: index.Convert.ToHex(objectDigestInfo.objectDigest), monospace: true }),
1544
+ h(RowValue, { name: l10n.getString('value'), value: build_2.ToHex(objectDigestInfo.objectDigest), monospace: true }),
1545
1545
  h(RowValue, { name: l10n.getString('type'), value: objectDigestInfo.digestedObjectType }),
1546
1546
  ]),
1547
1547
  ];
@@ -1854,7 +1854,7 @@ const PublicKey = (props) => {
1854
1854
  h(RowValue, { name: l10n.getString('namedCurve'), value: getStringByOID((_a = publicKey.params) === null || _a === void 0 ? void 0 : _a['namedCurve']) }),
1855
1855
  h(RowValue, { name: l10n.getString('exponent'), value: getPublicKeyExponent(publicKey) }),
1856
1856
  h(RowValue, { name: l10n.getString('modulus'), value: getPublicKeyModulus(publicKey) }),
1857
- h(RowValue, { name: l10n.getString('value'), value: index.Convert.ToHex(publicKey.value), monospace: true, collapse: true }),
1857
+ h(RowValue, { name: l10n.getString('value'), value: build_2.ToHex(publicKey.value), monospace: true, collapse: true }),
1858
1858
  ];
1859
1859
  };
1860
1860
 
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-5ef692cc.js';
2
- import { au as X509Certificate, ap as Download, O as OIDs } from './download-250f9495.js';
3
2
  import { l as l10n } from './l10n-c8cf6930.js';
3
+ import { av as X509Certificate, aq as Download, O as OIDs } from './download-1580501c.js';
4
4
 
5
5
  const certificatesViewerCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}:host *,:host *:before,:host *:after{-webkit-box-sizing:inherit;box-sizing:inherit}:host{display:block;width:100%;word-wrap:break-word;min-width:280px;overflow:auto;position:relative;background:white;background:rgba(var(--pv-color-light-rgb), 1)}table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0}table thead{background-color:rgba(53, 132, 247, 0.07);background-color:rgba(var(--pv-color-primary-rgb), 0.07)}table tr td{vertical-align:middle}table tbody tr:not(.expanded_summary){cursor:pointer}table tr{border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1)}table th{padding:15px 10px;border-width:1px;border-style:solid;border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1)}table td{padding:8px 10px;border-width:1px;border-style:solid;border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1)}table .col_issuer,table .col_name,table .col_public_key{width:16%}table .col_actions,table .col_tests{width:18%}table.m_extra .col_issuer,table.m_extra .col_name,table.m_extra .col_public_key{width:12%}table.m_extra .col_actions,table.m_extra .col_tests{width:17%}table tr.expanded td:not(:last-child){border-right-color:transparent}table tr.expanded td{border-bottom-color:transparent}.expanded{border-bottom-color:transparent;background-color:rgba(53, 132, 247, 0.04);background-color:rgba(var(--pv-color-primary-rgb), 0.04)}table tr.expanded_summary{background-color:rgba(53, 132, 247, 0.04);background-color:rgba(var(--pv-color-primary-rgb), 0.04)}table tr.expanded_summary td{vertical-align:top;padding:10px 20px 26px}@-webkit-keyframes fadeIn{0%{opacity:0.001}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0.001}100%{opacity:1}}.modal_wrapper{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1;overflow:auto;text-align:center;-webkit-animation:fadeIn 200ms;animation:fadeIn 200ms;padding:30px 10px}.modal_wrapper:before{display:inline-block;vertical-align:middle;width:0;height:100%;content:\"\"}.modal_backdrop{background:rgba(42, 49, 52, 0.5);background:rgba(var(--pv-color-dark-rgb), 0.5);z-index:-1;position:fixed;top:0;right:0;bottom:0;left:0}.modal_container{position:relative;display:inline-block;vertical-align:middle;width:100%;max-width:900px;text-align:left;border-radius:3px;overflow:hidden;background-color:white;background-color:rgba(var(--pv-color-light-rgb), 1);height:100%}.modal_title{background-color:rgba(53, 132, 247, 0.07);background-color:rgba(var(--pv-color-primary-rgb), 0.07);border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1);border-bottom-width:1px;border-bottom-style:solid;padding:20px 60px 16px 20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:60px}.modal_content{height:calc(100% - 60px);overflow-y:auto}.modal_close{cursor:pointer;border:none;background-color:transparent;position:absolute;top:0;bottom:0;right:0;padding:0 12px;-webkit-transition:opacity 100ms;transition:opacity 100ms;outline:none}.modal_close:hover{opacity:0.6}.modal_close svg{fill:#2a3134;fill:rgba(var(--pv-color-dark-rgb), 1)}.button_table_action{margin:2px}.mobile_title{display:none}.status_wrapper{height:85px;text-align:center;pointer-events:none}.search_section{background-color:rgba(53, 132, 247, 0.07);background-color:rgba(var(--pv-color-primary-rgb), 0.07);border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1);height:50px;padding:10px;border-width:1px 1px 0 1px;border-style:solid}.input_search{height:100%;width:100%;border-radius:3px;border-width:1px;border-style:solid;padding:0 14px;font-size:12px;outline:none;border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1);color:#2a3134;color:rgba(var(--pv-color-dark-rgb), 1)}.input_search::-moz-placeholder{color:#d1d5d9;color:rgba(var(--pv-color-grey_3-rgb), 1)}.input_search:-ms-input-placeholder{color:#d1d5d9;color:rgba(var(--pv-color-grey_3-rgb), 1)}.input_search::-webkit-input-placeholder{color:#d1d5d9;color:rgba(var(--pv-color-grey_3-rgb), 1)}.input_search::-ms-input-placeholder{color:#d1d5d9;color:rgba(var(--pv-color-grey_3-rgb), 1)}.input_search::placeholder{color:#d1d5d9;color:rgba(var(--pv-color-grey_3-rgb), 1)}.loading_container{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(42, 49, 52, 0.3);background:rgba(var(--pv-color-dark-rgb), 0.3);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.align_center{text-align:center}@media (hover: hover){table tbody tr:not(.expanded_summary):hover{background-color:rgba(53, 132, 247, 0.04);background-color:rgba(var(--pv-color-primary-rgb), 0.04)}}@media (max-width: 900px){table,tbody,tr,td{display:block}thead{display:none}tr{padding:0 15px;border-width:1px;border-style:solid}tr:not(:first-child){margin-top:-1px}tr:not(.expanded_summary) td:first-child{border:none !important}table td{padding-left:0;padding-right:0;border-width:1px 0 0 0 !important;border-color:rgba(209, 213, 217, 0.5);border-color:rgba(var(--pv-color-grey_3-rgb), 0.5)}table tr.expanded_summary td{padding:15px 0}.mobile_title{display:inline-block;width:90px;vertical-align:middle}.modal_title{padding:17px 60px 17px 15px}.content{display:inline-block;width:calc(100% - 90px);vertical-align:middle;text-align:left}.expanded_summary{border-top-color:transparent;padding-bottom:10px}.expanded_summary td:before{content:none}.status_wrapper{height:266px;display:table-cell}.search_section{height:60px;padding:15px}.align_center{text-align:inherit}}";
6
6