@hpcc-js/comms 2.82.3 → 2.83.1

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.
Files changed (43) hide show
  1. package/dist/index.es6.js +1093 -639
  2. package/dist/index.es6.js.map +1 -1
  3. package/dist/index.js +1091 -637
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.min.js +1 -1
  6. package/dist/index.min.js.map +1 -1
  7. package/dist/index.node.js +1092 -638
  8. package/dist/index.node.js.map +1 -1
  9. package/dist/index.node.min.js +1 -1
  10. package/dist/index.node.min.js.map +1 -1
  11. package/lib-es6/__package__.js +2 -2
  12. package/lib-es6/ecl/dfuWorkunit.js +58 -1
  13. package/lib-es6/ecl/dfuWorkunit.js.map +1 -1
  14. package/lib-es6/ecl/query.js +102 -34
  15. package/lib-es6/ecl/query.js.map +1 -1
  16. package/lib-es6/ecl/workunit.js +9 -1
  17. package/lib-es6/ecl/workunit.js.map +1 -1
  18. package/lib-es6/services/fileSpray.js +5 -1
  19. package/lib-es6/services/fileSpray.js.map +1 -1
  20. package/lib-es6/services/wsdl/FileSpray/v1.25/FileSpray.js +116 -0
  21. package/lib-es6/services/wsdl/FileSpray/v1.25/FileSpray.js.map +1 -0
  22. package/package.json +2 -2
  23. package/src/__package__.ts +2 -2
  24. package/src/ecl/dfuWorkunit.ts +56 -3
  25. package/src/ecl/query.ts +65 -42
  26. package/src/ecl/workunit.ts +10 -1
  27. package/src/services/fileSpray.ts +11 -96
  28. package/src/services/wsdl/FileSpray/v1.25/FileSpray.ts +1040 -0
  29. package/types/__package__.d.ts +2 -2
  30. package/types/ecl/dfuWorkunit.d.ts +11 -3
  31. package/types/ecl/dfuWorkunit.d.ts.map +1 -1
  32. package/types/ecl/query.d.ts +5 -2
  33. package/types/ecl/query.d.ts.map +1 -1
  34. package/types/ecl/workunit.d.ts.map +1 -1
  35. package/types/services/fileSpray.d.ts +9 -95
  36. package/types/services/fileSpray.d.ts.map +1 -1
  37. package/types/services/wsdl/FileSpray/v1.25/FileSpray.d.ts +856 -0
  38. package/types/services/wsdl/FileSpray/v1.25/FileSpray.d.ts.map +1 -0
  39. package/types-3.4/__package__.d.ts +2 -2
  40. package/types-3.4/ecl/dfuWorkunit.d.ts +11 -3
  41. package/types-3.4/ecl/query.d.ts +5 -2
  42. package/types-3.4/services/fileSpray.d.ts +9 -95
  43. package/types-3.4/services/wsdl/FileSpray/v1.25/FileSpray.d.ts +856 -0
package/dist/index.es6.js CHANGED
@@ -13,8 +13,8 @@ import * as tmp from 'tmp';
13
13
  var trustwave = "\nTrustwave Secure Global Extended Validation CA, Level 1\nSecureTrust Corporation\n00F6F61CE4A3635BB0CA8AACEEFCB2D0F0\n-----BEGIN CERTIFICATE-----\nMIIE+DCCA+CgAwIBAgIRAPb2HOSjY1uwyoqs7vyy0PAwDQYJKoZIhvcNAQELBQAw\nSjELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRkwFwYDVQQDExBTZWN1cmUgR2xvYmFsIENBMB4XDTE1MDgxMjIwMTcyOVoXDTI1\nMDgwOTIwMTcyOVowgbgxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQ\nMA4GA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMUAwPgYDVQQDEzdUcnVzdHdhdmUgU2VjdXJlIEdsb2JhbCBFeHRlbmRlZCBW\nYWxpZGF0aW9uIENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdh\ndmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx6D45slgLGq8\n2G/NPFnuFscv7UM1eRoQyx3h0DdSTfoRvHkkNv4Gf6OudZDOXqwV86v/SjcNEP87\nnjMOEqQ7dKQPtiYzEkK0MOrjbRySFC5dvCTI9T8tnBgFpYA9YXwbpUqXxEi0Ayoq\nhA7UQhS7Q+YGrVwZaJ6LiWrQw+x8ACPLqEvPmMZhrxagKwrsKbylMsAQ1ljk8X74\nJ76TSxi/AZpxos7tHD0XbO8elXFZexfsgPLDRpMs6jREVeQj1jVCWLtg9twiXzcI\naUCchBsTSc92WGkKwBnH70dlL2N8kT/BNe3tAsXuBpZRILANY59jLrLnHEJNfado\nt6ZpougolQIDAQABo4IBaDCCAWQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4E\nFgQUx33qXRmrVNT6P+ZKc956sjwdbC4wDgYDVR0PAQH/BAQDAgGGMD0GA1UdIAQ2\nMDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9TR0NBLmNybDBsBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9v\nY3NwLnRydXN0d2F2ZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9pc3N1ZXJzL1NHQ0EuY3J0MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr\nBgEFBQcDATAfBgNVHSMEGDAWgBSvRATCQX5Ig9tOOQLs7IR65s7JpDANBgkqhkiG\n9w0BAQsFAAOCAQEAkn/4wKQRLo41fDRkZtfF+3o8JtUmfQXf2zoo9Ll29hhCiz8k\nBOpIek9MrFd/cdNgUw1nckIi+J3udyFrbO5p64JBvtc0K4kAOPFSKpHssFcnRLPx\nFXgGxXq6ohD4Py+xaEApslYFfMy89N6DKs/v/10/+/xD831RFEUMUoQxBimsmmNf\n+cLoMwF5bpoSz9JcWqCmSlK0Nla1dPphaoA/MObLN2iQPpeM3yF5dTUm1tPxe39W\nOlr6nLU1xO+yRDrlGLXrVDP1l1/qGVuwi+xufIAcdFycLLBjSSNX7LOIK3tbva7A\nWctLUs+qhIlUrbPyFERm7YOY4SttWdozeYFNfg==\n-----END CERTIFICATE-----\n\nSecureTrust Domain Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E80B1BAF9870A7C4B6CBE401A32D68\n-----BEGIN CERTIFICATE-----\nMIIEfzCCA2egAwIBAgITBvHsAOgLG6+YcKfEtsvkAaMtaDANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowfDEyMDAGA1UEAxMpU2VjdXJlVHJ1c3QgRG9tYWluIFZhbGlk\nYXRpb24gQ0EsIExldmVsIDExFDASBgNVBAoTC1NlY3VyZVRydXN0MRAwDgYDVQQH\nEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggEiMA0G\nCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjRHBw8iIivBBrfE6HqexQK0oMt2Y/\nx8jO3fN96KEazZwEoGidwloRBk2Q7VfVvZ0ZDk+qwJZGLZJLS1ntGaZLH4/Iel+r\nPnp36IVF7J5MNDB+K81a/y9svEMfDu0p3FdlBUyhHvizZ/zFNP3tolmQfZ7T0mGL\n7lutlNAzFYoVTUlVeF5cSC8Yca906TEKyizYXuXcY8Diee+t+fQRHmSI5Hk5kyXD\nYFWcf2tXEfdkuFlDjJ7HPdFyfJzrNjD+cbqt8R5rZKnK1GNVP1dXm0cIYS+BMlMa\nCC1yF18oygbnOZLw5fDv9bxs4MOgF8E/Iypw0hLQHVkuD8wAvxVgPsqvAgMBAAGj\nggEsMIIBKDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNV\nHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUYt6tehfefLfDfCMXo7Em5UbXOvQw\nHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wQQYDVR0gBDowODA2BgRV\nHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMuc2VjdXJldHJ1c3QuY29t\nL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9T\nVENBLmNybDA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGGGmh0dHA6Ly9vY3Nw\nLnRydXN0d2F2ZS5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQAHXPYhl+++o//di2Qm\naWGmC1ijxbGbKA4jOSDRvQfxlWOVkqPF11Dpxz+V8Rxw7QFFVoJ5mHpfoXtQOijV\ntsCFknxTKgzQeArNkZrkXBNpYOJAcuc5v0eX0OllBWgVdIvZRl2TM5L/u1WFrlPr\nqwWdEYTkinQwgAHXVV/7WZi6c4StcqNnlw93mlvN6Vspzaf/mWtcYp+aqT9vrqHt\nyNR1k8Ri5eIRPIU0B8woiXTj3bifLg6/O217SY5cWwQKCMFsa6nGWoRVCJ0JJXa0\nZ+m3mPQD2OcW5YMrynhL2VWohyfZAjB8l/NZaeRT7M+vki56fxbx3Bk2lqy8Z1Zz\nWd5m\n-----END CERTIFICATE-----\n\nSecureTrust Extended Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E31E46D341B2B2633CE480D915F81D\n-----BEGIN CERTIFICATE-----\nMIIEizCCA3OgAwIBAgITBvHsAOMeRtNBsrJjPOSA2RX4HTANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowfjE0MDIGA1UEAxMrU2VjdXJlVHJ1c3QgRXh0ZW5kZWQgVmFs\naWRhdGlvbiBDQSwgTGV2ZWwgMTEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxEDAOBgNV\nBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUzCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANS6vRtFpCJBJ7zJODH07Y3k54Qn\nVIBhnQmmWoqFqzCVMX97GAyAfzjcQrhl/TNiJiRCrVQWPI4n0R8eUd91Ab1Qzfsr\nnp+0NRbagVDa6+nF0KcNxbSZ6/iZQ7Ac3HyhCvJS2rH2CVYlzqdsrxDXcZk69jOO\ndPV8+w+7eNIn34BKpB/ZF7iXApDoAKG81kg1VtpGOxJhxTsKLuJmURT4pQjtZqF+\nF6rN64j5T2DOK0gOA4G7BLoTdOQuXkPS38LXKgZ43lKqEenjmiOaMF/XuLYzaHrW\nGYgCM2wJsykgdB9hCsTTEwsHRZzt2q9mLBDvYYWVhql1/kR4K/RN4JdESEECAwEA\nAaOCATYwggEyMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMB0G\nA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAdBgNVHQ4EFgQUA6uAxlUKKpWh\n4Nf+GubAynjMsJYwHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wQQYD\nVR0gBDowODA2BgRVHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMuc2Vj\ndXJldHJ1c3QuY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1\nc3R3YXZlLmNvbS9TVENBLmNybDA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGG\nGmh0dHA6Ly9vY3NwLnRydXN0d2F2ZS5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQB1\nfzAmGGmtbJyIvOfjq2McCpUoYkXAq6JTN51+nb9NDAihhDoTKMde+801bC1/l54h\nxPPm4HImM6GK6LFckDew/FGwbdRbEznUOJ7uVL5ploNBIjte23kTBUZa9fx3+aXK\nhUTAipSyPtNjnOwVVBVXzrMynfMhdsyRRe7gLXNFYCXIxtks3IkIpuYnc86NAuV9\nnBLFlZzgmbAsW+tMc5QsNvQJ9pQ539K8cqZaM+HFCScreDERxmNtHHbMw+hCa2yL\nOj4ntekgWLO8KQbE0lPUNLIM17QK8aktJavj+GezBztKMmJJwhVYQy9nxS388ApX\nxcZsEgIzOCeH0SOWg4FA\n-----END CERTIFICATE-----\n\nSecureTrust Organization Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E58E9ADD372C871D25843FDAB852D9\n-----BEGIN CERTIFICATE-----\nMIIEkDCCA3igAwIBAgITBvHsAOWOmt03LIcdJYQ/2rhS2TANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowgYIxODA2BgNVBAMTL1NlY3VyZVRydXN0IE9yZ2FuaXphdGlv\nbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMRQwEgYDVQQKEwtTZWN1cmVUcnVzdDEQ\nMA4GA1UEBxMHQ2hpY2FnbzERMA8GA1UECBMISWxsaW5vaXMxCzAJBgNVBAYTAlVT\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4QVBCdYToXFIfzd1SQfi\nTEgg1bwHXM2cE2VsyxwWK8NEFH8zMYdKy2hYOAjbfpm0xE6q4TQzS8KL2vAtCNyY\nVrwX7d3IvKR25H5s1LUDeQXSl1JBBZCtgJf2caJcwaYa6n2pZ0EKt3wBB+QteSFn\n57ENB37T13y7Nn8gCt9ZZaPYqRWxHcPaIWO3CVzQZ3tXjCLqzJMCV2KqhK85DZk3\nwo33Zb6cyYDkerDbWyric+10dJ/wdgE49dkfyZxVxEGpHg1SCSJdHjGb4z85Zx/u\neBpxBS6g3dfrkDjjT3MUxyNS4EaRTZp7o/2EqVCYDWJDM1HcOZL64kyWyi0d9jqA\n7wIDAQABo4IBNjCCATIwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC\nAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBR/QuNI\nbljpLrlhyGp3tPcDuM1qWjAfBgNVHSMEGDAWgBRCMrYW+gT9/l1LesP990xAHVpD\nrzBBBgNVHSAEOjA4MDYGBFUdIAAwLjAsBggrBgEFBQcCARYgaHR0cHM6Ly9jZXJ0\ncy5zZWN1cmV0cnVzdC5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2Ny\nbC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMDYGCCsGAQUFBwEBBCowKDAmBggrBgEF\nBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbS8wDQYJKoZIhvcNAQELBQAD\nggEBAIwGM/ejz4Hbjf7Vc11gS8jzf+BwtZq9N4t1Nibj4rIDsW2G2jDE0S7fCN2m\nMhq76xkfnwfXhBbXDEKz6rj/M0G2u1kHw4Y8ZtKSzYEyRtgpeBFm4qU6voCSREpD\nFJXsL+Go2/YLRSE6xkWVSocklxppx4hi5o/RVdMMQept6ooOSFzBpH5XZYUoblKi\n99Yj0FUe8egIa9qSts42TObTpH1YVRMDnH3k2MNX3rcgPf9v/QO9Cf8W6RQ2+X3R\nCaYMPdL5OIKh4RGYjxXe3LpgiTKBWik/ZWTFL5sZSjetrJFl50NONzTc8E+BJtrx\nVCHAI2OcWyloxrYd4zMipw0YjDw=\n-----END CERTIFICATE-----\n\nTrustwave Domain Validation SHA256 CA, Level 1\nSecureTrust Corporation\n00DDEDF6F64298490E694C36EFA422C88F\n-----BEGIN CERTIFICATE-----\nMIIE7jCCA9agAwIBAgIRAN3t9vZCmEkOaUw276QiyI8wDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNDEwMDExOTIyMzJaFw0yNDA5\nMjgxOTIyMzJaMIGvMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE3MDUGA1UEAxMuVHJ1c3R3YXZlIERvbWFpbiBWYWxpZGF0aW9uIFNIQTI1NiBD\nQSwgTGV2ZWwgMTEfMB0GCSqGSIb3DQEJARYQY2FAdHJ1c3R3YXZlLmNvbTCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNr4Z91k7AKM+Pz5XXWTIuVeMts\nPU2W/pI4WdEHG9Zab1EOWPLbthB6fzUJLLLBBk1wy2OM9yG1HywB/CwfGHcoKS8Z\n/efGV+ZKTzEpIestriUWx7wUnzxKzGML48Xv7sNuY1Crru5Hgce1Ax5uOfP7OB6t\norbMunvKQC10WcSrqFg6LapZ0UhgGmQzdjYguOBF6WZJR3QLghQaNrSUZuA6neXR\ncUsBgmzrxiEVHyzt+lmnYFMFvKVwGOyIZ2RU2LAFthS6UDDrSLGsJysxc1MK1Sti\n/VP8e8wj9rJdmiWNfA+lz6hDAPzRbv+WVJNoHEGbIx8rai+rVMiLy2HIbPsCAwEA\nAaOCAWkwggFlMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPQc4jqvtqTk\n2emd/u8cd6VjPe+IMA4GA1UdDwEB/wQEAwIBhjBIBgNVHSAEQTA/MD0GDysGAQQB\nge0YAwMDAwQFAzAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9TVENBLmNybDBsBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9v\nY3NwLnRydXN0d2F2ZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9pc3N1ZXJzL1NUQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8G\nA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0GCSqGSIb3DQEBCwUAA4IB\nAQAjoDrTysopn7t+onDZ6rZSQW8rYlWZQpSiNHrq9xAAcMExrhcN0bQC9OQ+VRci\noMDascvwum7hVkyh2w2Ad7lC3Ir9gIuA8HycjqQJ4t1eSF3geYyf8lp259ztZ/TO\nxSAwJ9W0Szc8fslOA0SWlyA3lnRVcYVu54Idc1dPXXBxwlQ1NUCYgcsXZs+6QjLL\nYhYL85DhuitQSddoYemGpfVJnaYH9tBiWmwtzwc4qsVqTsKEJ/1zYAy2GrEAv8sB\nFKSfMNMopBmmDA8/aCIW/tH6KTD2DC15QQwL6yAUbSa5mhzFSA9O8zmF881YwBVG\nn+z3isMPClgpNw/eWSbaSLZ+\n-----END CERTIFICATE-----\n\nTrustwave Domain Validation SHA256 CA, Level 1\nSecureTrust Corporation\n390A3F7EECA8FB4347DCAF701861662B\n-----BEGIN CERTIFICATE-----\nMIIE/zCCA+egAwIBAgIQOQo/fuyo+0NH3K9wGGFmKzANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE2MDkwMTE0MzUzMloXDTI0MDky\nOTE0MzUzMlowga8xCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMTcwNQYDVQQDEy5UcnVzdHdhdmUgRG9tYWluIFZhbGlkYXRpb24gU0hBMjU2IENB\nLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs2vhn3WTsAoz4/PlddZMi5V4y2w9\nTZb+kjhZ0Qcb1lpvUQ5Y8tu2EHp/NQksssEGTXDLY4z3IbUfLAH8LB8YdygpLxn9\n58ZX5kpPMSkh6y2uJRbHvBSfPErMYwvjxe/uw25jUKuu7keBx7UDHm458/s4Hq2i\ntsy6e8pALXRZxKuoWDotqlnRSGAaZDN2NiC44EXpZklHdAuCFBo2tJRm4Dqd5dFx\nSwGCbOvGIRUfLO36WadgUwW8pXAY7IhnZFTYsAW2FLpQMOtIsawnKzFzUwrVK2L9\nU/x7zCP2sl2aJY18D6XPqEMA/NFu/5ZUk2gcQZsjHytqL6tUyIvLYchs+wIDAQAB\no4IBezCCAXcwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU9BziOq+2pOTZ\n6Z3+7xx3pWM974gwDgYDVR0PAQH/BAQDAgGGMDIGA1UdHwQrMCkwJ6AloCOGIWh0\ndHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9TVENBLmNybDA9BgNVHSAENjA0MDIGBFUd\nIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zc2wudHJ1c3R3YXZlLmNvbS9DQTBs\nBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnRydXN0d2F2\nZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9pc3N1\nZXJzL1NUQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFEIy\nthb6BP3+XUt6w/33TEAdWkOvMBsGA1UdEQQUMBKBEGNhQHRydXN0d2F2ZS5jb20w\nDQYJKoZIhvcNAQELBQADggEBAFcdG0/3P/CkeGb76tz/mn1viDZiftD05i9Jw70k\nH9ulRwdCHgzhSZVN5zHvG919oHA9WHbxH04J+iAnVl1+FjoDNN+A+2icy2WXqH9w\ngaNUGyUwLdo0JCfgUeGbrCF6WUYCj47pS7zAY02CdGlstZZsqouXK3RnOMKOD3Dq\nf5kiSh56KvhW/F0OZY7PAbdV79LVAiSTiAFdoe/jMjmj8fqXOiCIjllqH/O9/DAm\nRwQStFpauwR+nBbFhq4sYwlZQvJ0NvIxN5JOTECTkMM+X21kf8mrwRdxBfw0YEPa\nUTeZhFr48Fwvnt4jpo7gqpJzt7jjsbWPd1FHtey2Q8zmSHY=\n-----END CERTIFICATE-----\n\nTrustwave Extended Validation SHA256 CA, Level 1\nSecureTrust Corporation\n00C1BD27B383958D0D8BCA5E4F08D009D9\n-----BEGIN CERTIFICATE-----\nMIIFGDCCBACgAwIBAgIRAMG9J7ODlY0Ni8peTwjQCdkwDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNDEwMTMxODE3MzlaFw0yNDEw\nMTAxODE3MzlaMIGxMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE5MDcGA1UEAxMwVHJ1c3R3YXZlIEV4dGVuZGVkIFZhbGlkYXRpb24gU0hBMjU2\nIENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIB\nIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAre9mHLqiv689FWIk7PaeQLuW\nos8ldRX4rNLHeD7/X7JrTfaXuIQaLfrUODtyRaZs0LtJsEHgpr7dUonDIH69PjBP\nrHg+hBLu7ob4udEx3J03NQSdnR/fqPY0ZMH2NP7e9TFSKKctZ/SmzA8jGclVmdiT\nGg1bTx6xgWuPWq9OprIQSgkP5NRe1GeTQ7U/E1zxLqaw6PeQWjESHPGeilyw0jr6\nqVyHM5ack9ps60sN3CKNGushyaQe3w2bYxRJ9RRH/sILCAmmTbjc/cXrGQMGdaYt\naiGnXbc45r39cqfbynZ71hPPNEtFbOdqk3C7I8vrhIHiKaAtFkTMRSWmHHk4HwID\nAQABo4IBkTCCAY0wEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU5eQkWRUy\nJ8kgs0ICbLDvMt6bIFowDgYDVR0PAQH/BAQDAgGGMGYGA1UdIARfMF0wDAYKKwYB\nBAGB7RgDADAOBgxghkgBhv1kAQECBAEwPQYPKwYBBAGB7RgDAwMDBAMDMCowKAYI\nKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwMgYDVR0fBCsw\nKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMGwGCCsG\nAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJ1c3R3YXZlLmNv\nbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMv\nU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQY\nMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0GCSqGSIb3DQEBCwUAA4IBAQCly1p1\nrvcOlRS+ODBLb2kYHd4q+cXDl65X+IQ7hOlXg9dpa7CzSAGNNpzhyYMbE48mB/RE\nBXxbZkMzEhWPFj+4jdGNsmX0zjEWatJWsnNVxpA7hDR0iZssezu86oDQ/sbVoaXj\n0a5jB2cZsnMS5287CNDk5i+ImruhbMAYV9sadliXoDy3y01Sv+FLMx39C5UhYhWU\ngvoT9igbSCoc/DPOukEDqsnKMmDqTf3JzuFI1CbJcR6M8R1hAda4mZrxIdGcbT8R\nXp8JQ8Vuv/+plPMcAiZ2Bzed0hPVr5A1Mz8K8w9OyORGlRwjWS65jsr26bjMCcfj\npvuAANrc0Alu4nJC\n-----END CERTIFICATE-----\n\nTrustwave Extended Validation SHA256 CA, Level 1\nSecureTrust Corporation\n35962F305C5A0BEC400D4E9877528C65\n-----BEGIN CERTIFICATE-----\nMIIFCzCCA/OgAwIBAgIQNZYvMFxaC+xADU6Yd1KMZTANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE2MDkwMTE0MzUzNFoXDTI0MDky\nOTE0MzUzNFowgbExCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMTkwNwYDVQQDEzBUcnVzdHdhdmUgRXh0ZW5kZWQgVmFsaWRhdGlvbiBTSEEyNTYg\nQ0EsIExldmVsIDExHzAdBgkqhkiG9w0BCQEWEGNhQHRydXN0d2F2ZS5jb20wggEi\nMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCt72YcuqK/rz0VYiTs9p5Au5ai\nzyV1Ffis0sd4Pv9fsmtN9pe4hBot+tQ4O3JFpmzQu0mwQeCmvt1SicMgfr0+ME+s\neD6EEu7uhvi50THcnTc1BJ2dH9+o9jRkwfY0/t71MVIopy1n9KbMDyMZyVWZ2JMa\nDVtPHrGBa49ar06mshBKCQ/k1F7UZ5NDtT8TXPEuprDo95BaMRIc8Z6KXLDSOvqp\nXIczlpyT2mzrSw3cIo0a6yHJpB7fDZtjFEn1FEf+wgsICaZNuNz9xesZAwZ1pi1q\nIaddtzjmvf1yp9vKdnvWE880S0Vs52qTcLsjy+uEgeIpoC0WRMxFJaYceTgfAgMB\nAAGjggGFMIIBgTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTl5CRZFTIn\nySCzQgJssO8y3psgWjAOBgNVHQ8BAf8EBAMCAYYwMgYDVR0fBCswKTAnoCWgI4Yh\naHR0cDovL2NybC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMD0GA1UdIAQ2MDQwMgYE\nVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NB\nMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJ1c3R3\nYXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lz\nc3VlcnMvU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8G\nA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMBsGA1UdEQQUMBKBEGNhQHRy\ndXN0d2F2ZS5jb20wDQYJKoZIhvcNAQELBQADggEBAGUMIDkrvlMJ0wHLuP3lkneC\nwGU6mZ3g17jyU2RJwhRinYctraryG7Jh20DQ9/ppTHoxTIADw2JDsC5ByplabteQ\nnLghrl17K1b6PO+rzWA/NFKVwo6u8Gh7Lz0iUuit7ZBD4eKcRedxRZcPQlnD9KTR\nIs94SRpootsuCv/Y5b+1FMPV1KrYtbco9yEVlaNEWLpmiEsqvLjxiWEmt71rzz+0\nS59OtA/ihnbGP9Xrnhe7wf1ybCNOO5gZQMKr/OszfLZ7oVKACGOPLlcSZRRW98gA\nszE+1ZvlHkdjamfTSs4yMvUorYn9NhXnjAWl28NuD9m3FPiE2O50ezEDnHTiaOQ=\n-----END CERTIFICATE-----\n\nTrustwave Organization Validation SHA256 CA, Level 1\nSecureTrust Corporation\n4B2C6646F434775B67DF34A04DD504E6\n-----BEGIN CERTIFICATE-----\nMIIE/TCCA+WgAwIBAgIQSyxmRvQ0d1tn3zSgTdUE5jANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE0MTAwMTE5MjIzNloXDTI0MDky\nODE5MjIzNlowgbUxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMT0wOwYDVQQDEzRUcnVzdHdhdmUgT3JnYW5pemF0aW9uIFZhbGlkYXRpb24gU0hB\nMjU2IENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29t\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA49OohlJHBJ/juiQTmibO\nS28pHvCCp1bPOc6elQ62DCYE/A14JXUtI8yaUc9nFjh6dNzR7KjFPEq/qDplQl7f\n1Tvh5ifBNNP2wQ6e820TWlPO4HhR/5g4+3iFmJ1N7kFrxDp1/P8e3+9lcJsXckXC\ntfFkQ9slogJqnaCsipgdrH4gQhicFAL5YqHw2AKfctZLSPpxhI3xISMV/lIQwZPW\nI2221v9ALckokh5pW6dTK8x8yNUUye1zt5msWzqunfBjVYVUj5/LXu46hS99Mfxu\n80ARJRyHsXIuHbMzwVXGqKVPZfKAdHBl5e3ElCjNwNy+Hgi09vS7PoAUhjCf/wbO\nnQIDAQABo4IBczCCAW8wEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUys4d\nGAN3HhzzfFiymnCoCIAW9K4wDgYDVR0PAQH/BAQDAgGGMEgGA1UdIARBMD8wPQYP\nKwYBBAGB7RgDAwMDBAQDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0\nd2F2ZS5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdh\ndmUuY29tL1NUQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0\ncDovL29jc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50\ncnVzdHdhdmUuY29tL2lzc3VlcnMvU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUH\nAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0G\nCSqGSIb3DQEBCwUAA4IBAQBN/Qb6x5VSQHIt/FqvXAkjfCI7jwXGzRoxThavUqv0\npJr1azXKv2L2ye9Sl4OCqiDHZ8ZJZ/Z19Ae1yvGTpG++0O5dWTHZ8qy/JSj17Mg1\nvWiefVpJKtkYflzhC9B9/eB3QuKVTRKDqm1ZC9kbm3MWOwtnEOw4WURWS1X2v4Hv\n2AJaXe11ZRqjx7/c6U50tYp3eVpRDCw7bOIXRffLG0oibhjHiEu8dgq7KkTSrx9m\nQFS6T2x9GLiJKhj2mEfPuGr73TfBPyKsRBymOpG67LThKVnwoUfH3pghA6VkZp5Z\n1Vm6AcDm+eelf5XPvZtNve4evLVPYueA3TmGyxXh1m2d\n-----END CERTIFICATE-----\n\nTrustwave Organization Validation SHA256 CA, Level 1\nSecureTrust Corporation\n0092B8744F71CED0E26C72A3D8D5D925B2\n-----BEGIN CERTIFICATE-----\nMIIFEDCCA/igAwIBAgIRAJK4dE9xztDibHKj2NXZJbIwDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNjA5MDExNDM1MzVaFw0yNDA5\nMjkxNDM1MzVaMIG1MQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE9MDsGA1UEAxM0VHJ1c3R3YXZlIE9yZ2FuaXphdGlvbiBWYWxpZGF0aW9uIFNI\nQTI1NiBDQSwgTGV2ZWwgMTEfMB0GCSqGSIb3DQEJARYQY2FAdHJ1c3R3YXZlLmNv\nbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPTqIZSRwSf47okE5om\nzktvKR7wgqdWzznOnpUOtgwmBPwNeCV1LSPMmlHPZxY4enTc0eyoxTxKv6g6ZUJe\n39U74eYnwTTT9sEOnvNtE1pTzuB4Uf+YOPt4hZidTe5Ba8Q6dfz/Ht/vZXCbF3JF\nwrXxZEPbJaICap2grIqYHax+IEIYnBQC+WKh8NgCn3LWS0j6cYSN8SEjFf5SEMGT\n1iNtttb/QC3JKJIeaVunUyvMfMjVFMntc7eZrFs6rp3wY1WFVI+fy17uOoUvfTH8\nbvNAESUch7FyLh2zM8FVxqilT2XygHRwZeXtxJQozcDcvh4ItPb0uz6AFIYwn/8G\nzp0CAwEAAaOCAYUwggGBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMrO\nHRgDdx4c83xYsppwqAiAFvSuMA4GA1UdDwEB/wQEAwIBhjAyBgNVHR8EKzApMCeg\nJaAjhiFodHRwOi8vY3JsLnRydXN0d2F2ZS5jb20vU1RDQS5jcmwwPQYDVR0gBDYw\nNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5j\nb20vQ0EwbAYIKwYBBQUHAQEEYDBeMCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC50\ncnVzdHdhdmUuY29tMDUGCCsGAQUFBzAChilodHRwOi8vc3NsLnRydXN0d2F2ZS5j\nb20vaXNzdWVycy9TVENBLmNydDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH\nAwEwHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wGwYDVR0RBBQwEoEQ\nY2FAdHJ1c3R3YXZlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAC0OvN7/UJBcRDXch\nA4b2qJo7mBD05+XR96N7vucMaanz26CnUxs1o8DcBckpqyEXCxdOanIr+/UJNbBL\nXLJCzNLJEJcgV9TjbVu33eQR23yMuXD+cZsqLMF+L5IIM47W8dlwKJvMy0xs7Jb1\nS3NOIhcoVu+XPzRsgKv8Yi2B6l278RfzegiCx4vYJv0pBjFzizEiFH9bWTYIOlIJ\nJSM57hoICgjCTS8BoEgndwWIyc/nEmlYaUwmCo9QynY+UmW1WPWmVITEJPMdMK6A\nZqvvaWmuHJ6/vURaz+Hoc5D3z0yJDDCkv52bXV04ZoF6cbcWry7JvNA+djvay/4B\nRR4SZQ==\n-----END CERTIFICATE-----\n\nSecureTrust TWG Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C25181828DAC4F5F7DE4AFC87AD132\n-----BEGIN CERTIFICATE-----\nMIIG2zCCBMOgAwIBAgITBy8w6cJRgYKNrE9ffeSvyHrRMjANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMjAxMDA4MDY0OTQwWhcNMzAxMDA4MDY0ODQwWjBWMQswCQYDVQQGEwJVUzEUMBIG\nA1UEChMLU2VjdXJlVHJ1c3QxMTAvBgNVBAMTKFNlY3VyZVRydXN0IFRXRyBTZWN1\ncmUgRW1haWwgQ0EsIExldmVsIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\nAoICAQCcD5Wc7H480gOv3ae6SELBls0oNOvpw1ZFjK55nLw+W6PhgqTGNEHlO/Ga\nWt13yS1iO1/WzRaUc2XsFRGcjv3QIfDZb+6UzhL1LL9ZE8zcs0B6fepn4smQg1yK\ngtAWGoD70Z9kEBtypkG23sO5xIiRACJWgRWVZ/891pQBBz+ElCxUnIyDGghHlWCD\nzn5dLoBIVic69Pfpi384uNoNfHV/WATUQEEnwY+5yMMUALAWrRD6Jeh5R4m9qKxG\nUlrO9ObDebK9mFEJvrCPtkTIWT1He4ZD58Lt0NIkaItQ7KsKF9wgwH7BTsRGwQXb\nP6/0LvfO8UDRKNE/4C39u9dwUw/Zpu2iNXTadVWBtaSDsrPFVb5rBu+pvn4l4Hw5\njtySyHAOWn4mhuxDXMuKBtaoTi/qF94d7N0CbqPdN9WSN79Cy2O0BexTGHSJVndX\nEbKyn96b5STPshKVpG9DmUekfnDtnHR9dmH74a05X/A8k/XeSJWXphM6NvyZap2A\nWiIkrS7MsfwnCdZlX+9WGY2qHxnm4Y6JdNah0qxozBbQHkqHsSN4k8O7zr2lfZhC\nuarm0Q1t6tjsmp7PUh26u6PCe0m+MctIrD6ZckUzZeuPduRb55K2p8MxjQSVNH1S\nJ2aaHp77qOYV+rvHXIL7le4OR5lDWyzYtXLc8u17/kLbUtgnmQIDAQABo4IBbTCC\nAWkwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAww\nCgYIKwYBBQUHAwQwHQYDVR0OBBYEFKpD9MNsQCriSoEcg6nez7XhG7bOMB8GA1Ud\nIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6HMEEGA1UdIAQ6MDgwNgYEVR0gADAu\nMCwGCCsGAQUFBwIBFiBodHRwczovL2NlcnRzLnNlY3VyZXRydXN0LmNvbS9DQTA1\nBgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3JsLnNlY3VyZXRydXN0LmNvbS9UV0dD\nQS5jcmwwdAYIKwYBBQUHAQEEaDBmMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5z\nZWN1cmV0cnVzdC5jb20vMDoGCCsGAQUFBzAChi5odHRwOi8vY2VydHMuc2VjdXJl\ndHJ1c3QuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQBb\ntCXryLFewOafyNENB3NzgAQVVztwaWSyvF5FYSqav95JKcoHZzy3wG7aKlTPtGnq\n1QzJst03qPmZJ3j63obz2AvfEEzLEMlsPmOTy3B9oIrNzd2QhpGW1oF6pIgGB/VP\n5zh7U2ibUC+zRLmihwt+j2+7NBbuLbPozgxDTWh2f9O4rJb5bv98Q8RdbGrypBb9\nhOhDvmNCCfjSe+Q8myqsvawEG5p7s8gsIK/V3xbyqDihXjsGc7xeEWNftlU91jBL\nKPRbrLmXhhWnHJjYs4y5IHu735HA3aAT4TqURS9dGHOMVDRumkFpLqR2W7ptpDki\nOtIFZjO5smU29OD4AlcNUXqQuKEFasyTtkRlORnWhU37c36HB8dc57xWQKOf8pMq\n7lK+ublO9G4mO1Aqr9mioTN4oMONFJG4W5dWwG9baNg682ZACkvPaw45MqSztL3A\nKb4s2cDTWu/D34hV3oafkTwu8B7B2mFZnWRJ9q4akPmZF45uw4RZx2ALaYGGGs67\n+r5qS300As9ONg8hxfVkFQSHOc00IiBkgi3OpoCofEKTgDwZwHVqOJyyPjk6H9Sh\nZANmUOT2mGDLwl86Ar5bTu8ipzlsyDYQMFjho7WaVs8I5OXyVdONXDYLIOtpITGT\n1fRcXFzxYHhrNuFwrdj2zBVyvVD4O6xV97/9nv2Eng==\n-----END CERTIFICATE-----\n\nTrustwave Global Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9AD30465CF22697F246B101EC92953B\n-----BEGIN CERTIFICATE-----\nMIIHCDCCBPCgAwIBAgITBs6C2a0wRlzyJpfyRrEB7JKVOzANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBjjE3MDUGA1UEAxMuVHJ1c3R3\nYXZlIEdsb2JhbCBEb21haW4gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UE\nChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAwDgYDVQQHEwdDaGljYWdvMREw\nDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3DQEBAQUA\nA4ICDwAwggIKAoICAQChh5brvvk/kFUZwhlUhqdsUmsMCBjzYqBBLnTyNrKPr4nd\nS9s2h2JvA+9TY7NnJc/Mq1eN5V6zqvbn/LN3c8W06f76xrVvFEKs5SzCefUS/V3Z\nC18dgwXXFrP+RgfK2kqfTHGIPrWoRSnUiLn3iUNEBtJ06oXjAqAMnAyL5AzD+eHm\nZzRK/yCw/gMPnVp2S7Dstka607fS4fW9Sl33mOMNwJRxEjQWHHR25PAb4muP6wjN\nvmoLMgiDMKseHSFVtC7SpmO89PsrUV6MahKJrZcAfquAyoO1zR2c2eGaCI/m8oSx\n3B7KiMZJ3NZims/siMp/5szemsutf36WJ31nmr7PqLJGJdVpoxbLckWIhZnNYSFm\n/pTutpNONqpyYC2gGSXdw5LuxU61913SbAPpk8DZiHi3WslHBo26ghXG++sgJUGj\nhtKZhiYlp8uD21WTP6/60wngpXyCtt9cpHxW1lXmqcxwe2J4/2S3xjHz1dC6BKxb\nr61HCPVrbTD90CZUpMI8JPdsVbz5eegv+SIyybHxZe4S0D9Kv5pgWfqdXf0BAiJC\nTbGwYmFr4uisKhkfMThyOgWEH+CRBzQqdZREQ5lTIlVyzi3jGPuu9Q6brAS9U9Ue\nQhUwX8TtY8Igfo8HlhjugDpy6WvDYQ9i+tG3AC6v8sJLdOOU83Lr+2C1LEF5ZwID\nAQABo4IBYTCCAV0wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYw\nEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0OBBYEFIaZQQzOP7aMcEnlkwfwhgcd\nLXqVMB8GA1UdIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6HMD0GA1UdIAQ2MDQw\nMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29t\nL0NBMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9U\nV0dDQS5jcmwwbgYIKwYBBQUHAQEEYjBgMCYGCCsGAQUFBzABhhpodHRwOi8vb2Nz\ncC50cnVzdHdhdmUuY29tLzA2BggrBgEFBQcwAoYqaHR0cDovL3NzbC50cnVzdHdh\ndmUuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQAmn0jp\n+lNp188KxjKQZtpJ3mixLmuqGdH6SVpRs40BYQg/68xOPH3C6AJ17tqE6IwZMW9s\nlgiO4B7khR3ESA6Sct3zmkA8woR/KJVzzegjscHhtQUifQ+Eb9Gi0ORNnetGV+5g\n5vlrFZMptBRGUxXMo2xa+Z/NTyimpMopfXj7qCW/nQWQbzvkQGchK9IokyqV2wra\ntX68/P3zleG+LLwzoJd5AhHYSXWrIRJpClZHN+LQKkbI3MYW7+upo/1e9HEmFKxu\n5SFV3nuQm5wSOsz/ZtIL1AS8IoZYxcSe1Q/yuV9GjnxtL1jkPbzsBx4eBGxUrcIe\nsBat6SI8G58uHTpIPpqUxRYsg8w0FdjK3kNBB5QWDeXiDxzqIRzA0iE1kHeTXRZ3\n7qgGXUcce7ciW5KqeRApjQbD5BSZG2EKkQ7aaOhvxK0LiuxHZnjPW4/fdEcaCuku\nMT5qMDiF2U85V9BvanEy/xkYn4I2UeK4EdSXe7q6j+CIJz9WnoLQDbIS04GqIWe0\nVRQUlx3idUWYSJU/SG8KrEHhlJLmgSjshCwtT6qo4vHwT5WcWDLIbjMqgL1iQ6JS\n4gxXuOGia3d0I4/wec5x23EWwx9V8BtDJ8N7NDeRNmZ8RXOHSYJsVQYIQuFUEXE1\nv3WMSIxuyQMyR5FYSCG9xnKRFzNmiPngDil5IA==\n-----END CERTIFICATE-----\n\nTrustwave Global Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D99FB3B180C281020314A2D1C7640017\n-----BEGIN CERTIFICATE-----\nMIIHFDCCBPygAwIBAgITBs6C2Z+zsYDCgQIDFKLRx2QAFzANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBkDE5MDcGA1UEAxMwVHJ1c3R3\nYXZlIEdsb2JhbCBFeHRlbmRlZCBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMSEwHwYD\nVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xEDAOBgNVBAcTB0NoaWNhZ28x\nETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEB\nBQADggIPADCCAgoCggIBAMRO7orfWjfmz6Y6qoAmDp2lqCJcdvbRQ8w18rl1JE3j\nf/1CScZLrnLg4RDm8JiRcvFuvoMXn/XNUWy5ICG57tjG2nO7jvBuXfvbdkGA+foN\n3yJKMTX/PmmGlN4qpzFtsB0kLrP14/0TRGeJB7qDfAFH0ReFk0ftQobLBGBOpEca\n+bv+LhcTe40/uNUSK2yQ9GpIw200mcsD3B9c29Im4tSZFuA2o1vnEeizYW5M4sPX\nHu7p5ZCxjJrXVNqWUPM38rShhMUNL5uaVYWoi7TG5JXbg0Lmt2nq1k5nnig9Yp/W\nlAFooWXjKQzHf/z+XZ57bqPe7SzLW5pzpZdSmY2VRybAwEmzMjCXgHiP2ru3TpAD\n+giakPDoz3ZmbKjwYKZ5PmnOmXx0Z2GloO37MjamjPor/+fZohfyma7VAQE8znJt\nI9MVoRN3G3gW/tuT3jXfzYdFBlfGoO7OYyLN1LK5YBKH2qXrCHD8rG2DauBt7U+w\nfOvwfkp8FcdTnfQ92Xe65U3Xdu0eCgQJbChxZtWhhLnbY6xhmwAWyJ1my+Im72Kx\nGP/XcA8SH2sz6/k0782BjRckDuFpVVpTNYl9wqe/tuOrZhWPapOsRlfsDTuhgGu5\n2inM9sU3CAzmFE85zoRQFZQSof3kFN2rUZF20bmTak99cBNLli6/ja3+KntpZ08d\nAgMBAAGjggFrMIIBZzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIB\nhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHQYDVR0OBBYEFHM4IMZH\nbabGL3tQ4EDe3sedR958MB8GA1UdIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6H\nMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50\ncnVzdHdhdmUuY29tL0NBMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudHJ1\nc3R3YXZlLmNvbS9UV0dDQS5jcmwwbgYIKwYBBQUHAQEEYjBgMCYGCCsGAQUFBzAB\nhhpodHRwOi8vb2NzcC50cnVzdHdhdmUuY29tLzA2BggrBgEFBQcwAoYqaHR0cDov\nL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEB\nCwUAA4ICAQBwnSHECaf+hfGrm3Cg+aRr57ytoOSzI1DjlTNcM7k4uSt6kJRPHJ4c\nldIujMaETV52RgE6ykaMGkuIwQOIsLI6SXwjU1f5gXFUbDTS3KTWc/jwQeyLmdOe\nhvc+wBSFv8d10Sx/Qiti8mqsTqr0+N94Cx01+SkiWxWWoSZOAPkz8DMQGlD4yndK\nceTMGtQ03cLnD/36Mv6tz/Ds9l/OExrJGGxHD0tmYwYwBZpPHm7BBY2ZzycVxLcg\n+uuggcX1pg5MhJ1rDyod+7X+ilvTgH7ftHCmxvR7viMLwSUuytZ05zb2teRQgU+8\niWnPEHO/ADm5VD1Zb5Rx0579/YEENBJtGUPPJzo+JEpiZIOIlwZ69ETWWNCLZr0V\nvoi+SDl65cr+dgR9JreJ2I4W9FzS45ruxYEC8LGKEmV46sAk1YLbnIBmhehAKy9t\nP8RVz3QXYJ6rLOAuXF7R2eVV0SqfivW9bVzvBZTUTFsbdSMBAAF1BJjdRqYR63DI\ncQASY7CRoUiak1NTgPkzeV8VcNJmUt8c2eKJIifqBAjquH6+6UXs9Ol0aMPn6v0y\nB+TSuxhX2sSrpna9QcOh/QyoR5Hvcd81rZSbMc7yasKoUMXviotV1SfEqs3RU5Ts\nwnU4NHPn5ITRiuh5VMuvB/VnjnPC953u5uqAGtZ8BkC7X9cu5E0rMQ==\n-----END CERTIFICATE-----\n\nTrustwave Global Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A69703AEFE5D37D18858C74026B004\n-----BEGIN CERTIFICATE-----\nMIIHGDCCBQCgAwIBAgITBs6C2aaXA67+XTfRiFjHQCawBDANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBlDE9MDsGA1UEAxM0VHJ1c3R3\nYXZlIEdsb2JhbCBPcmdhbml6YXRpb24gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEh\nMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAwDgYDVQQHEwdDaGlj\nYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3\nDQEBAQUAA4ICDwAwggIKAoICAQC8BzZtA3eWejFOGHc2DLgex6P471dLWIIHSlrF\nY4a2BCtzAd/VlpQ3gslWnTgthOmK2/hCc+WSaOLPVZzZf3lGnxbb0+Y87Kx+nS1m\nIfJ/4OR6o8XLMLoCTAI1jsWxggiB4NBMqsW2xXQ5VAvBb66KEQYbshNlRpTbtBFq\nEed4YIvCdjbnCUOy1zubgVHUVyCFHzN4XPjEQCtT5vZM576Lt10Je9COnqG0CtPU\nQNP2tjnSmOOYdWcVRZ0UqXUl2fMBfmSDHd8902foigjpP04AYYbq6AetqEgqdvQP\nxz5pVbZqzy8UrE/s/raJLFyTuIAYVt18M0whSgWzGgUWkq2xRqbfn7b1hd56dwRb\nR7pKc51FyTbeocnKlYLC+Dlzp7iKQ3Pb7WHRwLhaJB7u4CzwqhUxHc0xplMYsq92\nMbZ6WN5L5mI7hxY8gLMOR7vNX9CKz9XcYRS01iCDe5Y/9muW8bzGyNXLX1YaHAy4\n+6ncksb3Y3RUKj3f0+T4nbiRISmGazravJKSssBLP3kPa9h5aX+Vd00eL+Q7sXrh\nFO7xz+oWtOL5rfVszyc87JQvjw1sDHA710nViqzUE1bJZNe61EXdCb/RV+Wsu+rO\ncAMSr5x2j/wW875sh+U3EJmTzdEBUBxHnBD2mDTyonT7wL47TRXTEO1IaS4mVbnv\no0jWvQIDAQABo4IBazCCAWcwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E\nBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBS3\n/VNzOCaKcKuTyoupCOrH07fj/TAfBgNVHSMEGDAWgBSZ4BlnDWLbdrPaPbhb6P1C\n0jEOhzA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9z\nc2wudHJ1c3R3YXZlLmNvbS9DQTAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3Js\nLnRydXN0d2F2ZS5jb20vVFdHQ0EuY3JsMG4GCCsGAQUFBwEBBGIwYDAmBggrBgEF\nBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbS8wNgYIKwYBBQUHMAKGKmh0\ndHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9pc3N1ZXJzL1RXR0NBLmNydDANBgkqhkiG\n9w0BAQsFAAOCAgEAFXwfmELpEGKUguzVTMix79XbUnkfLa7IXcqBOrwOWEF1V8F1\nxGY6jLlUTtoEXRYZwCpqOK/i4m4nmWCYE45O7URR8nqeFffceTi62t4Yvh6LkC9g\nUnj3aChLiO/Zdxilq6vfsXO0mKafrGtZXwjyskS250Pj9DsANs57QqvYN4hqbplJ\nzc95p09OUvEhPiyRyx6FyY28U+3X6+mSNMJWd4Nhr+3HtvmItLIXP2JCLxuYtu/K\n6nKcpFCFFKeF8K3PWpjsAb0hfXL4vc3WfyCYsQnvJeisyAh7yEuge2iDwl1/xXIo\nEOAyyYAxvy5UnzcAa0Z2lwjptve+jZ4gQ+A1ioYUavR3pSfBNzuJW30nZCWFadKc\nNXOPoAPkK8JLxgRBH3JboeBCXG6xgy/pXrTjyhW7/SS+Z+7eKkp9jgdTVQ12yUtc\nCiYWUuM4l240D/z+s03WOEcLTluESwFkJhzs3D9i5crTL72uSkDDmlh8HXoPAyYO\nl3Mn9cGWhd8M8IeQRXmb6O7gvvQZDoSXDVDbjBKcW1lFpi0wBxIBzLaOi4CX4OhI\nJHJ/H3duOMaltuzXLSLkc26jwHzMeq8seQRSXraXJi1t5oBKlmEWFEgq6xlH7mLW\n3TOqS19cuiSWl/CsnlLGaW8MH5YHmk+MJxQE1BcLBs6ciapvHlhLEd9EUpU=\n-----END CERTIFICATE-----\n\nSecureTrust TWG ECDSA P-256 Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C4627001DECFEBF6BF5D3B1066D7E3\n-----BEGIN CERTIFICATE-----\nMIIDbTCCAxKgAwIBAgITBy8w6cRicAHez+v2v107EGbX4zAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMjAxMDA4MDY0OTQxWhcNMzAxMDA4MDY0ODQxWjBiMQswCQYDVQQGEwJV\nUzEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxPTA7BgNVBAMTNFNlY3VyZVRydXN0IFRX\nRyBFQ0RTQSBQLTI1NiBTZWN1cmUgRW1haWwgQ0EsIExldmVsIDIwWTATBgcqhkjO\nPQIBBggqhkjOPQMBBwNCAAT4KazLm94aiykBGkNQVkBrjmK77RlP627D2n3EwK3s\n49ljRkN6wiTWXHx3jPD5BBE/7mWhGWnphzGu1Deb6yzco4IBdTCCAXEwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUH\nAwQwHQYDVR0OBBYEFHMQ2nwjQr8tFHfBImxM7ct8lbBYMB8GA1UdIwQYMBaAFKNB\nBqyQbdFK63WlShCZs7Ghi0r3MEEGA1UdIAQ6MDgwNgYEVR0gADAuMCwGCCsGAQUF\nBwIBFiBodHRwczovL2NlcnRzLnNlY3VyZXRydXN0LmNvbS9DQTA5BgNVHR8EMjAw\nMC6gLKAqhihodHRwOi8vY3JsLnNlY3VyZXRydXN0LmNvbS9UV0dQMjU2Q0EuY3Js\nMHgGCCsGAQUFBwEBBGwwajAoBggrBgEFBQcwAYYcaHR0cDovL29jc3Auc2VjdXJl\ndHJ1c3QuY29tLzA+BggrBgEFBQcwAoYyaHR0cDovL2NlcnRzLnNlY3VyZXRydXN0\nLmNvbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwIDSQAwRgIhAN8G\nPwKUpMgV3LZjq7fuKS96f15BrwBjmTlKhOwgX83BAiEA9WpWhzRRoKeJGAqqXrMk\nZ8RE9xRtOFBqYdv9H5CeTVk=\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9AF531423847B85FB677932AAF80508\n-----BEGIN CERTIFICATE-----\nMIIDmDCCAz+gAwIBAgITBs6C2a9TFCOEe4X7Z3kyqvgFCDAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBmjFDMEEGA1UEAxM6\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBEb21haW4gVmFsaWRhdGlvbiBD\nQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAw\nDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMw\nWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATWpfTIQFPkZIoXXMDN9utRU+AbLGcg\nBmLA06x2qqdcpCMlYFoJhuRWzYCiqz1mKrAvNlQYkgoHfemk92sf8iaro4IBaTCC\nAWUwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAww\nCgYIKwYBBQUHAwEwHQYDVR0OBBYEFA/DUGGZflb1xtmcOeiDWJAHuhq0MB8GA1Ud\nIwQYMBaAFKNBBqyQbdFK63WlShCZs7Ghi0r3MD0GA1UdIAQ2MDQwMgYEVR0gADAq\nMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NBMDcGA1Ud\nHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9UV0dQMjU2Q0Eu\nY3JsMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0cDovL29jc3AudHJ1\nc3R3YXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNv\nbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwIDRwAwRAIgICvA5ttD\n0oeUcd37iYvoQ7iMIpZINp4e1j5NrlI3UnYCIEZhimm9+1dUWAfx9ZkGmIu0HiHR\nzEZifAHbPM3SJbRu\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A20A3797CD878EB3DAA41D08680AF7\n-----BEGIN CERTIFICATE-----\nMIIDpjCCA0ugAwIBAgITBs6C2aIKN5fNh46z2qQdCGgK9zAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBnDFFMEMGA1UEAxM8\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBFeHRlbmRlZCBWYWxpZGF0aW9u\nIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4x\nEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJV\nUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKXHfFxFDVI6uYWZlWciFFKtYzuJ\n+IBhot3PQGikE3sjU8d9dARkZCkInqmDyP/+XiLzgrYPMy7NS8lZcRsE5p2jggFz\nMIIBbzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUE\nFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHQYDVR0OBBYEFAwlVqqzYgakv+7gGxtX\nzC8s9g1QMB8GA1UdIwQYMBaAFKNBBqyQbdFK63WlShCZs7Ghi0r3MD0GA1UdIAQ2\nMDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9UV0dQMjU2Q0EuY3JsMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0\ncDovL29jc3AudHJ1c3R3YXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wu\ndHJ1c3R3YXZlLmNvbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwID\nSQAwRgIhALahroq1NScrFeCvG5uMgMKH/bo190D+Mkh2ZIojrUOfAiEAosFXFE73\n0WLRPjX2uOkLhXuA4cQEb1R1oeGDH4MNVOo=\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A8B57C104843994DACD79E28633E5F\n-----BEGIN CERTIFICATE-----\nMIIDqDCCA0+gAwIBAgITBs6C2ai1fBBIQ5lNrNeeKGM+XzAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBoDFJMEcGA1UEAxNA\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBPcmdhbml6YXRpb24gVmFsaWRh\ndGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UE\nBhMCVVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmHWo0mogvX1J61xysTqsn\n6qV06wxUH68/QJ2aDIka6beTrDoTZv3mIkyPxFTPy+9idjgSAERlBsDirgO2/NiY\no4IBczCCAW8wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwHQYD\nVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBSv+Ju8XTSl3tA+\nFCldDY4lrbClhTAfBgNVHSMEGDAWgBSjQQaskG3RSut1pUoQmbOxoYtK9zA9BgNV\nHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9DQTA3BgNVHR8EMDAuMCygKqAohiZodHRwOi8vY3JsLnRydXN0d2F2\nZS5jb20vVFdHUDI1NkNBLmNybDByBggrBgEFBQcBAQRmMGQwJgYIKwYBBQUHMAGG\nGmh0dHA6Ly9vY3NwLnRydXN0d2F2ZS5jb20vMDoGCCsGAQUFBzAChi5odHRwOi8v\nc3NsLnRydXN0d2F2ZS5jb20vaXNzdWVycy9UV0dQMjU2Q0EuY3J0MAoGCCqGSM49\nBAMCA0cAMEQCIGa3JyBYlXxRN5GIIulLaDxnANNRnY4j1Et166CCC5h+AiAVUlzJ\nIJTfUDBU7jnSTKSw/F+bLIPvaC6frMZv0h+RTA==\n-----END CERTIFICATE-----\n\nSecureTrust TWG ECDSA P-384 Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C58D91DEF98A7F9EB2666CFE7BE1EE\n-----BEGIN CERTIFICATE-----\nMIIDqjCCAy+gAwIBAgITBy8w6cWNkd75in+esmZs/nvh7jAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMjAxMDA4MDY0OTQxWhcNMzAxMDA4MDY0ODQxWjBiMQswCQYDVQQGEwJV\nUzEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxPTA7BgNVBAMTNFNlY3VyZVRydXN0IFRX\nRyBFQ0RTQSBQLTM4NCBTZWN1cmUgRW1haWwgQ0EsIExldmVsIDIwdjAQBgcqhkjO\nPQIBBgUrgQQAIgNiAAR4nTJ6MvtPBb7+L3tklhdDw0tr5FNY5Q1hsp6NR5OzZVeG\nx/X3VrCvkOsae1OEZHNqWCnnI1s/ix9qn/2+q0pPpXrT6wkN/HOQzpQaJWzCF7yX\nIfIB0o+x1Pr17UOX2qGjggF1MIIBcTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1Ud\nDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDBDAdBgNVHQ4EFgQUJd3xyUp6\n6EP6L9hCmkRrWAcU2mwwHwYDVR0jBBgwFoAUVamEidLBMr0Yy2ymB07I552+gpAw\nQQYDVR0gBDowODA2BgRVHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMu\nc2VjdXJldHJ1c3QuY29tL0NBMDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu\nc2VjdXJldHJ1c3QuY29tL1RXR1AzODRDQS5jcmwweAYIKwYBBQUHAQEEbDBqMCgG\nCCsGAQUFBzABhhxodHRwOi8vb2NzcC5zZWN1cmV0cnVzdC5jb20vMD4GCCsGAQUF\nBzAChjJodHRwOi8vY2VydHMuc2VjdXJldHJ1c3QuY29tL2lzc3VlcnMvVFdHUDM4\nNENBLmNydDAKBggqhkjOPQQDAwNpADBmAjEA8X5zwZHtdHjLIn60rwG3Z3NAa6cU\n6gOFxyF+ksTCXvWCUP0oFUqsRPMKMYE2mtdQAjEA2diuEHTPUgCQ0ynhLjged8BO\nFyzL3UlFieGGp90v58gUpfjoFq0BReAw7MPYo/Qa\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9B07A17CC5376157813389A2930A44A\n-----BEGIN CERTIFICATE-----\nMIID1TCCA1ygAwIBAgITBs6C2bB6F8xTdhV4EziaKTCkSjAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBmjFDMEEGA1UEAxM6\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBEb21haW4gVmFsaWRhdGlvbiBD\nQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAw\nDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMw\ndjAQBgcqhkjOPQIBBgUrgQQAIgNiAASxlBEflNumTKsypgdOscM2x6ZRpQGSyB4B\nhJScRQI81UhZvzYSwxPWcxNZwFQoV457HfqR51pviJnHltRS8MJhJ9Q9Rf1sSmy4\nW6SPsM9qnBjwfBRxghByIsEIaTW/PKyjggFpMIIBZTASBgNVHRMBAf8ECDAGAQH/\nAgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4E\nFgQUp6etGGS1u/oGGEfIwJ68Zf9pAWAwHwYDVR0jBBgwFoAUVamEidLBMr0Yy2ym\nB07I552+gpAwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBz\nOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDov\nL2NybC50cnVzdHdhdmUuY29tL1RXR1AzODRDQS5jcmwwcgYIKwYBBQUHAQEEZjBk\nMCYGCCsGAQUFBzABhhpodHRwOi8vb2NzcC50cnVzdHdhdmUuY29tLzA6BggrBgEF\nBQcwAoYuaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvVFdHUDM4NENB\nLmNydDAKBggqhkjOPQQDAwNnADBkAjA6fS1jRjt+DvnWSI58v4lX+8DCXbdEhDaB\nbBOS/rXwS/ntsFXqTf0B90GPv3AWlFMCMBbz6nXMwX0jKRkaFZOZx9tvwUapdq7M\n6jYpT/NnAzH68x1t3/7ysZ8lPuKIqAwdKQ==\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A331594530006781829387E40DBCB6\n-----BEGIN CERTIFICATE-----\nMIID4zCCA2igAwIBAgITBs6C2aMxWUUwAGeBgpOH5A28tjAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBnDFFMEMGA1UEAxM8\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBFeHRlbmRlZCBWYWxpZGF0aW9u\nIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4x\nEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJV\nUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABKcVGieqBjW3BuVza9VhkBlpGLHLZqQg\nI0GXaTpt5CogNWz6BmlZ1yAPjRnDUVfVwl57ATRtV7u+5TPFzKZ+RheFVc0iA8vl\nQ2JINGRz8XLDaivvuygQtFKSzCWn4e66cKOCAXMwggFvMBIGA1UdEwEB/wQIMAYB\nAf8CAQAwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF\nBQcDATAdBgNVHQ4EFgQUMFfit09gayJACkNfT/oNzXO8JCcwHwYDVR0jBBgwFoAU\nVamEidLBMr0Yy2ymB07I552+gpAwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYB\nBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwNwYDVR0fBDAwLjAs\noCqgKIYmaHR0cDovL2NybC50cnVzdHdhdmUuY29tL1RXR1AzODRDQS5jcmwwcgYI\nKwYBBQUHAQEEZjBkMCYGCCsGAQUFBzABhhpodHRwOi8vb2NzcC50cnVzdHdhdmUu\nY29tLzA6BggrBgEFBQcwAoYuaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3Vl\ncnMvVFdHUDM4NENBLmNydDAKBggqhkjOPQQDAwNpADBmAjEA6pScrGT+SruK7iON\n7iDJZfhQsjfQIhaq9sHiEXd89B8ibWOb57no/K265dPxeuALAjEA27NTMZM344eT\nX3df9B22dY5ZshsUMIiRcMo1K4B/GBO8SIA0jParkHS5g4WO5K7O\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A9D8E29837EF90BEAF59DC6551BED6\n-----BEGIN CERTIFICATE-----\nMIID5jCCA2ygAwIBAgITBs6C2anY4pg375C+r1ncZVG+1jAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBoDFJMEcGA1UEAxNA\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBPcmdhbml6YXRpb24gVmFsaWRh\ndGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UE\nBhMCVVMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATvG09PrsO8UQZhH5Zw54rwgcUw\nKjC9D2V3myjD5WOa8uxdTL8PzdwPk4TCcSf6UUG1Tt74j/I+vBOi2tgMcDt68Zld\nvTj+jZT1BBYTQtYh6/dOUjmiapQU5XqoFMRNubGjggFzMIIBbzASBgNVHRMBAf8E\nCDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYI\nKwYBBQUHAwEwHQYDVR0OBBYEFDoXwH5iO1eguEDKzDRHzZZ+/AmIMB8GA1UdIwQY\nMBaAFFWphInSwTK9GMtspgdOyOedvoKQMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgG\nCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NBMDcGA1UdHwQw\nMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9UV0dQMzg0Q0EuY3Js\nMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3\nYXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9p\nc3N1ZXJzL1RXR1AzODRDQS5jcnQwCgYIKoZIzj0EAwMDaAAwZQIwMyHlVCVMacxP\nO0fC+uc4M7Eq1F9woaWBmLSSNC6EWe3nShMqsR9HrNWrOHBHucNWAjEArwrzEM8g\nJkR4iZxbyYNIn2sNEkNZt2pxqJn4G2cDDDFfOarykKVzP1aJ9OMdYUvs\n-----END CERTIFICATE-----\n\nTrustwave S/MIME SHA256 CA, Level 1\nXRamp Security Services Inc\n3A83B71EE02C3CCA1CE1A2643E9B66EA\n-----BEGIN CERTIFICATE-----\nMIIFHTCCBAWgAwIBAgIQOoO3HuAsPMoc4aJkPptm6jANBgkqhkiG9w0BAQsFADCB\ngjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk\nMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY\nUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQxMDAxMTky\nMjM4WhcNMjQwOTI4MTkyMjM4WjCBpDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCEls\nbGlub2lzMRAwDgYDVQQHEwdDaGljYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9s\nZGluZ3MsIEluYy4xLDAqBgNVBAMTI1RydXN0d2F2ZSBTL01JTUUgU0hBMjU2IENB\nLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4c5I5giD0wEh+RuoLIJkD7a6mBlm\n+YzTtXSefGejVVYtpjclkUl4C4hEfQMCUcrBnU3ORHVprXi/Q82dKNFPac8FI9bj\n8mtq0cjdSDfXJKfdf52wPXnTjASwKyhJt+CoJik+Fz72KAkjxi+OUSpWdQBeAQra\ndbtu4UGFTgPcuU/cwpF8J0g4CGk/saVKkkJNpq5wqpfQRYl025FyKbzmRjqhB/Ta\npoHlbHMQ7aeoZ+qtDC+eWnE3AqTUHx14Z5fegjLQRmPWqqdeZafthouglbEuHt4A\neyzefTDNwyXjUiRD/n0kaNNW+lcsLpw7ouw1OU8mwQ0C7LoPJljpXRjvOwIDAQAB\no4IBaTCCAWUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUDDOjV6rjq9ZL\ncBs2nqPtYVDmr3QwDgYDVR0PAQH/BAQDAgGGMEgGA1UdIARBMD8wPQYPKwYBBAGB\n7RgDAwMFBAMDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5j\nb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdhdmUuY29t\nL1hHQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29j\nc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdh\ndmUuY29tL2lzc3VlcnMvWEdDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwQwHwYD\nVR0jBBgwFoAUxk+iPQZjhAmczmLkBKyNXLXpthswDQYJKoZIhvcNAQELBQADggEB\nAIdGLHufUegzFKVBQVWs3YAIFqCcJvdak14TMRImxJsnQWLz+jIW0olC0JATY6Ng\nxAbjIJA4wtW/tA+rgE6WcA5y3bLN3bRMQVDSu6X26hkVjvwo4/VYykOp3e9Cqlfe\ngJAsrqBQKXkUpEbYEmmorXxj6/74e//xwXTz0XS0BS9cXhONlTQffyJnMeLaunzQ\nS1x/MvALfPCHCZCTOfLDmwylKtHHu+V2Ks0HV+ZrzCBRR5W3MhGTU7PpNEMQwyGF\n+MG5eZTd0jyxOSOjaXQm7iDh0tG/iKZZegn5AhNdaHE74QEHTjK+teLQlo60QGBk\necyzakgVYZ/Ezalz8nQwhCA=\n-----END CERTIFICATE-----\n\nTrustwave XRamp Global Extended Validation CA, Level 1\nXRamp Security Services Inc\n00D3D519C2B2EB5C7040F64CBC957BBD2C\n-----BEGIN CERTIFICATE-----\nMIIFMDCCBBigAwIBAgIRANPVGcKy61xwQPZMvJV7vSwwDQYJKoZIhvcNAQELBQAw\ngYIxCzAJBgNVBAYTAlVTMR4wHAYDVQQLExV3d3cueHJhbXBzZWN1cml0eS5jb20x\nJDAiBgNVBAoTG1hSYW1wIFNlY3VyaXR5IFNlcnZpY2VzIEluYzEtMCsGA1UEAxMk\nWFJhbXAgR2xvYmFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE1MDgxMjIw\nMTczMVoXDTI1MDgwOTIwMTczMVowgbcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJ\nbGxpbm9pczEQMA4GA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhv\nbGRpbmdzLCBJbmMuMT8wPQYDVQQDEzZUcnVzdHdhdmUgWFJhbXAgR2xvYmFsIEV4\ndGVuZGVkIFZhbGlkYXRpb24gQ0EsIExldmVsIDExHzAdBgkqhkiG9w0BCQEWEGNh\nQHRydXN0d2F2ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9\nAAbj9SknrNJT9pDatGvlR386KRi0SkqIOGr+C5W91+8E8PqydEHwjrnrWt/MTLGO\n+2kfEO3TEJlWxQQqbHy8SdhjCANefLzOT1cfTfjroWBIS9yiHpBIQytAaz/td95Y\n+JKrRBVCnIR/wB5qMMQ982RWwqggD763XLma0c1AIndsZL+dXp1zET4KBreoxn3q\nRYzMIsZIL2mAJoiCOTYuOGrOMVuaQn0HSu3K7bU+CpkdLQ/j+ikcQiI10IL9oOcO\nU9Gnt/hRyUX66Gk91RIpYXhla2tIYrg7ezrAnFoZIZCb891JjFtbSEOvAAK9F5d6\nfkkjPx0432o/v1c5GRFPAgMBAAGjggFoMIIBZDASBgNVHRMBAf8ECDAGAQH/AgEA\nMB0GA1UdDgQWBBTFzrk7QkXAzQnlaOhIOoNdbI6rGDAOBgNVHQ8BAf8EBAMCAYYw\nPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRy\ndXN0d2F2ZS5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVz\ndHdhdmUuY29tL1hHQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZ\naHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3Nz\nbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvWEdDQS5jcnQwHQYDVR0lBBYwFAYIKwYB\nBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFMZPoj0GY4QJnM5i5ASsjVy16bYb\nMA0GCSqGSIb3DQEBCwUAA4IBAQCA2N/WVTGYRGNTuvF2qKWPrQUx0/6pKmGqELl6\nNXs1bwRXCci98SkeNjiaa2dHEwcGR43/M1Y0nekXP8QCEFVqGOwaY0pnTb8wL+CI\n/HTp1zfmoCYNvtzt1fIq/+9ynLYEjX8rsrf51HIEjJJK8K3k/Ub3cFT+yJKNN2YN\nJS0IvJYlbpqS6VbcInwLcW7WvJmXUuL7t0Vtt0d2q1h5UdnJQP+skiOmN/B0zPut\nbRC4v5pNGJJmwbk58UlOSeviH2qzDGutamOJ6dFNWqQFoZorAT7fUsr3WDA4HKtx\neraYdCIRJX7weW9xpdMNsVO7Wy/Ma7Fz9fzKnOH5mnInBOof\n-----END CERTIFICATE-----\n\nSecure Global CA\nSecureTrust Corporation\n075622A4E8D48A894DF413C8F0F8EAA5\n-----BEGIN CERTIFICATE-----\nMIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx\nMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg\nQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG\nSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ\niQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa\n/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ\njnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI\nHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7\nsFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w\ngZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF\nMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw\nKaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG\nAQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L\nURYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO\nH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm\nI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY\niNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc\nf8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW\n-----END CERTIFICATE-----\n\nSecureTrust CA\nSecureTrust Corporation\n0CF08E5C0816A5AD427FF0EB271859D0\n-----BEGIN CERTIFICATE-----\nMIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz\nMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv\ncnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz\nZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO\n0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao\nwW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj\n7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS\n8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT\nBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB\n/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg\nJYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC\nNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3\n6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/\n3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm\nD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS\nCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR\n3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=\n-----END CERTIFICATE-----\n\nTrustwave Global Certification Authority\nTrustwave Holdings, Inc.\n05F70E86DA49F346352EBAB2\n-----BEGIN CERTIFICATE-----\nMIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw\nCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x\nITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1\nc3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx\nOTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI\nSWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI\nb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp\nY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn\nswuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu\n7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8\n1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW\n80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP\nJqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l\nRtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw\nhI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10\ncoos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc\nBW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n\ntwiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud\nEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud\nDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W\n0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe\nuyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q\nlG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB\naCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE\nsLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT\nMaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe\nqu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh\nVicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8\nh6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9\nEEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK\nyeC2nOnOcXHebD8WpHk=\n-----END CERTIFICATE-----\n\nTrustwave Global ECC P256 Certification Authority\nTrustwave Holdings, Inc.\n0D6A5F083F285C3E5195DF5D\n-----BEGIN CERTIFICATE-----\nMIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf\nBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3\nYXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x\nNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G\nA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0\nd2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF\nQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG\nSM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN\nFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w\nDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw\nCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh\nDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7\n-----END CERTIFICATE-----\n\nTrustwave Global ECC P384 Certification Authority\nTrustwave Holdings, Inc.\n08BD85976C9927A48068473B\n-----BEGIN CERTIFICATE-----\nMIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf\nBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3\nYXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x\nNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G\nA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0\nd2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF\nQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB\nBAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ\nj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF\n1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\nA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3\nAZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC\nMGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu\nSw==\n-----END CERTIFICATE-----\n";
14
14
 
15
15
  var PKG_NAME = "@hpcc-js/comms";
16
- var PKG_VERSION = "2.82.3";
17
- var BUILD_VERSION = "2.104.21";
16
+ var PKG_VERSION = "2.83.1";
17
+ var BUILD_VERSION = "2.104.23";
18
18
 
19
19
  /******************************************************************************
20
20
  Copyright (c) Microsoft Corporation.
@@ -106,7 +106,7 @@ function __spreadArray(to, from, pack) {
106
106
  return to.concat(ar || Array.prototype.slice.call(from));
107
107
  }
108
108
 
109
- var logger$4 = scopedLogger("comms/connection.ts");
109
+ var logger$5 = scopedLogger("comms/connection.ts");
110
110
  function instanceOfIOptions(object) {
111
111
  return "baseUrl" in object;
112
112
  }
@@ -208,12 +208,12 @@ function jsonp(opts, action, request, responseType, header) {
208
208
  respondedTimeout -= respondedTick;
209
209
  if (respondedTimeout <= 0) {
210
210
  clearInterval(progress);
211
- logger$4.error("Request timeout: " + script.src);
211
+ logger$5.error("Request timeout: " + script.src);
212
212
  doCallback();
213
213
  reject(Error("Request timeout: " + script.src));
214
214
  }
215
215
  else {
216
- logger$4.debug("Request pending (" + respondedTimeout / 1000 + " sec): " + script.src);
216
+ logger$5.debug("Request pending (" + respondedTimeout / 1000 + " sec): " + script.src);
217
217
  }
218
218
  }
219
219
  }, respondedTick);
@@ -491,109 +491,114 @@ var Service = /** @class */ (function () {
491
491
  return Service;
492
492
  }());
493
493
 
494
- var DFUWUActions;
495
- (function (DFUWUActions) {
496
- DFUWUActions["Delete"] = "Delete";
497
- DFUWUActions["Protect"] = "Protect";
498
- DFUWUActions["Unprotect"] = "Unprotect";
499
- DFUWUActions["Restore"] = "Restore";
500
- DFUWUActions["SetToFailed"] = "SetToFailed";
501
- DFUWUActions["Archive"] = "Archive";
502
- })(DFUWUActions || (DFUWUActions = {}));
494
+ var FileSpray;
495
+ (function (FileSpray) {
496
+ (function (DFUWUActions) {
497
+ DFUWUActions["Delete"] = "Delete";
498
+ DFUWUActions["Protect"] = "Protect";
499
+ DFUWUActions["Unprotect"] = "Unprotect";
500
+ DFUWUActions["Restore"] = "Restore";
501
+ DFUWUActions["SetToFailed"] = "SetToFailed";
502
+ DFUWUActions["Archive"] = "Archive";
503
+ })(FileSpray.DFUWUActions || (FileSpray.DFUWUActions = {}));
504
+ })(FileSpray || (FileSpray = {}));
503
505
  var FileSprayServiceBase = /** @class */ (function (_super) {
504
506
  __extends(FileSprayServiceBase, _super);
505
507
  function FileSprayServiceBase(optsConnection) {
506
- return _super.call(this, optsConnection, "FileSpray", "1.23") || this;
508
+ return _super.call(this, optsConnection, "FileSpray", "1.25") || this;
507
509
  }
508
510
  FileSprayServiceBase.prototype.AbortDFUWorkunit = function (request) {
509
- return this._connection.send("AbortDFUWorkunit", request);
511
+ return this._connection.send("AbortDFUWorkunit", request, "json", false, undefined, "AbortDFUWorkunitResponse");
510
512
  };
511
513
  FileSprayServiceBase.prototype.Copy = function (request) {
512
- return this._connection.send("Copy", request);
514
+ return this._connection.send("Copy", request, "json", false, undefined, "CopyResponse");
515
+ };
516
+ FileSprayServiceBase.prototype.CreateDFUPublisherWorkunit = function (request) {
517
+ return this._connection.send("CreateDFUPublisherWorkunit", request, "json", false, undefined, "CreateDFUPublisherWorkunitResponse");
513
518
  };
514
519
  FileSprayServiceBase.prototype.CreateDFUWorkunit = function (request) {
515
- return this._connection.send("CreateDFUWorkunit", request);
520
+ return this._connection.send("CreateDFUWorkunit", request, "json", false, undefined, "CreateDFUWorkunitResponse");
516
521
  };
517
522
  FileSprayServiceBase.prototype.DFUWUFile = function (request) {
518
- return this._connection.send("DFUWUFile", request);
523
+ return this._connection.send("DFUWUFile", request, "json", false, undefined, "DFUWUFileResponse");
519
524
  };
520
525
  FileSprayServiceBase.prototype.DFUWUSearch = function (request) {
521
- return this._connection.send("DFUWUSearch", request);
526
+ return this._connection.send("DFUWUSearch", request, "json", false, undefined, "DFUWUSearchResponse");
522
527
  };
523
528
  FileSprayServiceBase.prototype.DFUWorkunitsAction = function (request) {
524
- return this._connection.send("DFUWorkunitsAction", request);
529
+ return this._connection.send("DFUWorkunitsAction", request, "json", false, undefined, "DFUWorkunitsActionResponse");
525
530
  };
526
531
  FileSprayServiceBase.prototype.DeleteDFUWorkunit = function (request) {
527
- return this._connection.send("DeleteDFUWorkunit", request);
532
+ return this._connection.send("DeleteDFUWorkunit", request, "json", false, undefined, "DeleteDFUWorkunitResponse");
528
533
  };
529
534
  FileSprayServiceBase.prototype.DeleteDFUWorkunits = function (request) {
530
- return this._connection.send("DeleteDFUWorkunits", request);
535
+ return this._connection.send("DeleteDFUWorkunits", request, "json", false, undefined, "DeleteDFUWorkunitsResponse");
531
536
  };
532
537
  FileSprayServiceBase.prototype.DeleteDropZoneFiles = function (request) {
533
- return this._connection.send("DeleteDropZoneFiles", request);
538
+ return this._connection.send("DeleteDropZoneFiles", request, "json", false, undefined, "DFUWorkunitsActionResponse");
534
539
  };
535
540
  FileSprayServiceBase.prototype.Despray = function (request) {
536
- return this._connection.send("Despray", request);
541
+ return this._connection.send("Despray", request, "json", false, undefined, "DesprayResponse");
537
542
  };
538
543
  FileSprayServiceBase.prototype.DfuMonitor = function (request) {
539
- return this._connection.send("DfuMonitor", request);
544
+ return this._connection.send("DfuMonitor", request, "json", false, undefined, "DfuMonitorResponse");
540
545
  };
541
546
  FileSprayServiceBase.prototype.DropZoneFileSearch = function (request) {
542
- return this._connection.send("DropZoneFileSearch", request);
547
+ return this._connection.send("DropZoneFileSearch", request, "json", false, undefined, "DropZoneFileSearchResponse");
543
548
  };
544
549
  FileSprayServiceBase.prototype.DropZoneFiles = function (request) {
545
- return this._connection.send("DropZoneFiles", request);
550
+ return this._connection.send("DropZoneFiles", request, "json", false, undefined, "DropZoneFilesResponse");
546
551
  };
547
552
  FileSprayServiceBase.prototype.EchoDateTime = function (request) {
548
- return this._connection.send("EchoDateTime", request);
553
+ return this._connection.send("EchoDateTime", request, "json", false, undefined, "EchoDateTimeResponse");
549
554
  };
550
555
  FileSprayServiceBase.prototype.FileList = function (request) {
551
- return this._connection.send("FileList", request);
556
+ return this._connection.send("FileList", request, "json", false, undefined, "FileListResponse");
552
557
  };
553
558
  FileSprayServiceBase.prototype.GetDFUExceptions = function (request) {
554
- return this._connection.send("GetDFUExceptions", request);
559
+ return this._connection.send("GetDFUExceptions", request, "json", false, undefined, "GetDFUExceptionsResponse");
555
560
  };
556
561
  FileSprayServiceBase.prototype.GetDFUProgress = function (request) {
557
- return this._connection.send("GetDFUProgress", request);
562
+ return this._connection.send("GetDFUProgress", request, "json", false, undefined, "ProgressResponse");
558
563
  };
559
564
  FileSprayServiceBase.prototype.GetDFUServerQueues = function (request) {
560
- return this._connection.send("GetDFUServerQueues", request);
565
+ return this._connection.send("GetDFUServerQueues", request, "json", false, undefined, "GetDFUServerQueuesResponse");
561
566
  };
562
567
  FileSprayServiceBase.prototype.GetDFUWorkunit = function (request) {
563
- return this._connection.send("GetDFUWorkunit", request);
568
+ return this._connection.send("GetDFUWorkunit", request, "json", false, undefined, "GetDFUWorkunitResponse");
564
569
  };
565
570
  FileSprayServiceBase.prototype.GetDFUWorkunits = function (request) {
566
- return this._connection.send("GetDFUWorkunits", request);
571
+ return this._connection.send("GetDFUWorkunits", request, "json", false, undefined, "GetDFUWorkunitsResponse");
567
572
  };
568
573
  FileSprayServiceBase.prototype.GetSprayTargets = function (request) {
569
- return this._connection.send("GetSprayTargets", request);
574
+ return this._connection.send("GetSprayTargets", request, "json", false, undefined, "GetSprayTargetsResponse");
570
575
  };
571
576
  FileSprayServiceBase.prototype.OpenSave = function (request) {
572
- return this._connection.send("OpenSave", request);
577
+ return this._connection.send("OpenSave", request, "json", false, undefined, "OpenSaveResponse");
573
578
  };
574
579
  FileSprayServiceBase.prototype.Ping = function (request) {
575
- return this._connection.send("Ping", request);
580
+ return this._connection.send("Ping", request, "json", false, undefined, "FileSprayPingResponse");
576
581
  };
577
582
  FileSprayServiceBase.prototype.Rename = function (request) {
578
- return this._connection.send("Rename", request);
583
+ return this._connection.send("Rename", request, "json", false, undefined, "RenameResponse");
579
584
  };
580
585
  FileSprayServiceBase.prototype.Replicate = function (request) {
581
- return this._connection.send("Replicate", request);
586
+ return this._connection.send("Replicate", request, "json", false, undefined, "ReplicateResponse");
582
587
  };
583
588
  FileSprayServiceBase.prototype.ShowResult = function (request) {
584
- return this._connection.send("ShowResult", request);
589
+ return this._connection.send("ShowResult", request, "json", false, undefined, "ShowResultResponse");
585
590
  };
586
591
  FileSprayServiceBase.prototype.SprayFixed = function (request) {
587
- return this._connection.send("SprayFixed", request);
592
+ return this._connection.send("SprayFixed", request, "json", false, undefined, "SprayFixedResponse");
588
593
  };
589
594
  FileSprayServiceBase.prototype.SprayVariable = function (request) {
590
- return this._connection.send("SprayVariable", request);
595
+ return this._connection.send("SprayVariable", request, "json", false, undefined, "SprayResponse");
591
596
  };
592
597
  FileSprayServiceBase.prototype.SubmitDFUWorkunit = function (request) {
593
- return this._connection.send("SubmitDFUWorkunit", request);
598
+ return this._connection.send("SubmitDFUWorkunit", request, "json", false, undefined, "SubmitDFUWorkunitResponse");
594
599
  };
595
600
  FileSprayServiceBase.prototype.UpdateDFUWorkunit = function (request) {
596
- return this._connection.send("UpdateDFUWorkunit", request);
601
+ return this._connection.send("UpdateDFUWorkunit", request, "json", false, undefined, "UpdateDFUWorkunitResponse");
597
602
  };
598
603
  return FileSprayServiceBase;
599
604
  }(Service));
@@ -612,6 +617,9 @@ var FileSprayService = /** @class */ (function (_super) {
612
617
  FileSprayService.prototype.DesprayEx = function (request) {
613
618
  return this._connection.send("Despray", request);
614
619
  };
620
+ FileSprayService.prototype.UpdateDFUWorkunitEx = function (request) {
621
+ return this._connection.send("UpdateDFUWorkunit", request, "json", false, undefined, "UpdateDFUWorkunitResponse");
622
+ };
615
623
  return FileSprayService;
616
624
  }(FileSprayServiceBase));
617
625
 
@@ -1385,7 +1393,7 @@ var LogaccessServiceBase = /** @class */ (function (_super) {
1385
1393
  return LogaccessServiceBase;
1386
1394
  }(Service));
1387
1395
 
1388
- var logger$3 = scopedLogger("@hpcc-js/comms/services/wsLogaccess.ts");
1396
+ var logger$4 = scopedLogger("@hpcc-js/comms/services/wsLogaccess.ts");
1389
1397
  var ElasticKnownColumns;
1390
1398
  (function (ElasticKnownColumns) {
1391
1399
  ElasticKnownColumns["audience"] = "hpcc.log.audience";
@@ -1587,7 +1595,7 @@ var LogaccessService = /** @class */ (function (_super) {
1587
1595
  lines = (_d = (_c = logLines.lines) === null || _c === void 0 ? void 0 : _c.map(elasticToLogLine)) !== null && _d !== void 0 ? _d : [];
1588
1596
  break;
1589
1597
  default:
1590
- logger$3.warning("Unknown RemoteLogManagerType: ".concat(logInfo.RemoteLogManagerType));
1598
+ logger$4.warning("Unknown RemoteLogManagerType: ".concat(logInfo.RemoteLogManagerType));
1591
1599
  lines = [];
1592
1600
  }
1593
1601
  return {
@@ -1596,7 +1604,7 @@ var LogaccessService = /** @class */ (function (_super) {
1596
1604
  };
1597
1605
  }
1598
1606
  catch (e) {
1599
- logger$3.error(e);
1607
+ logger$4.error(e);
1600
1608
  }
1601
1609
  return {
1602
1610
  lines: [],
@@ -2566,6 +2574,321 @@ var WorkunitsServiceEx = /** @class */ (function (_super) {
2566
2574
  return WorkunitsServiceEx;
2567
2575
  }(WorkunitsServiceBase));
2568
2576
 
2577
+ function formatDecimal(x) {
2578
+ return Math.abs(x = Math.round(x)) >= 1e21
2579
+ ? x.toLocaleString("en").replace(/,/g, "")
2580
+ : x.toString(10);
2581
+ }
2582
+
2583
+ // Computes the decimal coefficient and exponent of the specified number x with
2584
+ // significant digits p, where x is positive and p is in [1, 21] or undefined.
2585
+ // For example, formatDecimalParts(1.23) returns ["123", 0].
2586
+ function formatDecimalParts(x, p) {
2587
+ if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity
2588
+ var i, coefficient = x.slice(0, i);
2589
+
2590
+ // The string returned by toExponential either has the form \d\.\d+e[-+]\d+
2591
+ // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3).
2592
+ return [
2593
+ coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,
2594
+ +x.slice(i + 1)
2595
+ ];
2596
+ }
2597
+
2598
+ function exponent(x) {
2599
+ return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;
2600
+ }
2601
+
2602
+ function formatGroup(grouping, thousands) {
2603
+ return function(value, width) {
2604
+ var i = value.length,
2605
+ t = [],
2606
+ j = 0,
2607
+ g = grouping[0],
2608
+ length = 0;
2609
+
2610
+ while (i > 0 && g > 0) {
2611
+ if (length + g + 1 > width) g = Math.max(1, width - length);
2612
+ t.push(value.substring(i -= g, i + g));
2613
+ if ((length += g + 1) > width) break;
2614
+ g = grouping[j = (j + 1) % grouping.length];
2615
+ }
2616
+
2617
+ return t.reverse().join(thousands);
2618
+ };
2619
+ }
2620
+
2621
+ function formatNumerals(numerals) {
2622
+ return function(value) {
2623
+ return value.replace(/[0-9]/g, function(i) {
2624
+ return numerals[+i];
2625
+ });
2626
+ };
2627
+ }
2628
+
2629
+ // [[fill]align][sign][symbol][0][width][,][.precision][~][type]
2630
+ var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;
2631
+
2632
+ function formatSpecifier(specifier) {
2633
+ if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier);
2634
+ var match;
2635
+ return new FormatSpecifier({
2636
+ fill: match[1],
2637
+ align: match[2],
2638
+ sign: match[3],
2639
+ symbol: match[4],
2640
+ zero: match[5],
2641
+ width: match[6],
2642
+ comma: match[7],
2643
+ precision: match[8] && match[8].slice(1),
2644
+ trim: match[9],
2645
+ type: match[10]
2646
+ });
2647
+ }
2648
+
2649
+ formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof
2650
+
2651
+ function FormatSpecifier(specifier) {
2652
+ this.fill = specifier.fill === undefined ? " " : specifier.fill + "";
2653
+ this.align = specifier.align === undefined ? ">" : specifier.align + "";
2654
+ this.sign = specifier.sign === undefined ? "-" : specifier.sign + "";
2655
+ this.symbol = specifier.symbol === undefined ? "" : specifier.symbol + "";
2656
+ this.zero = !!specifier.zero;
2657
+ this.width = specifier.width === undefined ? undefined : +specifier.width;
2658
+ this.comma = !!specifier.comma;
2659
+ this.precision = specifier.precision === undefined ? undefined : +specifier.precision;
2660
+ this.trim = !!specifier.trim;
2661
+ this.type = specifier.type === undefined ? "" : specifier.type + "";
2662
+ }
2663
+
2664
+ FormatSpecifier.prototype.toString = function() {
2665
+ return this.fill
2666
+ + this.align
2667
+ + this.sign
2668
+ + this.symbol
2669
+ + (this.zero ? "0" : "")
2670
+ + (this.width === undefined ? "" : Math.max(1, this.width | 0))
2671
+ + (this.comma ? "," : "")
2672
+ + (this.precision === undefined ? "" : "." + Math.max(0, this.precision | 0))
2673
+ + (this.trim ? "~" : "")
2674
+ + this.type;
2675
+ };
2676
+
2677
+ // Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.
2678
+ function formatTrim(s) {
2679
+ out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {
2680
+ switch (s[i]) {
2681
+ case ".": i0 = i1 = i; break;
2682
+ case "0": if (i0 === 0) i0 = i; i1 = i; break;
2683
+ default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;
2684
+ }
2685
+ }
2686
+ return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;
2687
+ }
2688
+
2689
+ var prefixExponent;
2690
+
2691
+ function formatPrefixAuto(x, p) {
2692
+ var d = formatDecimalParts(x, p);
2693
+ if (!d) return x + "";
2694
+ var coefficient = d[0],
2695
+ exponent = d[1],
2696
+ i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,
2697
+ n = coefficient.length;
2698
+ return i === n ? coefficient
2699
+ : i > n ? coefficient + new Array(i - n + 1).join("0")
2700
+ : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i)
2701
+ : "0." + new Array(1 - i).join("0") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!
2702
+ }
2703
+
2704
+ function formatRounded(x, p) {
2705
+ var d = formatDecimalParts(x, p);
2706
+ if (!d) return x + "";
2707
+ var coefficient = d[0],
2708
+ exponent = d[1];
2709
+ return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient
2710
+ : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1)
2711
+ : coefficient + new Array(exponent - coefficient.length + 2).join("0");
2712
+ }
2713
+
2714
+ var formatTypes = {
2715
+ "%": function(x, p) { return (x * 100).toFixed(p); },
2716
+ "b": function(x) { return Math.round(x).toString(2); },
2717
+ "c": function(x) { return x + ""; },
2718
+ "d": formatDecimal,
2719
+ "e": function(x, p) { return x.toExponential(p); },
2720
+ "f": function(x, p) { return x.toFixed(p); },
2721
+ "g": function(x, p) { return x.toPrecision(p); },
2722
+ "o": function(x) { return Math.round(x).toString(8); },
2723
+ "p": function(x, p) { return formatRounded(x * 100, p); },
2724
+ "r": formatRounded,
2725
+ "s": formatPrefixAuto,
2726
+ "X": function(x) { return Math.round(x).toString(16).toUpperCase(); },
2727
+ "x": function(x) { return Math.round(x).toString(16); }
2728
+ };
2729
+
2730
+ function identity(x) {
2731
+ return x;
2732
+ }
2733
+
2734
+ var map = Array.prototype.map,
2735
+ prefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];
2736
+
2737
+ function formatLocale$1(locale) {
2738
+ var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + ""),
2739
+ currencyPrefix = locale.currency === undefined ? "" : locale.currency[0] + "",
2740
+ currencySuffix = locale.currency === undefined ? "" : locale.currency[1] + "",
2741
+ decimal = locale.decimal === undefined ? "." : locale.decimal + "",
2742
+ numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),
2743
+ percent = locale.percent === undefined ? "%" : locale.percent + "",
2744
+ minus = locale.minus === undefined ? "-" : locale.minus + "",
2745
+ nan = locale.nan === undefined ? "NaN" : locale.nan + "";
2746
+
2747
+ function newFormat(specifier) {
2748
+ specifier = formatSpecifier(specifier);
2749
+
2750
+ var fill = specifier.fill,
2751
+ align = specifier.align,
2752
+ sign = specifier.sign,
2753
+ symbol = specifier.symbol,
2754
+ zero = specifier.zero,
2755
+ width = specifier.width,
2756
+ comma = specifier.comma,
2757
+ precision = specifier.precision,
2758
+ trim = specifier.trim,
2759
+ type = specifier.type;
2760
+
2761
+ // The "n" type is an alias for ",g".
2762
+ if (type === "n") comma = true, type = "g";
2763
+
2764
+ // The "" type, and any invalid type, is an alias for ".12~g".
2765
+ else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = "g";
2766
+
2767
+ // If zero fill is specified, padding goes after sign and before digits.
2768
+ if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "=";
2769
+
2770
+ // Compute the prefix and suffix.
2771
+ // For SI-prefix, the suffix is lazily computed.
2772
+ var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "",
2773
+ suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type) ? percent : "";
2774
+
2775
+ // What format function should we use?
2776
+ // Is this an integer type?
2777
+ // Can this type generate exponential notation?
2778
+ var formatType = formatTypes[type],
2779
+ maybeSuffix = /[defgprs%]/.test(type);
2780
+
2781
+ // Set the default precision if not specified,
2782
+ // or clamp the specified precision to the supported range.
2783
+ // For significant precision, it must be in [1, 21].
2784
+ // For fixed precision, it must be in [0, 20].
2785
+ precision = precision === undefined ? 6
2786
+ : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))
2787
+ : Math.max(0, Math.min(20, precision));
2788
+
2789
+ function format(value) {
2790
+ var valuePrefix = prefix,
2791
+ valueSuffix = suffix,
2792
+ i, n, c;
2793
+
2794
+ if (type === "c") {
2795
+ valueSuffix = formatType(value) + valueSuffix;
2796
+ value = "";
2797
+ } else {
2798
+ value = +value;
2799
+
2800
+ // Determine the sign. -0 is not less than 0, but 1 / -0 is!
2801
+ var valueNegative = value < 0 || 1 / value < 0;
2802
+
2803
+ // Perform the initial formatting.
2804
+ value = isNaN(value) ? nan : formatType(Math.abs(value), precision);
2805
+
2806
+ // Trim insignificant zeros.
2807
+ if (trim) value = formatTrim(value);
2808
+
2809
+ // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.
2810
+ if (valueNegative && +value === 0 && sign !== "+") valueNegative = false;
2811
+
2812
+ // Compute the prefix and suffix.
2813
+ valuePrefix = (valueNegative ? (sign === "(" ? sign : minus) : sign === "-" || sign === "(" ? "" : sign) + valuePrefix;
2814
+ valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : "");
2815
+
2816
+ // Break the formatted value into the integer “value” part that can be
2817
+ // grouped, and fractional or exponential “suffix” part that is not.
2818
+ if (maybeSuffix) {
2819
+ i = -1, n = value.length;
2820
+ while (++i < n) {
2821
+ if (c = value.charCodeAt(i), 48 > c || c > 57) {
2822
+ valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;
2823
+ value = value.slice(0, i);
2824
+ break;
2825
+ }
2826
+ }
2827
+ }
2828
+ }
2829
+
2830
+ // If the fill character is not "0", grouping is applied before padding.
2831
+ if (comma && !zero) value = group(value, Infinity);
2832
+
2833
+ // Compute the padding.
2834
+ var length = valuePrefix.length + value.length + valueSuffix.length,
2835
+ padding = length < width ? new Array(width - length + 1).join(fill) : "";
2836
+
2837
+ // If the fill character is "0", grouping is applied after padding.
2838
+ if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = "";
2839
+
2840
+ // Reconstruct the final output based on the desired alignment.
2841
+ switch (align) {
2842
+ case "<": value = valuePrefix + value + valueSuffix + padding; break;
2843
+ case "=": value = valuePrefix + padding + value + valueSuffix; break;
2844
+ case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;
2845
+ default: value = padding + valuePrefix + value + valueSuffix; break;
2846
+ }
2847
+
2848
+ return numerals(value);
2849
+ }
2850
+
2851
+ format.toString = function() {
2852
+ return specifier + "";
2853
+ };
2854
+
2855
+ return format;
2856
+ }
2857
+
2858
+ function formatPrefix(specifier, value) {
2859
+ var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)),
2860
+ e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,
2861
+ k = Math.pow(10, -e),
2862
+ prefix = prefixes[8 + e / 3];
2863
+ return function(value) {
2864
+ return f(k * value) + prefix;
2865
+ };
2866
+ }
2867
+
2868
+ return {
2869
+ format: newFormat,
2870
+ formatPrefix: formatPrefix
2871
+ };
2872
+ }
2873
+
2874
+ var locale$1;
2875
+ var format;
2876
+
2877
+ defaultLocale$1({
2878
+ decimal: ".",
2879
+ thousands: ",",
2880
+ grouping: [3],
2881
+ currency: ["$", ""],
2882
+ minus: "-"
2883
+ });
2884
+
2885
+ function defaultLocale$1(definition) {
2886
+ locale$1 = formatLocale$1(definition);
2887
+ format = locale$1.format;
2888
+ locale$1.formatPrefix;
2889
+ return locale$1;
2890
+ }
2891
+
2569
2892
  var t0 = new Date,
2570
2893
  t1 = new Date;
2571
2894
 
@@ -4662,7 +4985,14 @@ var Timer = /** @class */ (function (_super) {
4662
4985
 
4663
4986
  var formatter = utcFormat("%Y-%m-%dT%H:%M:%S.%LZ");
4664
4987
  var parser = utcParse("%Y-%m-%dT%H:%M:%S.%LZ");
4665
- var logger$2 = scopedLogger("workunit.ts");
4988
+ var d3FormatNum = format(",");
4989
+ function formatNum(num) {
4990
+ if (num && !isNaN(+num)) {
4991
+ return d3FormatNum(+num);
4992
+ }
4993
+ return num;
4994
+ }
4995
+ var logger$3 = scopedLogger("workunit.ts");
4666
4996
  var WUStateID = WUStateID$1;
4667
4997
  var WorkunitCache = /** @class */ (function (_super) {
4668
4998
  __extends(WorkunitCache, _super);
@@ -5537,7 +5867,7 @@ var Workunit = /** @class */ (function (_super) {
5537
5867
  default:
5538
5868
  props[scopeProperty.Name] = scopeProperty.RawValue;
5539
5869
  }
5540
- formattedProps[scopeProperty.Name] = (_a = scopeProperty.Formatted) !== null && _a !== void 0 ? _a : props[scopeProperty.Name];
5870
+ formattedProps[scopeProperty.Name] = formatNum((_a = scopeProperty.Formatted) !== null && _a !== void 0 ? _a : props[scopeProperty.Name]);
5541
5871
  }
5542
5872
  }
5543
5873
  data.push(__assign({ id: scope.Id, name: scope.ScopeName, type: scope.ScopeType, __formattedProps: formattedProps }, props));
@@ -5778,7 +6108,7 @@ var Workunit = /** @class */ (function (_super) {
5778
6108
  return false;
5779
6109
  });
5780
6110
  if (!wuMissing) {
5781
- logger$2.warning("Unexpected exception: ");
6111
+ logger$3.warning("Unexpected exception: ");
5782
6112
  throw e;
5783
6113
  }
5784
6114
  return {};
@@ -5815,7 +6145,7 @@ var Workunit = /** @class */ (function (_super) {
5815
6145
  return false;
5816
6146
  });
5817
6147
  if (!wuMissing) {
5818
- logger$2.warning("Unexpected exception: ");
6148
+ logger$3.warning("Unexpected exception: ");
5819
6149
  throw e;
5820
6150
  }
5821
6151
  return {};
@@ -5904,7 +6234,7 @@ var Workunit = /** @class */ (function (_super) {
5904
6234
  }
5905
6235
  return new XMLNode(command);
5906
6236
  }).catch(function (_) {
5907
- logger$2.error(_);
6237
+ logger$3.error(_);
5908
6238
  return Promise.resolve(new XMLNode(command));
5909
6239
  });
5910
6240
  };
@@ -6723,776 +7053,843 @@ var Machine = /** @class */ (function (_super) {
6723
7053
  return Machine;
6724
7054
  }(StateObject));
6725
7055
 
6726
- var QueryCache = /** @class */ (function (_super) {
6727
- __extends(QueryCache, _super);
6728
- function QueryCache() {
7056
+ var TargetClusterCache = /** @class */ (function (_super) {
7057
+ __extends(TargetClusterCache, _super);
7058
+ function TargetClusterCache() {
6729
7059
  return _super.call(this, function (obj) {
6730
- return Cache.hash([obj.QueryId, obj.QuerySet]);
7060
+ return "".concat(obj.BaseUrl, "-").concat(obj.Name);
6731
7061
  }) || this;
6732
7062
  }
6733
- return QueryCache;
7063
+ return TargetClusterCache;
6734
7064
  }(Cache));
6735
- var _queries = new QueryCache();
6736
- var Query = /** @class */ (function (_super) {
6737
- __extends(Query, _super);
6738
- function Query(optsConnection, querySet, queryID, queryDetails) {
7065
+ var _targetCluster = new TargetClusterCache();
7066
+ var TargetCluster = /** @class */ (function (_super) {
7067
+ __extends(TargetCluster, _super);
7068
+ function TargetCluster(optsConnection, name) {
6739
7069
  var _this = _super.call(this) || this;
6740
- if (optsConnection instanceof EclService) {
7070
+ if (optsConnection instanceof TopologyService) {
6741
7071
  _this.connection = optsConnection;
6742
- // this._topology = new Topology(this.connection.opts());
7072
+ _this.machineConnection = new MachineService(optsConnection.connectionOptions());
6743
7073
  }
6744
7074
  else {
6745
- _this.connection = new EclService(optsConnection);
6746
- // this._topology = new Topology(optsConnection);
7075
+ _this.connection = new TopologyService(optsConnection);
7076
+ _this.machineConnection = new MachineService(optsConnection);
6747
7077
  }
6748
- _this._wsWorkunits = new WorkunitsService(optsConnection);
6749
- _this.set(__assign({ QuerySet: querySet, QueryId: queryID }, queryDetails));
7078
+ _this.clear({
7079
+ Name: name
7080
+ });
6750
7081
  return _this;
6751
7082
  }
6752
- Object.defineProperty(Query.prototype, "BaseUrl", {
7083
+ Object.defineProperty(TargetCluster.prototype, "BaseUrl", {
6753
7084
  get: function () { return this.connection.baseUrl; },
6754
7085
  enumerable: false,
6755
7086
  configurable: true
6756
7087
  });
6757
- Object.defineProperty(Query.prototype, "properties", {
6758
- get: function () { return this.get(); },
6759
- enumerable: false,
6760
- configurable: true
6761
- });
6762
- Object.defineProperty(Query.prototype, "Exceptions", {
6763
- get: function () { return this.get("Exceptions"); },
6764
- enumerable: false,
6765
- configurable: true
6766
- });
6767
- Object.defineProperty(Query.prototype, "QueryId", {
6768
- get: function () { return this.get("QueryId"); },
6769
- enumerable: false,
6770
- configurable: true
6771
- });
6772
- Object.defineProperty(Query.prototype, "QuerySet", {
6773
- get: function () { return this.get("QuerySet"); },
6774
- enumerable: false,
6775
- configurable: true
6776
- });
6777
- Object.defineProperty(Query.prototype, "QueryName", {
6778
- get: function () { return this.get("QueryName"); },
6779
- enumerable: false,
6780
- configurable: true
6781
- });
6782
- Object.defineProperty(Query.prototype, "Wuid", {
6783
- get: function () { return this.get("Wuid"); },
6784
- enumerable: false,
6785
- configurable: true
6786
- });
6787
- Object.defineProperty(Query.prototype, "Dll", {
6788
- get: function () { return this.get("Dll"); },
6789
- enumerable: false,
6790
- configurable: true
6791
- });
6792
- Object.defineProperty(Query.prototype, "Suspended", {
6793
- get: function () { return this.get("Suspended"); },
6794
- enumerable: false,
6795
- configurable: true
6796
- });
6797
- Object.defineProperty(Query.prototype, "Activated", {
6798
- get: function () { return this.get("Activated"); },
6799
- enumerable: false,
6800
- configurable: true
6801
- });
6802
- Object.defineProperty(Query.prototype, "SuspendedBy", {
6803
- get: function () { return this.get("SuspendedBy"); },
6804
- enumerable: false,
6805
- configurable: true
6806
- });
6807
- Object.defineProperty(Query.prototype, "Clusters", {
6808
- get: function () { return this.get("Clusters"); },
6809
- enumerable: false,
6810
- configurable: true
6811
- });
6812
- Object.defineProperty(Query.prototype, "PublishedBy", {
6813
- get: function () { return this.get("PublishedBy"); },
6814
- enumerable: false,
6815
- configurable: true
6816
- });
6817
- Object.defineProperty(Query.prototype, "Comment", {
6818
- get: function () { return this.get("Comment"); },
6819
- enumerable: false,
6820
- configurable: true
6821
- });
6822
- Object.defineProperty(Query.prototype, "LogicalFiles", {
6823
- get: function () { return this.get("LogicalFiles"); },
6824
- enumerable: false,
6825
- configurable: true
6826
- });
6827
- Object.defineProperty(Query.prototype, "SuperFiles", {
6828
- get: function () { return this.get("SuperFiles"); },
7088
+ Object.defineProperty(TargetCluster.prototype, "Name", {
7089
+ get: function () { return this.get("Name"); },
6829
7090
  enumerable: false,
6830
7091
  configurable: true
6831
7092
  });
6832
- Object.defineProperty(Query.prototype, "IsLibrary", {
6833
- get: function () { return this.get("IsLibrary"); },
7093
+ Object.defineProperty(TargetCluster.prototype, "Prefix", {
7094
+ get: function () { return this.get("Prefix"); },
6834
7095
  enumerable: false,
6835
7096
  configurable: true
6836
7097
  });
6837
- Object.defineProperty(Query.prototype, "Priority", {
6838
- get: function () { return this.get("Priority"); },
7098
+ Object.defineProperty(TargetCluster.prototype, "Type", {
7099
+ get: function () { return this.get("Type"); },
6839
7100
  enumerable: false,
6840
7101
  configurable: true
6841
7102
  });
6842
- Object.defineProperty(Query.prototype, "WUSnapShot", {
6843
- get: function () { return this.get("WUSnapShot"); },
7103
+ Object.defineProperty(TargetCluster.prototype, "IsDefault", {
7104
+ get: function () { return this.get("IsDefault"); },
6844
7105
  enumerable: false,
6845
7106
  configurable: true
6846
7107
  });
6847
- Object.defineProperty(Query.prototype, "CompileTime", {
6848
- get: function () { return this.get("CompileTime"); },
7108
+ Object.defineProperty(TargetCluster.prototype, "TpClusters", {
7109
+ get: function () { return this.get("TpClusters"); },
6849
7110
  enumerable: false,
6850
7111
  configurable: true
6851
7112
  });
6852
- Object.defineProperty(Query.prototype, "LibrariesUsed", {
6853
- get: function () { return this.get("LibrariesUsed"); },
7113
+ Object.defineProperty(TargetCluster.prototype, "TpEclCCServers", {
7114
+ get: function () { return this.get("TpEclCCServers"); },
6854
7115
  enumerable: false,
6855
7116
  configurable: true
6856
7117
  });
6857
- Object.defineProperty(Query.prototype, "CountGraphs", {
6858
- get: function () { return this.get("CountGraphs"); },
7118
+ Object.defineProperty(TargetCluster.prototype, "TpEclServers", {
7119
+ get: function () { return this.get("TpEclServers"); },
6859
7120
  enumerable: false,
6860
7121
  configurable: true
6861
7122
  });
6862
- Object.defineProperty(Query.prototype, "ResourceURLCount", {
6863
- get: function () { return this.get("ResourceURLCount"); },
7123
+ Object.defineProperty(TargetCluster.prototype, "TpEclAgents", {
7124
+ get: function () { return this.get("TpEclAgents"); },
6864
7125
  enumerable: false,
6865
7126
  configurable: true
6866
7127
  });
6867
- Object.defineProperty(Query.prototype, "WsEclAddresses", {
6868
- get: function () { return this.get("WsEclAddresses"); },
7128
+ Object.defineProperty(TargetCluster.prototype, "TpEclSchedulers", {
7129
+ get: function () { return this.get("TpEclSchedulers"); },
6869
7130
  enumerable: false,
6870
7131
  configurable: true
6871
7132
  });
6872
- Object.defineProperty(Query.prototype, "WUGraphs", {
6873
- get: function () { return this.get("WUGraphs"); },
7133
+ Object.defineProperty(TargetCluster.prototype, "MachineInfoEx", {
7134
+ get: function () { return this.get("MachineInfoEx", []); },
6874
7135
  enumerable: false,
6875
7136
  configurable: true
6876
7137
  });
6877
- Object.defineProperty(Query.prototype, "WUTimers", {
6878
- get: function () { return this.get("WUTimers"); },
7138
+ Object.defineProperty(TargetCluster.prototype, "CMachineInfoEx", {
7139
+ get: function () {
7140
+ var _this = this;
7141
+ return this.MachineInfoEx.map(function (machineInfoEx) { return Machine.attach(_this.machineConnection, machineInfoEx.Address, machineInfoEx); });
7142
+ },
6879
7143
  enumerable: false,
6880
7144
  configurable: true
6881
7145
  });
6882
- Query.attach = function (optsConnection, querySet, queryId) {
6883
- var retVal = _queries.get({ BaseUrl: optsConnection.baseUrl, QuerySet: querySet, QueryId: queryId }, function () {
6884
- return new Query(optsConnection, querySet, queryId);
7146
+ TargetCluster.attach = function (optsConnection, name, state) {
7147
+ var retVal = _targetCluster.get({ BaseUrl: optsConnection.baseUrl, Name: name }, function () {
7148
+ return new TargetCluster(optsConnection, name);
6885
7149
  });
7150
+ if (state) {
7151
+ retVal.set(__assign({}, state));
7152
+ }
6886
7153
  return retVal;
6887
7154
  };
6888
- Query.prototype.fetchDetails = function () {
6889
- return __awaiter(this, void 0, void 0, function () {
6890
- var queryDetails;
6891
- return __generator(this, function (_a) {
6892
- switch (_a.label) {
6893
- case 0: return [4 /*yield*/, this._wsWorkunits.WUQueryDetails({
6894
- QuerySet: this.QuerySet,
6895
- QueryId: this.QueryId,
6896
- IncludeStateOnClusters: false,
6897
- IncludeSuperFiles: false,
6898
- IncludeWsEclAddresses: false,
6899
- CheckAllNodes: false
6900
- })];
6901
- case 1:
6902
- queryDetails = _a.sent();
6903
- this.set(__assign({}, queryDetails));
6904
- return [2 /*return*/];
6905
- }
6906
- });
6907
- });
6908
- };
6909
- Query.prototype.fetchRequestSchema = function () {
6910
- return __awaiter(this, void 0, void 0, function () {
6911
- var _a;
6912
- return __generator(this, function (_b) {
6913
- switch (_b.label) {
6914
- case 0:
6915
- _a = this;
6916
- return [4 /*yield*/, this.connection.requestJson(this.QuerySet, this.QueryId)];
6917
- case 1:
6918
- _a._requestSchema = _b.sent();
6919
- return [2 /*return*/];
7155
+ TargetCluster.prototype.fetchMachines = function (request) {
7156
+ var _this = this;
7157
+ if (request === void 0) { request = {}; }
7158
+ return this.machineConnection.GetTargetClusterInfo(__assign({ TargetClusters: {
7159
+ Item: ["".concat(this.Type, ":").concat(this.Name)]
7160
+ } }, request)).then(function (response) {
7161
+ var retVal = [];
7162
+ for (var _i = 0, _a = response.TargetClusterInfoList.TargetClusterInfo; _i < _a.length; _i++) {
7163
+ var machineInfo = _a[_i];
7164
+ for (var _b = 0, _c = machineInfo.Processes.MachineInfoEx; _b < _c.length; _b++) {
7165
+ var machineInfoEx = _c[_b];
7166
+ retVal.push(machineInfoEx);
6920
7167
  }
6921
- });
7168
+ }
7169
+ _this.set("MachineInfoEx", retVal);
7170
+ return _this.CMachineInfoEx;
6922
7171
  });
6923
7172
  };
6924
- Query.prototype.fetchResponseSchema = function () {
6925
- return __awaiter(this, void 0, void 0, function () {
6926
- var _a;
6927
- return __generator(this, function (_b) {
6928
- switch (_b.label) {
6929
- case 0:
6930
- _a = this;
6931
- return [4 /*yield*/, this.connection.responseJson(this.QuerySet, this.QueryId)];
6932
- case 1:
6933
- _a._responseSchema = _b.sent();
6934
- return [2 /*return*/];
6935
- }
6936
- });
6937
- });
6938
- };
6939
- Query.prototype.fetchSchema = function () {
6940
- return __awaiter(this, void 0, void 0, function () {
6941
- return __generator(this, function (_a) {
6942
- switch (_a.label) {
6943
- case 0: return [4 /*yield*/, Promise.all([this.fetchRequestSchema(), this.fetchResponseSchema()])];
6944
- case 1:
6945
- _a.sent();
6946
- return [2 /*return*/];
7173
+ TargetCluster.prototype.machineStats = function () {
7174
+ var maxDisk = 0;
7175
+ var totalFree = 0;
7176
+ var total = 0;
7177
+ for (var _i = 0, _a = this.CMachineInfoEx; _i < _a.length; _i++) {
7178
+ var machine = _a[_i];
7179
+ for (var _b = 0, _c = machine.Storage.StorageInfo; _b < _c.length; _b++) {
7180
+ var storageInfo = _c[_b];
7181
+ totalFree += storageInfo.Available;
7182
+ total += storageInfo.Total;
7183
+ var usage = 1 - storageInfo.Available / storageInfo.Total;
7184
+ if (usage > maxDisk) {
7185
+ maxDisk = usage;
6947
7186
  }
6948
- });
6949
- });
6950
- };
6951
- Query.prototype.fetchSummaryStats = function () {
6952
- return this._wsWorkunits.WUQueryGetSummaryStats({ Target: this.QuerySet, QueryId: this.QueryId });
6953
- };
6954
- Query.prototype.submit = function (request) {
6955
- return this.connection.submit(this.QuerySet, this.QueryId, request).then(function (results) {
6956
- for (var key in results) {
6957
- results[key] = results[key].Row;
6958
7187
  }
6959
- return results;
6960
- });
6961
- };
6962
- Query.prototype.refresh = function () {
6963
- return __awaiter(this, void 0, void 0, function () {
6964
- return __generator(this, function (_a) {
6965
- switch (_a.label) {
6966
- case 0: return [4 /*yield*/, Promise.all([
6967
- this.fetchDetails(),
6968
- this.fetchSchema()
6969
- ])];
6970
- case 1:
6971
- _a.sent();
6972
- return [2 /*return*/, this];
6973
- }
6974
- });
6975
- });
6976
- };
6977
- Query.prototype.requestFields = function () {
6978
- if (!this._requestSchema)
6979
- return [];
6980
- return this._requestSchema;
6981
- };
6982
- Query.prototype.responseFields = function () {
6983
- if (!this._responseSchema)
6984
- return {};
6985
- return this._responseSchema;
6986
- };
6987
- Query.prototype.resultNames = function () {
6988
- var retVal = [];
6989
- for (var key in this.responseFields()) {
6990
- retVal.push(key);
6991
7188
  }
6992
- return retVal;
7189
+ return {
7190
+ maxDisk: maxDisk,
7191
+ meanDisk: 1 - (total ? totalFree / total : 1)
7192
+ };
6993
7193
  };
6994
- Query.prototype.resultFields = function (resultName) {
6995
- if (!this._responseSchema[resultName])
6996
- return [];
6997
- return this._responseSchema[resultName];
7194
+ TargetCluster.prototype.fetchUsage = function () {
7195
+ return this.machineConnection.GetTargetClusterUsageEx([this.Name]);
6998
7196
  };
6999
- return Query;
7197
+ return TargetCluster;
7000
7198
  }(StateObject));
7199
+ function targetClusters(optsConnection) {
7200
+ var connection;
7201
+ if (optsConnection instanceof TopologyService) {
7202
+ connection = optsConnection;
7203
+ }
7204
+ else {
7205
+ connection = new TopologyService(optsConnection);
7206
+ }
7207
+ return connection.TpListTargetClusters({}).then(function (response) {
7208
+ return response.TargetClusters.TpClusterNameType.map(function (item) { return TargetCluster.attach(optsConnection, item.Name, item); });
7209
+ });
7210
+ }
7211
+ var _defaultTargetCluster = {};
7212
+ function defaultTargetCluster(optsConnection) {
7213
+ if (!_defaultTargetCluster[optsConnection.baseUrl]) {
7214
+ var connection = void 0;
7215
+ if (optsConnection instanceof TopologyService) {
7216
+ connection = optsConnection;
7217
+ }
7218
+ else {
7219
+ connection = new TopologyService(optsConnection);
7220
+ }
7221
+ _defaultTargetCluster[optsConnection.baseUrl] = connection.TpListTargetClusters({}).then(function (response) {
7222
+ var firstItem;
7223
+ var defaultItem;
7224
+ var hthorItem;
7225
+ response.TargetClusters.TpClusterNameType.forEach(function (item) {
7226
+ if (!firstItem) {
7227
+ firstItem = item;
7228
+ }
7229
+ if (!defaultItem && item.IsDefault === true) {
7230
+ defaultItem = item;
7231
+ }
7232
+ if (!hthorItem && item.Type === "hthor") {
7233
+ hthorItem = item;
7234
+ }
7235
+ });
7236
+ var defItem = defaultItem || hthorItem || firstItem;
7237
+ return TargetCluster.attach(optsConnection, defItem.Name, defItem);
7238
+ });
7239
+ }
7240
+ return _defaultTargetCluster[optsConnection.baseUrl];
7241
+ }
7001
7242
 
7002
- var StoreCache = /** @class */ (function (_super) {
7003
- __extends(StoreCache, _super);
7004
- function StoreCache() {
7243
+ var TopologyCache = /** @class */ (function (_super) {
7244
+ __extends(TopologyCache, _super);
7245
+ function TopologyCache() {
7005
7246
  return _super.call(this, function (obj) {
7006
- return "".concat(obj.BaseUrl, "-").concat(obj.Name, ":").concat(obj.UserSpecific, "-").concat(obj.Namespace);
7247
+ return obj.BaseUrl;
7007
7248
  }) || this;
7008
7249
  }
7009
- return StoreCache;
7250
+ return TopologyCache;
7010
7251
  }(Cache));
7011
- var _store = new StoreCache();
7012
- var ValueChangedMessage = /** @class */ (function (_super) {
7013
- __extends(ValueChangedMessage, _super);
7014
- function ValueChangedMessage(key, value, oldValue) {
7252
+ var _topology = new TopologyCache();
7253
+ var Topology = /** @class */ (function (_super) {
7254
+ __extends(Topology, _super);
7255
+ function Topology(optsConnection) {
7015
7256
  var _this = _super.call(this) || this;
7016
- _this.key = key;
7017
- _this.value = value;
7018
- _this.oldValue = oldValue;
7019
- return _this;
7020
- }
7021
- Object.defineProperty(ValueChangedMessage.prototype, "canConflate", {
7022
- get: function () { return true; },
7023
- enumerable: false,
7024
- configurable: true
7025
- });
7026
- ValueChangedMessage.prototype.conflate = function (other) {
7027
- if (this.key === other.key) {
7028
- this.value = other.value;
7029
- return true;
7030
- }
7031
- return false;
7032
- };
7033
- ValueChangedMessage.prototype.void = function () {
7034
- return this.value === this.oldValue;
7035
- };
7036
- return ValueChangedMessage;
7037
- }(Message));
7038
- var Store = /** @class */ (function () {
7039
- function Store(optsConnection, Name, Namespace, UserSpecific) {
7040
- this._dispatch = new Dispatch();
7041
- this._knownValues = {};
7042
- if (optsConnection instanceof StoreService) {
7043
- this.connection = optsConnection;
7257
+ if (optsConnection instanceof TopologyService) {
7258
+ _this.connection = optsConnection;
7044
7259
  }
7045
7260
  else {
7046
- this.connection = new StoreService(optsConnection);
7261
+ _this.connection = new TopologyService(optsConnection);
7047
7262
  }
7048
- this.Name = Name;
7049
- this.UserSpecific = UserSpecific;
7050
- this.Namespace = Namespace;
7263
+ return _this;
7051
7264
  }
7052
- Object.defineProperty(Store.prototype, "BaseUrl", {
7265
+ Object.defineProperty(Topology.prototype, "BaseUrl", {
7053
7266
  get: function () { return this.connection.baseUrl; },
7054
7267
  enumerable: false,
7055
7268
  configurable: true
7056
7269
  });
7057
- Store.attach = function (optsConnection, Name, Namespace, UserSpecific) {
7058
- if (Name === void 0) { Name = "HPCCApps"; }
7059
- if (UserSpecific === void 0) { UserSpecific = true; }
7060
- var retVal = _store.get({ BaseUrl: optsConnection.baseUrl, Name: Name, UserSpecific: UserSpecific, Namespace: Namespace }, function () {
7061
- return new Store(optsConnection, Name, Namespace, UserSpecific);
7270
+ Object.defineProperty(Topology.prototype, "properties", {
7271
+ // Accessors ---
7272
+ get: function () { return this.get(); },
7273
+ enumerable: false,
7274
+ configurable: true
7275
+ });
7276
+ Object.defineProperty(Topology.prototype, "TargetClusters", {
7277
+ get: function () { return this.get("TargetClusters"); },
7278
+ enumerable: false,
7279
+ configurable: true
7280
+ });
7281
+ Object.defineProperty(Topology.prototype, "CTargetClusters", {
7282
+ get: function () {
7283
+ var _this = this;
7284
+ return this.TargetClusters.map(function (tc) { return TargetCluster.attach(_this.connection, tc.Name, tc); });
7285
+ },
7286
+ enumerable: false,
7287
+ configurable: true
7288
+ });
7289
+ Object.defineProperty(Topology.prototype, "LogicalClusters", {
7290
+ get: function () { return this.get("LogicalClusters"); },
7291
+ enumerable: false,
7292
+ configurable: true
7293
+ });
7294
+ Object.defineProperty(Topology.prototype, "Services", {
7295
+ get: function () { return this.get("Services"); },
7296
+ enumerable: false,
7297
+ configurable: true
7298
+ });
7299
+ Topology.attach = function (optsConnection) {
7300
+ var retVal = _topology.get({ BaseUrl: optsConnection.baseUrl }, function () {
7301
+ return new Topology(optsConnection);
7062
7302
  });
7063
7303
  return retVal;
7064
7304
  };
7065
- Store.prototype.create = function () {
7066
- this.connection.CreateStore({ Name: this.Name, UserSpecific: this.UserSpecific, Type: "", Description: "" });
7067
- };
7068
- Store.prototype.set = function (key, value, broadcast) {
7305
+ Topology.prototype.GetESPServiceBaseURL = function (type) {
7069
7306
  var _this = this;
7070
- if (broadcast === void 0) { broadcast = true; }
7071
- return this.connection.Set({
7072
- StoreName: this.Name,
7073
- UserSpecific: this.UserSpecific,
7074
- Namespace: this.Namespace,
7075
- Key: key,
7076
- Value: value
7077
- }).then(function (response) {
7078
- var oldValue = _this._knownValues[key];
7079
- _this._knownValues[key] = value;
7080
- if (broadcast) {
7081
- _this._dispatch.post(new ValueChangedMessage(key, value, oldValue));
7307
+ if (type === void 0) { type = ""; }
7308
+ return this.connection.TpServiceQuery({}).then(function (response) {
7309
+ var rootProtocol = _this.connection.protocol();
7310
+ var ip = _this.connection.ip();
7311
+ var port = rootProtocol === "https:" ? "18002" : "8002";
7312
+ if (exists("ServiceList.TpEspServers.TpEspServer", response)) {
7313
+ for (var _i = 0, _a = response.ServiceList.TpEspServers.TpEspServer; _i < _a.length; _i++) {
7314
+ var item = _a[_i];
7315
+ if (exists("TpBindings.TpBinding", item)) {
7316
+ for (var _b = 0, _c = item.TpBindings.TpBinding; _b < _c.length; _b++) {
7317
+ var binding = _c[_b];
7318
+ if (binding.Service === type && binding.Protocol + ":" === rootProtocol) {
7319
+ port = binding.Port;
7320
+ }
7321
+ }
7322
+ }
7323
+ }
7082
7324
  }
7083
- }).catch(function (e) {
7084
- console.error("Store.set(\"".concat(key, "\", \"").concat(value, "\") failed:"), e);
7325
+ return "".concat(rootProtocol, "//").concat(ip, ":").concat(port, "/");
7085
7326
  });
7086
7327
  };
7087
- Store.prototype.get = function (key, broadcast) {
7328
+ Topology.prototype.fetchTargetClusters = function () {
7088
7329
  var _this = this;
7089
- if (broadcast === void 0) { broadcast = true; }
7090
- return this.connection.Fetch({
7091
- StoreName: this.Name,
7092
- UserSpecific: this.UserSpecific,
7093
- Namespace: this.Namespace,
7094
- Key: key
7095
- }).then(function (response) {
7096
- var oldValue = _this._knownValues[key];
7097
- _this._knownValues[key] = response.Value;
7098
- if (broadcast) {
7099
- _this._dispatch.post(new ValueChangedMessage(key, response.Value, oldValue));
7100
- }
7101
- return response.Value;
7102
- }).catch(function (e) {
7103
- console.error("Store.get(".concat(key, ") failed:"), e);
7104
- return undefined;
7330
+ return this.connection.TpTargetClusterQuery({ Type: "ROOT" }).then(function (response) {
7331
+ var _a, _b;
7332
+ _this.set({
7333
+ TargetClusters: (_b = (_a = response.TpTargetClusters) === null || _a === void 0 ? void 0 : _a.TpTargetCluster) !== null && _b !== void 0 ? _b : []
7334
+ });
7335
+ return _this.CTargetClusters;
7105
7336
  });
7106
7337
  };
7107
- Store.prototype.getAll = function (broadcast) {
7338
+ Topology.prototype.fetchLogicalClusters = function (request) {
7108
7339
  var _this = this;
7109
- if (broadcast === void 0) { broadcast = true; }
7110
- return this.connection.FetchAll({
7111
- StoreName: this.Name,
7112
- UserSpecific: this.UserSpecific,
7113
- Namespace: this.Namespace
7114
- }).then(function (response) {
7115
- var retVal = {};
7116
- var deletedValues = _this._knownValues;
7117
- _this._knownValues = {};
7118
- response.Pairs.Pair.forEach(function (pair) {
7119
- var oldValue = _this._knownValues[pair.Key];
7120
- _this._knownValues[pair.Key] = pair.Value;
7121
- delete deletedValues[pair.Key];
7122
- retVal[pair.Key] = pair.Value;
7123
- if (broadcast) {
7124
- _this._dispatch.post(new ValueChangedMessage(pair.Key, pair.Value, oldValue));
7125
- }
7340
+ if (request === void 0) { request = {}; }
7341
+ return this.connection.TpLogicalClusterQuery(request).then(function (response) {
7342
+ _this.set({
7343
+ LogicalClusters: response.TpLogicalClusters.TpLogicalCluster
7126
7344
  });
7127
- if (broadcast) {
7128
- for (var key in deletedValues) {
7129
- _this._dispatch.post(new ValueChangedMessage(key, undefined, deletedValues[key]));
7130
- }
7131
- }
7132
- return retVal;
7133
- }).catch(function (e) {
7134
- console.error("Store.getAll failed:", e);
7135
- return {};
7345
+ return _this.LogicalClusters;
7136
7346
  });
7137
7347
  };
7138
- Store.prototype.delete = function (key, broadcast) {
7348
+ Topology.prototype.fetchServices = function (request) {
7139
7349
  var _this = this;
7140
- if (broadcast === void 0) { broadcast = true; }
7141
- return this.connection.Delete({
7142
- StoreName: this.Name,
7143
- UserSpecific: this.UserSpecific,
7144
- Namespace: this.Namespace,
7145
- Key: key
7146
- }).then(function (response) {
7147
- var oldValue = _this._knownValues[key];
7148
- delete _this._knownValues[key];
7149
- if (broadcast) {
7150
- _this._dispatch.post(new ValueChangedMessage(key, undefined, oldValue));
7151
- }
7152
- }).catch(function (e) {
7153
- console.error("Store.delete(".concat(key, ") failed:"), e);
7350
+ if (request === void 0) { request = {}; }
7351
+ return this.connection.TpServiceQuery(request).then(function (response) {
7352
+ _this.set({
7353
+ Services: response.ServiceList
7354
+ });
7355
+ return _this.Services;
7154
7356
  });
7155
7357
  };
7156
- Store.prototype.monitor = function (callback) {
7157
- return this._dispatch.attach(callback);
7358
+ Topology.prototype.refresh = function (force) {
7359
+ var _this = this;
7360
+ if (force === void 0) { force = false; }
7361
+ if (!this._prevRefresh || force) {
7362
+ this._prevRefresh = Promise.all([this.fetchTargetClusters(), this.fetchLogicalClusters(), this.fetchServices()]).then(function () {
7363
+ return _this;
7364
+ });
7365
+ }
7366
+ return this._prevRefresh;
7158
7367
  };
7159
- return Store;
7160
- }());
7368
+ // Monitoring ---
7369
+ // Events ---
7370
+ Topology.prototype.on = function (eventID, propIDorCallback, callback) {
7371
+ if (this.isCallback(propIDorCallback)) {
7372
+ switch (eventID) {
7373
+ case "changed":
7374
+ _super.prototype.on.call(this, eventID, propIDorCallback);
7375
+ break;
7376
+ }
7377
+ }
7378
+ else {
7379
+ switch (eventID) {
7380
+ case "changed":
7381
+ _super.prototype.on.call(this, eventID, propIDorCallback, callback);
7382
+ break;
7383
+ }
7384
+ }
7385
+ this._monitor();
7386
+ return this;
7387
+ };
7388
+ return Topology;
7389
+ }(StateObject));
7161
7390
 
7162
- var TargetClusterCache = /** @class */ (function (_super) {
7163
- __extends(TargetClusterCache, _super);
7164
- function TargetClusterCache() {
7391
+ var logger$2 = scopedLogger("@hpcc-js/comms/ecl/query.ts");
7392
+ var QueryCache = /** @class */ (function (_super) {
7393
+ __extends(QueryCache, _super);
7394
+ function QueryCache() {
7165
7395
  return _super.call(this, function (obj) {
7166
- return "".concat(obj.BaseUrl, "-").concat(obj.Name);
7396
+ return Cache.hash([obj.QueryId, obj.QuerySet]);
7167
7397
  }) || this;
7168
7398
  }
7169
- return TargetClusterCache;
7399
+ return QueryCache;
7170
7400
  }(Cache));
7171
- var _targetCluster = new TargetClusterCache();
7172
- var TargetCluster = /** @class */ (function (_super) {
7173
- __extends(TargetCluster, _super);
7174
- function TargetCluster(optsConnection, name) {
7401
+ var _queries = new QueryCache();
7402
+ var Query = /** @class */ (function (_super) {
7403
+ __extends(Query, _super);
7404
+ function Query(optsConnection, querySet, queryID, queryDetails) {
7175
7405
  var _this = _super.call(this) || this;
7176
- if (optsConnection instanceof TopologyService) {
7177
- _this.connection = optsConnection;
7178
- _this.machineConnection = new MachineService(optsConnection.connectionOptions());
7406
+ if (optsConnection instanceof WorkunitsService) {
7407
+ _this.wsWorkunitsService = optsConnection;
7179
7408
  }
7180
7409
  else {
7181
- _this.connection = new TopologyService(optsConnection);
7182
- _this.machineConnection = new MachineService(optsConnection);
7410
+ _this.wsWorkunitsService = new WorkunitsService(optsConnection);
7183
7411
  }
7184
- _this.clear({
7185
- Name: name
7186
- });
7412
+ _this.topology = Topology.attach(_this.wsWorkunitsService.opts());
7413
+ _this.set(__assign({ QuerySet: querySet, QueryId: queryID }, queryDetails));
7187
7414
  return _this;
7188
7415
  }
7189
- Object.defineProperty(TargetCluster.prototype, "BaseUrl", {
7190
- get: function () { return this.connection.baseUrl; },
7416
+ Object.defineProperty(Query.prototype, "BaseUrl", {
7417
+ get: function () { return this.wsWorkunitsService.baseUrl; },
7418
+ enumerable: false,
7419
+ configurable: true
7420
+ });
7421
+ Object.defineProperty(Query.prototype, "properties", {
7422
+ get: function () { return this.get(); },
7423
+ enumerable: false,
7424
+ configurable: true
7425
+ });
7426
+ Object.defineProperty(Query.prototype, "Exceptions", {
7427
+ get: function () { return this.get("Exceptions"); },
7428
+ enumerable: false,
7429
+ configurable: true
7430
+ });
7431
+ Object.defineProperty(Query.prototype, "QueryId", {
7432
+ get: function () { return this.get("QueryId"); },
7433
+ enumerable: false,
7434
+ configurable: true
7435
+ });
7436
+ Object.defineProperty(Query.prototype, "QuerySet", {
7437
+ get: function () { return this.get("QuerySet"); },
7438
+ enumerable: false,
7439
+ configurable: true
7440
+ });
7441
+ Object.defineProperty(Query.prototype, "QueryName", {
7442
+ get: function () { return this.get("QueryName"); },
7443
+ enumerable: false,
7444
+ configurable: true
7445
+ });
7446
+ Object.defineProperty(Query.prototype, "Wuid", {
7447
+ get: function () { return this.get("Wuid"); },
7448
+ enumerable: false,
7449
+ configurable: true
7450
+ });
7451
+ Object.defineProperty(Query.prototype, "Dll", {
7452
+ get: function () { return this.get("Dll"); },
7453
+ enumerable: false,
7454
+ configurable: true
7455
+ });
7456
+ Object.defineProperty(Query.prototype, "Suspended", {
7457
+ get: function () { return this.get("Suspended"); },
7458
+ enumerable: false,
7459
+ configurable: true
7460
+ });
7461
+ Object.defineProperty(Query.prototype, "Activated", {
7462
+ get: function () { return this.get("Activated"); },
7463
+ enumerable: false,
7464
+ configurable: true
7465
+ });
7466
+ Object.defineProperty(Query.prototype, "SuspendedBy", {
7467
+ get: function () { return this.get("SuspendedBy"); },
7468
+ enumerable: false,
7469
+ configurable: true
7470
+ });
7471
+ Object.defineProperty(Query.prototype, "Clusters", {
7472
+ get: function () { return this.get("Clusters"); },
7473
+ enumerable: false,
7474
+ configurable: true
7475
+ });
7476
+ Object.defineProperty(Query.prototype, "PublishedBy", {
7477
+ get: function () { return this.get("PublishedBy"); },
7478
+ enumerable: false,
7479
+ configurable: true
7480
+ });
7481
+ Object.defineProperty(Query.prototype, "Comment", {
7482
+ get: function () { return this.get("Comment"); },
7191
7483
  enumerable: false,
7192
7484
  configurable: true
7193
7485
  });
7194
- Object.defineProperty(TargetCluster.prototype, "Name", {
7195
- get: function () { return this.get("Name"); },
7486
+ Object.defineProperty(Query.prototype, "LogicalFiles", {
7487
+ get: function () { return this.get("LogicalFiles"); },
7196
7488
  enumerable: false,
7197
7489
  configurable: true
7198
7490
  });
7199
- Object.defineProperty(TargetCluster.prototype, "Prefix", {
7200
- get: function () { return this.get("Prefix"); },
7491
+ Object.defineProperty(Query.prototype, "SuperFiles", {
7492
+ get: function () { return this.get("SuperFiles"); },
7201
7493
  enumerable: false,
7202
7494
  configurable: true
7203
7495
  });
7204
- Object.defineProperty(TargetCluster.prototype, "Type", {
7205
- get: function () { return this.get("Type"); },
7496
+ Object.defineProperty(Query.prototype, "IsLibrary", {
7497
+ get: function () { return this.get("IsLibrary"); },
7206
7498
  enumerable: false,
7207
7499
  configurable: true
7208
7500
  });
7209
- Object.defineProperty(TargetCluster.prototype, "IsDefault", {
7210
- get: function () { return this.get("IsDefault"); },
7501
+ Object.defineProperty(Query.prototype, "Priority", {
7502
+ get: function () { return this.get("Priority"); },
7211
7503
  enumerable: false,
7212
7504
  configurable: true
7213
7505
  });
7214
- Object.defineProperty(TargetCluster.prototype, "TpClusters", {
7215
- get: function () { return this.get("TpClusters"); },
7506
+ Object.defineProperty(Query.prototype, "WUSnapShot", {
7507
+ get: function () { return this.get("WUSnapShot"); },
7216
7508
  enumerable: false,
7217
7509
  configurable: true
7218
7510
  });
7219
- Object.defineProperty(TargetCluster.prototype, "TpEclCCServers", {
7220
- get: function () { return this.get("TpEclCCServers"); },
7511
+ Object.defineProperty(Query.prototype, "CompileTime", {
7512
+ get: function () { return this.get("CompileTime"); },
7221
7513
  enumerable: false,
7222
7514
  configurable: true
7223
7515
  });
7224
- Object.defineProperty(TargetCluster.prototype, "TpEclServers", {
7225
- get: function () { return this.get("TpEclServers"); },
7516
+ Object.defineProperty(Query.prototype, "LibrariesUsed", {
7517
+ get: function () { return this.get("LibrariesUsed"); },
7226
7518
  enumerable: false,
7227
7519
  configurable: true
7228
7520
  });
7229
- Object.defineProperty(TargetCluster.prototype, "TpEclAgents", {
7230
- get: function () { return this.get("TpEclAgents"); },
7521
+ Object.defineProperty(Query.prototype, "CountGraphs", {
7522
+ get: function () { return this.get("CountGraphs"); },
7231
7523
  enumerable: false,
7232
7524
  configurable: true
7233
7525
  });
7234
- Object.defineProperty(TargetCluster.prototype, "TpEclSchedulers", {
7235
- get: function () { return this.get("TpEclSchedulers"); },
7526
+ Object.defineProperty(Query.prototype, "ResourceURLCount", {
7527
+ get: function () { return this.get("ResourceURLCount"); },
7236
7528
  enumerable: false,
7237
7529
  configurable: true
7238
7530
  });
7239
- Object.defineProperty(TargetCluster.prototype, "MachineInfoEx", {
7240
- get: function () { return this.get("MachineInfoEx", []); },
7531
+ Object.defineProperty(Query.prototype, "WsEclAddresses", {
7532
+ get: function () { return this.get("WsEclAddresses"); },
7241
7533
  enumerable: false,
7242
7534
  configurable: true
7243
7535
  });
7244
- Object.defineProperty(TargetCluster.prototype, "CMachineInfoEx", {
7245
- get: function () {
7246
- var _this = this;
7247
- return this.MachineInfoEx.map(function (machineInfoEx) { return Machine.attach(_this.machineConnection, machineInfoEx.Address, machineInfoEx); });
7248
- },
7536
+ Object.defineProperty(Query.prototype, "WUGraphs", {
7537
+ get: function () { return this.get("WUGraphs"); },
7249
7538
  enumerable: false,
7250
7539
  configurable: true
7251
7540
  });
7252
- TargetCluster.attach = function (optsConnection, name, state) {
7253
- var retVal = _targetCluster.get({ BaseUrl: optsConnection.baseUrl, Name: name }, function () {
7254
- return new TargetCluster(optsConnection, name);
7541
+ Object.defineProperty(Query.prototype, "WUTimers", {
7542
+ get: function () { return this.get("WUTimers"); },
7543
+ enumerable: false,
7544
+ configurable: true
7545
+ });
7546
+ Query.attach = function (optsConnection, querySet, queryId) {
7547
+ var retVal = _queries.get({ BaseUrl: optsConnection.baseUrl, QuerySet: querySet, QueryId: queryId }, function () {
7548
+ return new Query(optsConnection, querySet, queryId);
7255
7549
  });
7256
- if (state) {
7257
- retVal.set(__assign({}, state));
7258
- }
7259
7550
  return retVal;
7260
7551
  };
7261
- TargetCluster.prototype.fetchMachines = function (request) {
7262
- var _this = this;
7263
- if (request === void 0) { request = {}; }
7264
- return this.machineConnection.GetTargetClusterInfo(__assign({ TargetClusters: {
7265
- Item: ["".concat(this.Type, ":").concat(this.Name)]
7266
- } }, request)).then(function (response) {
7267
- var retVal = [];
7268
- for (var _i = 0, _a = response.TargetClusterInfoList.TargetClusterInfo; _i < _a.length; _i++) {
7269
- var machineInfo = _a[_i];
7270
- for (var _b = 0, _c = machineInfo.Processes.MachineInfoEx; _b < _c.length; _b++) {
7271
- var machineInfoEx = _c[_b];
7272
- retVal.push(machineInfoEx);
7552
+ Query.prototype.wsEclService = function () {
7553
+ return __awaiter(this, void 0, void 0, function () {
7554
+ return __generator(this, function (_a) {
7555
+ if (!this._eclService) {
7556
+ this._eclService = this.topology.fetchServices({}).then(function (services) {
7557
+ var _a, _b, _c, _d;
7558
+ for (var _i = 0, _e = (_b = (_a = services === null || services === void 0 ? void 0 : services.TpEspServers) === null || _a === void 0 ? void 0 : _a.TpEspServer) !== null && _b !== void 0 ? _b : []; _i < _e.length; _i++) {
7559
+ var espServer = _e[_i];
7560
+ for (var _f = 0, _g = (_d = (_c = espServer === null || espServer === void 0 ? void 0 : espServer.TpBindings) === null || _c === void 0 ? void 0 : _c.TpBinding) !== null && _d !== void 0 ? _d : []; _f < _g.length; _f++) {
7561
+ var binding = _g[_f];
7562
+ if ((binding === null || binding === void 0 ? void 0 : binding.Service) === "ws_ecl") {
7563
+ var baseUrl = "".concat(binding.Protocol, "://").concat(globalThis.location.hostname, ":").concat(binding.Port);
7564
+ return new EclService({ baseUrl: baseUrl });
7565
+ }
7566
+ }
7567
+ }
7568
+ return undefined;
7569
+ });
7273
7570
  }
7274
- }
7275
- _this.set("MachineInfoEx", retVal);
7276
- return _this.CMachineInfoEx;
7571
+ return [2 /*return*/, this._eclService];
7572
+ });
7277
7573
  });
7278
7574
  };
7279
- TargetCluster.prototype.machineStats = function () {
7280
- var maxDisk = 0;
7281
- var totalFree = 0;
7282
- var total = 0;
7283
- for (var _i = 0, _a = this.CMachineInfoEx; _i < _a.length; _i++) {
7284
- var machine = _a[_i];
7285
- for (var _b = 0, _c = machine.Storage.StorageInfo; _b < _c.length; _b++) {
7286
- var storageInfo = _c[_b];
7287
- totalFree += storageInfo.Available;
7288
- total += storageInfo.Total;
7289
- var usage = 1 - storageInfo.Available / storageInfo.Total;
7290
- if (usage > maxDisk) {
7291
- maxDisk = usage;
7575
+ Query.prototype.fetchDetails = function () {
7576
+ return __awaiter(this, void 0, void 0, function () {
7577
+ var queryDetails;
7578
+ return __generator(this, function (_a) {
7579
+ switch (_a.label) {
7580
+ case 0: return [4 /*yield*/, this.wsWorkunitsService.WUQueryDetails({
7581
+ QuerySet: this.QuerySet,
7582
+ QueryId: this.QueryId,
7583
+ IncludeStateOnClusters: true,
7584
+ IncludeSuperFiles: true,
7585
+ IncludeWsEclAddresses: true,
7586
+ CheckAllNodes: false
7587
+ })];
7588
+ case 1:
7589
+ queryDetails = _a.sent();
7590
+ this.set(__assign({}, queryDetails));
7591
+ return [2 /*return*/];
7292
7592
  }
7293
- }
7294
- }
7295
- return {
7296
- maxDisk: maxDisk,
7297
- meanDisk: 1 - (total ? totalFree / total : 1)
7298
- };
7593
+ });
7594
+ });
7299
7595
  };
7300
- TargetCluster.prototype.fetchUsage = function () {
7301
- return this.machineConnection.GetTargetClusterUsageEx([this.Name]);
7596
+ Query.prototype.fetchRequestSchema = function () {
7597
+ var _a;
7598
+ return __awaiter(this, void 0, void 0, function () {
7599
+ var wsEclService, _b, e_1;
7600
+ return __generator(this, function (_c) {
7601
+ switch (_c.label) {
7602
+ case 0: return [4 /*yield*/, this.wsEclService()];
7603
+ case 1:
7604
+ wsEclService = _c.sent();
7605
+ _c.label = 2;
7606
+ case 2:
7607
+ _c.trys.push([2, 4, , 5]);
7608
+ _b = this;
7609
+ return [4 /*yield*/, (wsEclService === null || wsEclService === void 0 ? void 0 : wsEclService.requestJson(this.QuerySet, this.QueryId))];
7610
+ case 3:
7611
+ _b._requestSchema = (_a = _c.sent()) !== null && _a !== void 0 ? _a : [];
7612
+ return [3 /*break*/, 5];
7613
+ case 4:
7614
+ e_1 = _c.sent();
7615
+ // See: https://track.hpccsystems.com/browse/HPCC-29827
7616
+ logger$2.debug(e_1);
7617
+ this._requestSchema = [];
7618
+ return [3 /*break*/, 5];
7619
+ case 5: return [2 /*return*/];
7620
+ }
7621
+ });
7622
+ });
7302
7623
  };
7303
- return TargetCluster;
7304
- }(StateObject));
7305
- function targetClusters(optsConnection) {
7306
- var connection;
7307
- if (optsConnection instanceof TopologyService) {
7308
- connection = optsConnection;
7309
- }
7310
- else {
7311
- connection = new TopologyService(optsConnection);
7312
- }
7313
- return connection.TpListTargetClusters({}).then(function (response) {
7314
- return response.TargetClusters.TpClusterNameType.map(function (item) { return TargetCluster.attach(optsConnection, item.Name, item); });
7315
- });
7316
- }
7317
- var _defaultTargetCluster = {};
7318
- function defaultTargetCluster(optsConnection) {
7319
- if (!_defaultTargetCluster[optsConnection.baseUrl]) {
7320
- var connection = void 0;
7321
- if (optsConnection instanceof TopologyService) {
7322
- connection = optsConnection;
7323
- }
7324
- else {
7325
- connection = new TopologyService(optsConnection);
7326
- }
7327
- _defaultTargetCluster[optsConnection.baseUrl] = connection.TpListTargetClusters({}).then(function (response) {
7328
- var firstItem;
7329
- var defaultItem;
7330
- var hthorItem;
7331
- response.TargetClusters.TpClusterNameType.forEach(function (item) {
7332
- if (!firstItem) {
7333
- firstItem = item;
7624
+ Query.prototype.fetchResponseSchema = function () {
7625
+ var _a;
7626
+ return __awaiter(this, void 0, void 0, function () {
7627
+ var wsEclService, _b, e_2;
7628
+ return __generator(this, function (_c) {
7629
+ switch (_c.label) {
7630
+ case 0: return [4 /*yield*/, this.wsEclService()];
7631
+ case 1:
7632
+ wsEclService = _c.sent();
7633
+ _c.label = 2;
7634
+ case 2:
7635
+ _c.trys.push([2, 4, , 5]);
7636
+ _b = this;
7637
+ return [4 /*yield*/, (wsEclService === null || wsEclService === void 0 ? void 0 : wsEclService.responseJson(this.QuerySet, this.QueryId))];
7638
+ case 3:
7639
+ _b._responseSchema = (_a = _c.sent()) !== null && _a !== void 0 ? _a : {};
7640
+ return [3 /*break*/, 5];
7641
+ case 4:
7642
+ e_2 = _c.sent();
7643
+ // See: https://track.hpccsystems.com/browse/HPCC-29827
7644
+ logger$2.debug(e_2);
7645
+ this._responseSchema = {};
7646
+ return [3 /*break*/, 5];
7647
+ case 5: return [2 /*return*/];
7334
7648
  }
7335
- if (!defaultItem && item.IsDefault === true) {
7336
- defaultItem = item;
7649
+ });
7650
+ });
7651
+ };
7652
+ Query.prototype.fetchSchema = function () {
7653
+ return __awaiter(this, void 0, void 0, function () {
7654
+ return __generator(this, function (_a) {
7655
+ switch (_a.label) {
7656
+ case 0: return [4 /*yield*/, Promise.all([this.fetchRequestSchema(), this.fetchResponseSchema()])];
7657
+ case 1:
7658
+ _a.sent();
7659
+ return [2 /*return*/];
7337
7660
  }
7338
- if (!hthorItem && item.Type === "hthor") {
7339
- hthorItem = item;
7661
+ });
7662
+ });
7663
+ };
7664
+ Query.prototype.fetchSummaryStats = function () {
7665
+ return this.wsWorkunitsService.WUQueryGetSummaryStats({ Target: this.QuerySet, QueryId: this.QueryId });
7666
+ };
7667
+ Query.prototype.submit = function (request) {
7668
+ var _a;
7669
+ return __awaiter(this, void 0, void 0, function () {
7670
+ var wsEclService;
7671
+ return __generator(this, function (_b) {
7672
+ switch (_b.label) {
7673
+ case 0: return [4 /*yield*/, this.wsEclService()];
7674
+ case 1:
7675
+ wsEclService = _b.sent();
7676
+ try {
7677
+ return [2 /*return*/, (_a = wsEclService === null || wsEclService === void 0 ? void 0 : wsEclService.submit(this.QuerySet, this.QueryId, request).then(function (results) {
7678
+ for (var key in results) {
7679
+ results[key] = results[key].Row;
7680
+ }
7681
+ return results;
7682
+ })) !== null && _a !== void 0 ? _a : []];
7683
+ }
7684
+ catch (e) {
7685
+ // See: https://track.hpccsystems.com/browse/HPCC-29827
7686
+ logger$2.debug(e);
7687
+ return [2 /*return*/, []];
7688
+ }
7689
+ return [2 /*return*/];
7340
7690
  }
7341
7691
  });
7342
- var defItem = defaultItem || hthorItem || firstItem;
7343
- return TargetCluster.attach(optsConnection, defItem.Name, defItem);
7344
7692
  });
7345
- }
7346
- return _defaultTargetCluster[optsConnection.baseUrl];
7347
- }
7693
+ };
7694
+ Query.prototype.refresh = function () {
7695
+ return __awaiter(this, void 0, void 0, function () {
7696
+ return __generator(this, function (_a) {
7697
+ switch (_a.label) {
7698
+ case 0: return [4 /*yield*/, Promise.all([
7699
+ this.fetchDetails(),
7700
+ this.fetchSchema()
7701
+ ])];
7702
+ case 1:
7703
+ _a.sent();
7704
+ return [2 /*return*/, this];
7705
+ }
7706
+ });
7707
+ });
7708
+ };
7709
+ Query.prototype.requestFields = function () {
7710
+ if (!this._requestSchema)
7711
+ return [];
7712
+ return this._requestSchema;
7713
+ };
7714
+ Query.prototype.responseFields = function () {
7715
+ if (!this._responseSchema)
7716
+ return {};
7717
+ return this._responseSchema;
7718
+ };
7719
+ Query.prototype.resultNames = function () {
7720
+ var retVal = [];
7721
+ for (var key in this.responseFields()) {
7722
+ retVal.push(key);
7723
+ }
7724
+ return retVal;
7725
+ };
7726
+ Query.prototype.resultFields = function (resultName) {
7727
+ if (!this._responseSchema[resultName])
7728
+ return [];
7729
+ return this._responseSchema[resultName];
7730
+ };
7731
+ return Query;
7732
+ }(StateObject));
7348
7733
 
7349
- var TopologyCache = /** @class */ (function (_super) {
7350
- __extends(TopologyCache, _super);
7351
- function TopologyCache() {
7734
+ var StoreCache = /** @class */ (function (_super) {
7735
+ __extends(StoreCache, _super);
7736
+ function StoreCache() {
7352
7737
  return _super.call(this, function (obj) {
7353
- return obj.BaseUrl;
7738
+ return "".concat(obj.BaseUrl, "-").concat(obj.Name, ":").concat(obj.UserSpecific, "-").concat(obj.Namespace);
7354
7739
  }) || this;
7355
7740
  }
7356
- return TopologyCache;
7741
+ return StoreCache;
7357
7742
  }(Cache));
7358
- var _topology = new TopologyCache();
7359
- var Topology = /** @class */ (function (_super) {
7360
- __extends(Topology, _super);
7361
- function Topology(optsConnection) {
7743
+ var _store = new StoreCache();
7744
+ var ValueChangedMessage = /** @class */ (function (_super) {
7745
+ __extends(ValueChangedMessage, _super);
7746
+ function ValueChangedMessage(key, value, oldValue) {
7362
7747
  var _this = _super.call(this) || this;
7363
- if (optsConnection instanceof TopologyService) {
7364
- _this.connection = optsConnection;
7365
- }
7366
- else {
7367
- _this.connection = new TopologyService(optsConnection);
7368
- }
7748
+ _this.key = key;
7749
+ _this.value = value;
7750
+ _this.oldValue = oldValue;
7369
7751
  return _this;
7370
7752
  }
7371
- Object.defineProperty(Topology.prototype, "BaseUrl", {
7372
- get: function () { return this.connection.baseUrl; },
7373
- enumerable: false,
7374
- configurable: true
7375
- });
7376
- Object.defineProperty(Topology.prototype, "properties", {
7377
- // Accessors ---
7378
- get: function () { return this.get(); },
7379
- enumerable: false,
7380
- configurable: true
7381
- });
7382
- Object.defineProperty(Topology.prototype, "TargetClusters", {
7383
- get: function () { return this.get("TargetClusters"); },
7384
- enumerable: false,
7385
- configurable: true
7386
- });
7387
- Object.defineProperty(Topology.prototype, "CTargetClusters", {
7388
- get: function () {
7389
- var _this = this;
7390
- return this.TargetClusters.map(function (tc) { return TargetCluster.attach(_this.connection, tc.Name, tc); });
7391
- },
7392
- enumerable: false,
7393
- configurable: true
7394
- });
7395
- Object.defineProperty(Topology.prototype, "LogicalClusters", {
7396
- get: function () { return this.get("LogicalClusters"); },
7753
+ Object.defineProperty(ValueChangedMessage.prototype, "canConflate", {
7754
+ get: function () { return true; },
7397
7755
  enumerable: false,
7398
7756
  configurable: true
7399
7757
  });
7400
- Object.defineProperty(Topology.prototype, "Services", {
7401
- get: function () { return this.get("Services"); },
7758
+ ValueChangedMessage.prototype.conflate = function (other) {
7759
+ if (this.key === other.key) {
7760
+ this.value = other.value;
7761
+ return true;
7762
+ }
7763
+ return false;
7764
+ };
7765
+ ValueChangedMessage.prototype.void = function () {
7766
+ return this.value === this.oldValue;
7767
+ };
7768
+ return ValueChangedMessage;
7769
+ }(Message));
7770
+ var Store = /** @class */ (function () {
7771
+ function Store(optsConnection, Name, Namespace, UserSpecific) {
7772
+ this._dispatch = new Dispatch();
7773
+ this._knownValues = {};
7774
+ if (optsConnection instanceof StoreService) {
7775
+ this.connection = optsConnection;
7776
+ }
7777
+ else {
7778
+ this.connection = new StoreService(optsConnection);
7779
+ }
7780
+ this.Name = Name;
7781
+ this.UserSpecific = UserSpecific;
7782
+ this.Namespace = Namespace;
7783
+ }
7784
+ Object.defineProperty(Store.prototype, "BaseUrl", {
7785
+ get: function () { return this.connection.baseUrl; },
7402
7786
  enumerable: false,
7403
7787
  configurable: true
7404
7788
  });
7405
- Topology.attach = function (optsConnection) {
7406
- var retVal = _topology.get({ BaseUrl: optsConnection.baseUrl }, function () {
7407
- return new Topology(optsConnection);
7789
+ Store.attach = function (optsConnection, Name, Namespace, UserSpecific) {
7790
+ if (Name === void 0) { Name = "HPCCApps"; }
7791
+ if (UserSpecific === void 0) { UserSpecific = true; }
7792
+ var retVal = _store.get({ BaseUrl: optsConnection.baseUrl, Name: Name, UserSpecific: UserSpecific, Namespace: Namespace }, function () {
7793
+ return new Store(optsConnection, Name, Namespace, UserSpecific);
7408
7794
  });
7409
7795
  return retVal;
7410
7796
  };
7411
- Topology.prototype.GetESPServiceBaseURL = function (type) {
7797
+ Store.prototype.create = function () {
7798
+ this.connection.CreateStore({ Name: this.Name, UserSpecific: this.UserSpecific, Type: "", Description: "" });
7799
+ };
7800
+ Store.prototype.set = function (key, value, broadcast) {
7412
7801
  var _this = this;
7413
- if (type === void 0) { type = ""; }
7414
- return this.connection.TpServiceQuery({}).then(function (response) {
7415
- var rootProtocol = _this.connection.protocol();
7416
- var ip = _this.connection.ip();
7417
- var port = rootProtocol === "https:" ? "18002" : "8002";
7418
- if (exists("ServiceList.TpEspServers.TpEspServer", response)) {
7419
- for (var _i = 0, _a = response.ServiceList.TpEspServers.TpEspServer; _i < _a.length; _i++) {
7420
- var item = _a[_i];
7421
- if (exists("TpBindings.TpBinding", item)) {
7422
- for (var _b = 0, _c = item.TpBindings.TpBinding; _b < _c.length; _b++) {
7423
- var binding = _c[_b];
7424
- if (binding.Service === type && binding.Protocol + ":" === rootProtocol) {
7425
- port = binding.Port;
7426
- }
7427
- }
7428
- }
7429
- }
7802
+ if (broadcast === void 0) { broadcast = true; }
7803
+ return this.connection.Set({
7804
+ StoreName: this.Name,
7805
+ UserSpecific: this.UserSpecific,
7806
+ Namespace: this.Namespace,
7807
+ Key: key,
7808
+ Value: value
7809
+ }).then(function (response) {
7810
+ var oldValue = _this._knownValues[key];
7811
+ _this._knownValues[key] = value;
7812
+ if (broadcast) {
7813
+ _this._dispatch.post(new ValueChangedMessage(key, value, oldValue));
7430
7814
  }
7431
- return "".concat(rootProtocol, "//").concat(ip, ":").concat(port, "/");
7815
+ }).catch(function (e) {
7816
+ console.error("Store.set(\"".concat(key, "\", \"").concat(value, "\") failed:"), e);
7432
7817
  });
7433
7818
  };
7434
- Topology.prototype.fetchTargetClusters = function () {
7819
+ Store.prototype.get = function (key, broadcast) {
7435
7820
  var _this = this;
7436
- return this.connection.TpTargetClusterQuery({ Type: "ROOT" }).then(function (response) {
7437
- var _a, _b;
7438
- _this.set({
7439
- TargetClusters: (_b = (_a = response.TpTargetClusters) === null || _a === void 0 ? void 0 : _a.TpTargetCluster) !== null && _b !== void 0 ? _b : []
7440
- });
7441
- return _this.CTargetClusters;
7821
+ if (broadcast === void 0) { broadcast = true; }
7822
+ return this.connection.Fetch({
7823
+ StoreName: this.Name,
7824
+ UserSpecific: this.UserSpecific,
7825
+ Namespace: this.Namespace,
7826
+ Key: key
7827
+ }).then(function (response) {
7828
+ var oldValue = _this._knownValues[key];
7829
+ _this._knownValues[key] = response.Value;
7830
+ if (broadcast) {
7831
+ _this._dispatch.post(new ValueChangedMessage(key, response.Value, oldValue));
7832
+ }
7833
+ return response.Value;
7834
+ }).catch(function (e) {
7835
+ console.error("Store.get(".concat(key, ") failed:"), e);
7836
+ return undefined;
7442
7837
  });
7443
7838
  };
7444
- Topology.prototype.fetchLogicalClusters = function (request) {
7839
+ Store.prototype.getAll = function (broadcast) {
7445
7840
  var _this = this;
7446
- if (request === void 0) { request = {}; }
7447
- return this.connection.TpLogicalClusterQuery(request).then(function (response) {
7448
- _this.set({
7449
- LogicalClusters: response.TpLogicalClusters.TpLogicalCluster
7841
+ if (broadcast === void 0) { broadcast = true; }
7842
+ return this.connection.FetchAll({
7843
+ StoreName: this.Name,
7844
+ UserSpecific: this.UserSpecific,
7845
+ Namespace: this.Namespace
7846
+ }).then(function (response) {
7847
+ var retVal = {};
7848
+ var deletedValues = _this._knownValues;
7849
+ _this._knownValues = {};
7850
+ response.Pairs.Pair.forEach(function (pair) {
7851
+ var oldValue = _this._knownValues[pair.Key];
7852
+ _this._knownValues[pair.Key] = pair.Value;
7853
+ delete deletedValues[pair.Key];
7854
+ retVal[pair.Key] = pair.Value;
7855
+ if (broadcast) {
7856
+ _this._dispatch.post(new ValueChangedMessage(pair.Key, pair.Value, oldValue));
7857
+ }
7450
7858
  });
7451
- return _this.LogicalClusters;
7859
+ if (broadcast) {
7860
+ for (var key in deletedValues) {
7861
+ _this._dispatch.post(new ValueChangedMessage(key, undefined, deletedValues[key]));
7862
+ }
7863
+ }
7864
+ return retVal;
7865
+ }).catch(function (e) {
7866
+ console.error("Store.getAll failed:", e);
7867
+ return {};
7452
7868
  });
7453
7869
  };
7454
- Topology.prototype.fetchServices = function (request) {
7870
+ Store.prototype.delete = function (key, broadcast) {
7455
7871
  var _this = this;
7456
- if (request === void 0) { request = {}; }
7457
- return this.connection.TpServiceQuery(request).then(function (response) {
7458
- _this.set({
7459
- Services: response.ServiceList
7460
- });
7461
- return _this.Services;
7872
+ if (broadcast === void 0) { broadcast = true; }
7873
+ return this.connection.Delete({
7874
+ StoreName: this.Name,
7875
+ UserSpecific: this.UserSpecific,
7876
+ Namespace: this.Namespace,
7877
+ Key: key
7878
+ }).then(function (response) {
7879
+ var oldValue = _this._knownValues[key];
7880
+ delete _this._knownValues[key];
7881
+ if (broadcast) {
7882
+ _this._dispatch.post(new ValueChangedMessage(key, undefined, oldValue));
7883
+ }
7884
+ }).catch(function (e) {
7885
+ console.error("Store.delete(".concat(key, ") failed:"), e);
7462
7886
  });
7463
7887
  };
7464
- Topology.prototype.refresh = function (force) {
7465
- var _this = this;
7466
- if (force === void 0) { force = false; }
7467
- if (!this._prevRefresh || force) {
7468
- this._prevRefresh = Promise.all([this.fetchTargetClusters(), this.fetchLogicalClusters(), this.fetchServices()]).then(function () {
7469
- return _this;
7470
- });
7471
- }
7472
- return this._prevRefresh;
7473
- };
7474
- // Monitoring ---
7475
- // Events ---
7476
- Topology.prototype.on = function (eventID, propIDorCallback, callback) {
7477
- if (this.isCallback(propIDorCallback)) {
7478
- switch (eventID) {
7479
- case "changed":
7480
- _super.prototype.on.call(this, eventID, propIDorCallback);
7481
- break;
7482
- }
7483
- }
7484
- else {
7485
- switch (eventID) {
7486
- case "changed":
7487
- _super.prototype.on.call(this, eventID, propIDorCallback, callback);
7488
- break;
7489
- }
7490
- }
7491
- this._monitor();
7492
- return this;
7888
+ Store.prototype.monitor = function (callback) {
7889
+ return this._dispatch.attach(callback);
7493
7890
  };
7494
- return Topology;
7495
- }(StateObject));
7891
+ return Store;
7892
+ }());
7496
7893
 
7497
7894
  var logger$1 = scopedLogger("@hpcc-js/comms/dfuWorkunit.ts");
7498
7895
  var States;
@@ -7819,6 +8216,16 @@ var DFUWorkunit = /** @class */ (function (_super) {
7819
8216
  enumerable: false,
7820
8217
  configurable: true
7821
8218
  });
8219
+ Object.defineProperty(DFUWorkunit.prototype, "KbPerSecAve", {
8220
+ get: function () { return this.get("KbPerSecAve"); },
8221
+ enumerable: false,
8222
+ configurable: true
8223
+ });
8224
+ Object.defineProperty(DFUWorkunit.prototype, "KbPerSec", {
8225
+ get: function () { return this.get("KbPerSec"); },
8226
+ enumerable: false,
8227
+ configurable: true
8228
+ });
7822
8229
  // Factories ---
7823
8230
  DFUWorkunit.create = function (optsConnection, dfuServerQueue) {
7824
8231
  var retVal = new DFUWorkunit(optsConnection);
@@ -7864,6 +8271,21 @@ var DFUWorkunit = /** @class */ (function (_super) {
7864
8271
  });
7865
8272
  });
7866
8273
  };
8274
+ DFUWorkunit.prototype.update = function (request) {
8275
+ var _a, _b, _c, _d;
8276
+ return this.connection.UpdateDFUWorkunitEx({
8277
+ wu: {
8278
+ JobName: (_b = (_a = request === null || request === void 0 ? void 0 : request.wu) === null || _a === void 0 ? void 0 : _a.JobName) !== null && _b !== void 0 ? _b : this.JobName,
8279
+ isProtected: (_d = (_c = request === null || request === void 0 ? void 0 : request.wu) === null || _c === void 0 ? void 0 : _c.isProtected) !== null && _d !== void 0 ? _d : this.isProtected,
8280
+ ID: this.ID,
8281
+ State: this.State
8282
+ },
8283
+ ClusterOrig: this.ClusterName,
8284
+ JobNameOrig: this.JobName,
8285
+ isProtectedOrig: this.isProtected,
8286
+ StateOrig: this.State
8287
+ });
8288
+ };
7867
8289
  DFUWorkunit.prototype.isComplete = function () {
7868
8290
  switch (this.State) {
7869
8291
  case States.Finished:
@@ -7890,6 +8312,12 @@ var DFUWorkunit = /** @class */ (function (_super) {
7890
8312
  DFUWorkunit.prototype.isRunning = function () {
7891
8313
  return !this.isComplete();
7892
8314
  };
8315
+ DFUWorkunit.prototype.abort = function () {
8316
+ return this.connection.AbortDFUWorkunit({ wuid: this.ID });
8317
+ };
8318
+ DFUWorkunit.prototype.delete = function () {
8319
+ return this.DFUWUAction(FileSpray.DFUWUActions.Delete);
8320
+ };
7893
8321
  DFUWorkunit.prototype.refresh = function (full) {
7894
8322
  return __awaiter(this, void 0, void 0, function () {
7895
8323
  return __generator(this, function (_a) {
@@ -7902,6 +8330,9 @@ var DFUWorkunit = /** @class */ (function (_super) {
7902
8330
  });
7903
8331
  });
7904
8332
  };
8333
+ DFUWorkunit.prototype.fetchXML = function (callback) {
8334
+ return this.DFUWUFile();
8335
+ };
7905
8336
  // Monitoring ---
7906
8337
  DFUWorkunit.prototype._monitor = function () {
7907
8338
  if (this.isComplete()) {
@@ -7923,6 +8354,29 @@ var DFUWorkunit = /** @class */ (function (_super) {
7923
8354
  }
7924
8355
  return retVal;
7925
8356
  };
8357
+ DFUWorkunit.prototype.DFUWUFile = function (_request) {
8358
+ if (_request === void 0) { _request = {}; }
8359
+ return this.connection.DFUWUFile(__assign(__assign({}, _request), { Wuid: this.ID })).then(function (response) {
8360
+ //TODO: additional processing?
8361
+ return response;
8362
+ }).catch(function (e) {
8363
+ return {};
8364
+ });
8365
+ };
8366
+ DFUWorkunit.prototype.DFUWUAction = function (actionType) {
8367
+ var _this = this;
8368
+ return this.connection.DFUWorkunitsAction({
8369
+ wuids: { Item: [this.ID] },
8370
+ Type: actionType
8371
+ }).then(function (response) {
8372
+ if (actionType === FileSpray.DFUWUActions.Delete)
8373
+ return response;
8374
+ return _this.refresh().then(function () {
8375
+ _this._monitor();
8376
+ return response;
8377
+ });
8378
+ });
8379
+ };
7926
8380
  // Events ---
7927
8381
  DFUWorkunit.prototype.on = function (eventID, propIDorCallback, callback) {
7928
8382
  var _this = this;
@@ -9046,5 +9500,5 @@ if (typeof root.btoa === "undefined") {
9046
9500
  };
9047
9501
  }
9048
9502
 
9049
- export { AccessService, AccountService, Activity, Attr, Attribute, BUILD_VERSION, BaseScope, ClientTools, CloudService, CodesignService, Connection, DFUArrayActions, DFUChangeProtection, DFUChangeRestriction, DFUDefFileFormat, DFUService, DFUWorkunit, DFUWorkunitCache, DFUXRefService, DaliService, Definition, ECLGraph, ECLScope, ESPConnection, ESPExceptions, EclService, EclccErrors, ElkService, EnvchkErrors, Errors, Field, File, FileSprayService, Folder, GlobalResultCache, GraphCache, Import, LocalWorkunit, LogaccessService, LogicalFile, LogicalFileCache, Machine, MachineCache, MachineService, PKG_NAME, PKG_VERSION, PackageProcessService, Query, Resource, ResourcesService, Result, ResultCache, SMCService, Scope, ScopeEdge, ScopeGraph, ScopeSubgraph, ScopeVertex, Service, Source, SourceFile, Store, StoreCache, StoreService, TargetCluster, TargetClusterCache, Timer, Topology, TopologyCache, TopologyService, TpLogicalClusterQuery, ValueChangedMessage, Version, WUStateID$1 as WUStateID, WUUpdate, Workspace, Workunit, WorkunitCache, WorkunitsService, WorkunitsServiceEx, WsDfu, WsLogaccess, XGMMLEdge, XGMMLGraph, XGMMLSubgraph, XGMMLVertex, XSDNode, XSDSchema, XSDSimpleType, XSDXMLNode, attachWorkspace, clearAllClientToolsCache, createConnection, createGraph, createXGMMLGraph, defaultTargetCluster, deserializeResponse, get, hookSend, instanceOfIConnection, instanceOfIOptions, isArray, isECLResult, isExceptions, isWUInfoWorkunit, isWUQueryECLWorkunit, jsonp, locateAllClientTools, locateClientTools, parseXSD, parseXSD2, post, qualifiedIDBoundary, send, serializeRequest, setTransportFactory, targetClusters, walkXmlJson };
9503
+ export { AccessService, AccountService, Activity, Attr, Attribute, BUILD_VERSION, BaseScope, ClientTools, CloudService, CodesignService, Connection, DFUArrayActions, DFUChangeProtection, DFUChangeRestriction, DFUDefFileFormat, DFUService, DFUWorkunit, DFUWorkunitCache, DFUXRefService, DaliService, Definition, ECLGraph, ECLScope, ESPConnection, ESPExceptions, EclService, EclccErrors, ElkService, EnvchkErrors, Errors, Field, File, FileSpray, FileSprayService, Folder, GlobalResultCache, GraphCache, Import, LocalWorkunit, LogaccessService, LogicalFile, LogicalFileCache, Machine, MachineCache, MachineService, PKG_NAME, PKG_VERSION, PackageProcessService, Query, Resource, ResourcesService, Result, ResultCache, SMCService, Scope, ScopeEdge, ScopeGraph, ScopeSubgraph, ScopeVertex, Service, Source, SourceFile, Store, StoreCache, StoreService, TargetCluster, TargetClusterCache, Timer, Topology, TopologyCache, TopologyService, TpLogicalClusterQuery, ValueChangedMessage, Version, WUStateID$1 as WUStateID, WUUpdate, Workspace, Workunit, WorkunitCache, WorkunitsService, WorkunitsServiceEx, WsDfu, WsLogaccess, XGMMLEdge, XGMMLGraph, XGMMLSubgraph, XGMMLVertex, XSDNode, XSDSchema, XSDSimpleType, XSDXMLNode, attachWorkspace, clearAllClientToolsCache, createConnection, createGraph, createXGMMLGraph, defaultTargetCluster, deserializeResponse, get, hookSend, instanceOfIConnection, instanceOfIOptions, isArray, isECLResult, isExceptions, isWUInfoWorkunit, isWUQueryECLWorkunit, jsonp, locateAllClientTools, locateClientTools, parseXSD, parseXSD2, post, qualifiedIDBoundary, send, serializeRequest, setTransportFactory, targetClusters, walkXmlJson };
9050
9504
  //# sourceMappingURL=index.es6.js.map