1/** 2 * Created by jhkoo77 on 2015-09-04. 3 */ 4 5function nx_callback(callback) { 6 var fn = function (res) { 7 console.log(res); 8 callback(res); 9 }; 10 return fn; 11} 12 13// os íì¸ 14function getAgentSystem() { 15 if (typeof navigator === 'undefined') { 16 return 'unknown'; 17 } 18 19 // 'userAgentData'ì platformì´ ìì¼ë©´ ì´ë¥¼ ì¬ì©íê³ , ìëë©´ ë¹ ë¬¸ìì´ ë°í 20 const platform = navigator.userAgentData?.platform || ''; 21 22 // ë§ì½ 'userAgentData'를 ì§ìíì§ ìëë¤ë©´ userAgent 문ìì´ì ì¬ì© 23 const userAgent = navigator.userAgent || ''; 24 const platformLower = platform.toLowerCase() || userAgent.toLowerCase(); 25 26 if (platformLower.startsWith('win')) return 'windows'; 27 if (platformLower.startsWith('mac')) return 'macos'; 28 if (platformLower.startsWith('linux')) return 'linux'; 29 return 'unknown'; 30} 31 32var nxTSPKIObj = (function (parentObj, $) { 33 var _toolkit = {}; 34 var _moduleName = window.nxTSConfig.TSTOOLKIT; 35 _toolkit = $.extend({}, parentObj); 36 37 _toolkit._getResultTimer = new nxTSUtil.timer(window.nxTSConfig.getResultInterval, function () { 38 nxTSPKIObj.getResult(nxts_get_result_complete_callback).invoke(); 39 }); 40 41 _toolkit.createCommand = function (cmd, data, ctx) { 42 ctx = ctx || {}; 43 ctx.obj = nxTSPKIObj; 44 var cmd = window.nxTSCommon.createCommand(_moduleName, cmd, data, ctx); 45 cmd.data.async = true; 46 return cmd; 47 }; 48 49 _toolkit.signFile = function (dataFile, signedDataFile, options, callback, etc) { 50 options = $.extend({}, window.nxTSPKIConfig.options, options); 51 var cmd = this.createCommand( 52 'signFile', 53 { options: options, dataFile: dataFile, signedDataFile: signedDataFile }, 54 { callback: callback, etc: etc }, 55 ); 56 this.startGetResultTimer(cmd.data.rid, etc); 57 return cmd; 58 }; 59 _toolkit.addSignInSignedData = function (signedData, options, callback, etc) { 60 options = $.extend({}, window.nxTSPKIConfig.options, options); 61 var cmd = this.createCommand( 62 'addSignInSignedData', 63 { options: options, signedData: signedData }, 64 { callback: callback, etc: etc }, 65 ); 66 this.startGetResultTimer(cmd.data.rid, etc); 67 return cmd; 68 }; 69 70 _toolkit.addSignInSignedFile = function (signedDataFile, addedSignedDataFile, options, callback, etc) { 71 options = $.extend({}, window.nxTSPKIConfig.options, options); 72 var cmd = this.createCommand( 73 'addSignInSignedFile', 74 { options: options, signedDataFile: signedDataFile, addedSignedDataFile: addedSignedDataFile }, 75 { callback: callback, etc: etc }, 76 ); 77 this.startGetResultTimer(cmd.data.rid, etc); 78 return cmd; 79 }; 80 _toolkit.signDataWithTimeStampToken = function (data, options, callback, etc) { 81 options = $.extend({}, window.nxTSPKIConfig.options, options); 82 var cmd = this.createCommand( 83 'signDataWithTimeStampToken', 84 { options: options, data: data }, 85 { callback: callback, etc: etc }, 86 ); 87 this.startGetResultTimer(cmd.data.rid, etc); 88 return cmd; 89 }; 90 _toolkit.signData = function (data, options, callback, etc) { 91 options = $.extend({}, window.nxTSPKIConfig.options, options); 92 var cmd = this.createCommand('signData', { options: options, data: data }, { callback: callback, etc: etc }); 93 this.startGetResultTimer(cmd.data.rid, etc); 94 return cmd; 95 }; 96 _toolkit.verifySignedData = function (data, options, callback, etc) { 97 options = $.extend({}, window.nxTSPKIConfig.options, options); 98 var cmd = this.createCommand( 99 'verifySignedData', 100 { options: options, data: data }, 101 { callback: callback, etc: etc }, 102 ); 103 this.startGetResultTimer(cmd.data.rid, etc); 104 return cmd; 105 }; 106 _toolkit.verifySignedFile = function (signedDataFile, dataFile, contentFile, options, callback, etc) { 107 options = $.extend({}, window.nxTSPKIConfig.options, options); 108 var cmd = this.createCommand( 109 'verifySignedFile', 110 { options: options, signedDataFile: signedDataFile, dataFile: dataFile, contentFile: contentFile }, 111 { callback: callback, etc: etc }, 112 ); 113 this.startGetResultTimer(cmd.data.rid, etc); 114 return cmd; 115 }; 116 _toolkit.base64EncodeData = function (data, callback, etc) { 117 var cmd = this.createCommand('base64EncodeData', { data: data }, { callback: callback, etc: etc }); 118 this.startGetResultTimer(cmd.data.rid, etc); 119 return cmd; 120 }; 121 _toolkit.base64DecodeData = function (data, callback, etc) { 122 var cmd = this.createCommand('base64DecodeData', { data: data }, { callback: callback, etc: etc }); 123 this.startGetResultTimer(cmd.data.rid, etc); 124 return cmd; 125 }; 126 _toolkit.encryptData = function (data, key, options, callback, etc) { 127 options = $.extend({}, window.nxTSPKIConfig.options, options); 128 var cmd = this.createCommand( 129 'encryptData', 130 { options: options, data: data, key: key }, 131 { callback: callback, etc: etc }, 132 ); 133 this.startGetResultTimer(cmd.data.rid, etc); 134 return cmd; 135 }; 136 _toolkit.decryptData = function (data, key, options, callback, etc) { 137 options = $.extend({}, window.nxTSPKIConfig.options, options); 138 var cmd = this.createCommand( 139 'decryptData', 140 { options: options, data: data, key: key }, 141 { callback: callback, etc: etc }, 142 ); 143 this.startGetResultTimer(cmd.data.rid, etc); 144 return cmd; 145 }; 146 _toolkit.encryptFile = function (dataFile, encryptedDataFile, key, options, callback, etc) { 147 options = $.extend({}, window.nxTSPKIConfig.options, options); 148 var cmd = this.createCommand( 149 'encryptFile', 150 { options: options, dataFile: dataFile, encryptedDataFile: encryptedDataFile, key: key }, 151 { callback: callback, etc: etc }, 152 ); 153 this.startGetResultTimer(cmd.data.rid, etc); 154 return cmd; 155 }; 156 _toolkit.decryptFile = function (encryptedDataFile, dataFile, key, options, callback, etc) { 157 options = $.extend({}, window.nxTSPKIConfig.options, options); 158 var cmd = this.createCommand( 159 'decryptFile', 160 { options: options, encryptedDataFile: encryptedDataFile, dataFile: dataFile, key: key }, 161 { callback: callback, etc: etc }, 162 ); 163 this.startGetResultTimer(cmd.data.rid, etc); 164 return cmd; 165 };
166 _toolkit.envelopFile = function (dataFile, envelopedDataFile, kmCert, options, callback, etc) { 167 options = $.extend({}, window.nxTSPKIConfig.options, options); 168 var cmd = this.createCommand( 169 'envelopFile', 170 { options: options, dataFile: dataFile, envelopedDataFile: envelopedDataFile, kmCert: kmCert }, 171 { callback: callback, etc: etc }, 172 ); 173 this.startGetResultTimer(cmd.data.rid, etc); 174 return cmd; 175 }; 176 _toolkit.decryptEnvelopedFile = function (envelopedDataFile, dataFile, options, callback, etc) { 177 options = $.extend({}, window.nxTSPKIConfig.options, options); 178 var cmd = this.createCommand( 179 'decryptEnvelopedFile', 180 { options: options, envelopedDataFile: envelopedDataFile, dataFile: dataFile }, 181 { callback: callback, etc: etc }, 182 ); 183 this.startGetResultTimer(cmd.data.rid, etc); 184 return cmd; 185 }; 186 _toolkit.envelopData = function (data, kmCert, options, callback, etc) { 187 options = $.extend({}, window.nxTSPKIConfig.options, options); 188 var cmd = this.createCommand( 189 'envelopData', 190 { options: options, data: data, kmCert: kmCert }, 191 { callback: callback, etc: etc }, 192 ); 193 this.startGetResultTimer(cmd.data.rid, etc); 194 return cmd; 195 }; 196 _toolkit.decryptEnvelopedData = function (envelopedData, options, callback, etc) { 197 options = $.extend({}, window.nxTSPKIConfig.options, options); 198 var cmd = this.createCommand( 199 'decryptEnvelopedData', 200 { options: options, envelopedData: envelopedData }, 201 { callback: callback, etc: etc }, 202 ); 203 this.startGetResultTimer(cmd.data.rid, etc); 204 return cmd; 205 }; 206 _toolkit.hashData = function (algorithm, data, callback, etc) { 207 var cmd = this.createCommand('hashData', { data: data, algorithm: algorithm }, { callback: callback, etc: etc }); 208 this.startGetResultTimer(cmd.data.rid, etc); 209 return cmd; 210 }; 211 _toolkit.hashFile = function (algorithm, dataFile, callback, etc) { 212 var cmd = this.createCommand( 213 'hashFile', 214 { dataFile: dataFile, algorithm: algorithm }, 215 { callback: callback, etc: etc }, 216 ); 217 this.startGetResultTimer(cmd.data.rid, etc); 218 return cmd; 219 }; 220 _toolkit.generateSignature = function (dataType, data, options, callback, etc) { 221 options = $.extend({}, window.nxTSPKIConfig.options, options); 222 var cmd = this.createCommand( 223 'generateSignature', 224 { dataType: dataType, data: data, options: options }, 225 { callback: callback, etc: etc }, 226 ); 227 this.startGetResultTimer(cmd.data.rid, etc); 228 return cmd; 229 }; 230 _toolkit.generateRandomNumber = function (length, callback, etc) { 231 var cmd = this.createCommand('generateRandomNumber', { length: length }, { callback: callback, etc: etc }); 232 this.startGetResultTimer(cmd.data.rid, etc); 233 return cmd; 234 }; 235 _toolkit.verifySignature = function (dataType, data, signature, cert, callback, etc) { 236 var cmd = this.createCommand( 237 'verifySignature', 238 { dataType: dataType, data: data, signature: signature, cert: cert }, 239 { callback: callback, etc: etc }, 240 ); 241 this.startGetResultTimer(cmd.data.rid, etc); 242 return cmd; 243 }; 244 _toolkit.getDataFromLDAP = function (url, dataType, options, callback, etc) { 245 options = $.extend({}, window.nxTSPKIConfig.options, options); 246 var cmd = this.createCommand( 247 'getDataFromLDAP', 248 { url: url, dataType: dataType, options: options }, 249 { callback: callback, etc: etc }, 250 ); 251 this.startGetResultTimer(cmd.data.rid, etc); 252 return cmd; 253 }; 254 _toolkit.getCertificateProperties = function (cert, options, callback, etc) { 255 options = $.extend({}, window.nxTSPKIConfig.options, options); 256 var cmd = this.createCommand( 257 'getCertificateProperties', 258 { cert: cert, options: options }, 259 { callback: callback, etc: etc }, 260 ); 261 this.startGetResultTimer(cmd.data.rid, etc); 262 return cmd; 263 }; 264 _toolkit.loginData = function (sessionId, ssn, userInfo, options, callback, etc) { 265 options = $.extend({}, window.nxTSPKIConfig.options, options); 266 var cmd = this.createCommand( 267 'loginData', 268 { sessionId: sessionId, ssn: ssn, userInfo: userInfo, options: options }, 269 { callback: callback, etc: etc }, 270 ); 271 this.startGetResultTimer(cmd.data.rid, etc); 272 return cmd; 273 }; 274 _toolkit.verifySigData = function (sigData, contentFolderPath, options, callback, etc) { 275 options = $.extend({}, window.nxTSPKIConfig.options, options); 276 var cmd = this.createCommand( 277 'verifySigData', 278 { sigData: sigData, contentFolderPath: contentFolderPath, options: options }, 279 { callback: callback, etc: etc }, 280 ); 281 this.startGetResultTimer(cmd.data.rid, etc); 282 return cmd; 283 }; 284 _toolkit.makeSigData = function (content, fileName, lastModificationTime, options, callback, etc) { 285 options = $.extend({}, window.nxTSPKIConfig.options, options); 286 var cmd = this.createCommand( 287 'makeSigData', 288 { content: content, fileName: fileName, lastModificationTime: lastModificationTime, options: options }, 289 { callback: callback, etc: etc }, 290 ); 291 this.startGetResultTimer(cmd.data.rid, etc); 292 return cmd; 293 }; 294 295 _toolkit.makeSigFile = function (contentFilePath, sigFilePath, options, callback, etc) { 296 options = $.extend({}, window.nxTSPKIConfig.options, options); 297 var cmd = this.createCommand( 298 'makeSigFile', 299 { contentFilePath: contentFilePath, sigFilePath: sigFilePath, options: options }, 300 { callback: callback, etc: etc }, 301 ); 302 this.startGetResultTimer(cmd.data.rid, etc); 303 return cmd; 304 }; 305 _toolkit.addSignInSigData = function (sigData, options, callback, etc) { 306 options = $.extend({}, window.nxTSPKIConfig.options, options); 307 var cmd = this.createCommand( 308 'addSignInSigData', 309 { sigData: sigData, options: options }, 310 { callback: callback, etc: etc }, 311 ); 312 this.startGetResultTimer(cmd.data.rid, etc); 313 return cmd; 314 }; 315 316 _toolkit.addSignInSigFile = function (sigFilePath, newSigFilePath, options, callback, etc) { 317 options = $.extend({}, window.nxTSPKIConfig.options, options); 318 var cmd = this.createCommand( 319 'addSignInSigFile', 320 { sigFilePath: sigFilePath, newSigFilePath: newSigFilePath, options: options }, 321 { callback: callback, etc: etc }, 322 ); 323 this.startGetResultTimer(cmd.data.rid, etc); 324 return cmd; 325 };
326 _toolkit.verifySigFile = function (sigFilePath, contentFolderPath, options, callback, etc) { 327 options = $.extend({}, window.nxTSPKIConfig.options, options); 328 var cmd = this.createCommand( 329 'verifySigFile', 330 { sigFilePath: sigFilePath, contentFolderPath: contentFolderPath, options: options }, 331 { callback: callback, etc: etc }, 332 ); 333 this.startGetResultTimer(cmd.data.rid, etc); 334 return cmd; 335 }; 336 _toolkit.verifyVID = function (ssn, options, callback, etc) { 337 options = $.extend({}, window.nxTSPKIConfig.options, options); 338 var cmd = this.createCommand('verifyVID', { ssn: ssn, options: options }, { callback: callback, etc: etc }); 339 this.startGetResultTimer(cmd.data.rid, etc); 340 return cmd; 341 }; 342 _toolkit.verifyVID2 = function (cert, ssn, r, options, callback, etc) { 343 options = $.extend({}, window.nxTSPKIConfig.options, options); 344 var cmd = this.createCommand( 345 'verifyVID2', 346 { ssn: ssn, cert: cert, r: r, options: options }, 347 { callback: callback, etc: etc }, 348 ); 349 this.startGetResultTimer(cmd.data.rid, etc); 350 return cmd; 351 }; 352 _toolkit.makeBiddingData = function (data, kmCertInfo, options, callback, etc) { 353 options = $.extend({}, window.nxTSPKIConfig.options, options); 354 var cmd = this.createCommand( 355 'makeBiddingData', 356 { options: options, data: data, kmCertInfo: kmCertInfo }, 357 { callback: callback, etc: etc }, 358 ); 359 this.startGetResultTimer(cmd.data.rid, etc); 360 return cmd; 361 }; 362 _toolkit.multiSignData = function (data, options, callback, etc) { 363 options = $.extend({}, window.nxTSPKIConfig.options, options); 364 var cmd = this.createCommand('multiSignData', { options: options, data: data }, { callback: callback, etc: etc }); 365 this.startGetResultTimer(cmd.data.rid, etc); 366 return cmd; 367 }; 368 _toolkit.multiSignFile = function (data, options, callback, etc) { 369 options = $.extend({}, window.nxTSPKIConfig.options, options); 370 var cmd = this.createCommand('multiSignFile', { options: options, data: data }, { callback: callback, etc: etc }); 371 this.startGetResultTimer(cmd.data.rid, etc); 372 return cmd; 373 }; 374 _toolkit.multiGenerateSignature = function (data, options, callback, etc) { 375 options = $.extend({}, window.nxTSPKIConfig.options, options); 376 var cmd = this.createCommand( 377 'multiGenerateSignature', 378 { options: options, data: data }, 379 { callback: callback, etc: etc }, 380 ); 381 this.startGetResultTimer(cmd.data.rid, etc); 382 return cmd; 383 }; 384 _toolkit.multiSignDataWithTimeStampToken = function (data, options, callback, etc) { 385 options = $.extend({}, window.nxTSPKIConfig.options, options); 386 var cmd = this.createCommand( 387 'multiSignDataWithTimeStampToken', 388 { options: options, data: data }, 389 { callback: callback, etc: etc }, 390 ); 391 this.startGetResultTimer(cmd.data.rid, etc); 392 return cmd; 393 }; 394 _toolkit.getCertificatesAndKeys = function (data, options, callback, etc) { 395 options = $.extend({}, window.nxTSPKIConfig.options, options); 396 var cmd = this.createCommand( 397 'getCertificatesAndKeys', 398 { options: options, data: data }, 399 { callback: callback, etc: etc }, 400 ); 401 this.startGetResultTimer(cmd.data.rid, etc); 402 return cmd; 403 }; 404 _toolkit.genSignatureStart = function (options, callback, etc) { 405 options = $.extend({}, window.nxTSPKIConfig.options, options); 406 var cmd = this.createCommand('genSignatureStart', { options: options }, { callback: callback, etc: etc }); 407 this.startGetResultTimer(cmd.data.rid, etc); 408 return cmd; 409 }; 410 _toolkit.genSignatureRunAndClear = function (dataType, data, options, callback, etc) { 411 options = $.extend({}, window.nxTSPKIConfig.options, options); 412 var cmd = this.createCommand( 413 'genSignatureRunAndClear', 414 { dataType: dataType, data: data, options: options }, 415 { callback: callback, etc: etc }, 416 ); 417 this.startGetResultTimer(cmd.data.rid, etc); 418 return cmd; 419 }; 420 _toolkit.genSignatureClear = function (options, callback, etc) { 421 options = $.extend({}, window.nxTSPKIConfig.options, options); 422 var cmd = this.createCommand('genSignatureClear', { options: options }, { callback: callback, etc: etc }); 423 this.startGetResultTimer(cmd.data.rid, etc); 424 return cmd; 425 }; 426 _toolkit.getResult = function (callback) { 427 var cmd = this.createCommand('getResult', { ajaxto: window.nxTSConfig.getResultTimeout }, { callback: callback }); 428 cmd.data.async = false; 429 return cmd; 430 }; 431 432 return _toolkit; 433})(window.nxTSCommonObj, jQuery); 434 435var nxTSPKI = (function (parentObj, $) { 436 var _toolkit = {}; 437 var _parentToolkit = parentObj; 438 439 var _proxyFunctionNames = [ 440 'signData', 441 'verifySignedData', 442 'signFile', 443 'verifySignedFile', 444 'encryptData', 445 'decryptData', 446 'encryptFile', 447 'decryptFile', 448 'envelopData', 449 'decryptEnvelopedData', 450 'envelopFile', 451 'decryptEnvelopedFile', 452 'generateSignature', 453 'verifySignature', 454 'verifySignedData', 455 'addSignInSignedFile', 456 'verifySignedFile', 457 'hashData', 458 'hashFile', 459 'loginData', 460 'base64EncodeData', 461 'base64DecodeData', 462 'getDataFromLDAP', 463 'generateRandomNumber', 464 'getCertificateProperties', 465 'makeSigData', 466 'verifySigData', 467 'makeSigFile', 468 'verifySigFile', 469 'addSignInSigData', 470 'addSignInSigFile',
471 'verifyVID', 472 'verifyVID2', 473 'addSignInSignedData', 474 'addSignInSignedFile', 475 'signDataWithTimeStampToken', 476 'makeBiddingData', 477 'multiSignData', 478 'multiSignFile', 479 'multiGenerateSignature', 480 'multiSignDataWithTimeStampToken', 481 'getCertificatesAndKeys', 482 'genSignatureStart', 483 'genSignatureRunAndClear', 484 'genSignatureClear', 485 ]; 486 487 _toolkit = $.extend(parentObj, _toolkit); 488 489 window.nxTSCommon.backupOrgFunctions(_parentToolkit, _proxyFunctionNames); 490 window.nxTSCommon.createProxyFunctions(_parentToolkit, _toolkit, 'callWithInit', _proxyFunctionNames); 491 492 _toolkit.callWithInit = function (name, fn, args) { 493 var initSuccess = function (res) { 494 if (res == undefined || res.code != window.nxTSError.res_success) { 495 window.nxTSUtil.showError(res); 496 return; 497 } 498 window.nxTSLog.i(name.replace('_par_', '')); 499 //nxTSLog.d(name.replace("_par_",""),nxTSUtil.maskPassword(args)); 500 var cmd = fn.apply(parentObj, args); 501 window.nxTSLog.d(name.replace('_par_', ''), window.nxTSUtil.maskPassword(cmd.data.data)); 502 503 cmd.invoke(); 504 }; 505 506 if (window.nxTSSession.isInit() == false) { 507 window.nxTSCommon.init( 508 { 509 versionCheck: [window.nxTSConfig.TSTOOLKIT], 510 installMessage: window.nxTSPKIConfig.installMessage, 511 installPage: window.nxTSPKIConfig.installPage, 512 }, 513 initSuccess, 514 ); 515 } else initSuccess({ code: window.nxTSError.res_success }); 516 }; 517 518 _toolkit.installCheck = function (callback) { 519 setTimeout(function () { 520 window.nxTSCommon.installCheck(false, { 521 ajaxto: 3000, 522 success: function (res, data, other, other2) { 523 //커ì¤í 524 const success = res.code === window.nxTSError.res_success; 525 if (callback) callback(success, res); 526 527 // if (callback) callback(!(res.code !== window.nxTSError.res_success)); // ì½ë°± í¨ìë¡ ì½ë ì ë¬ 528 // if (res.code != window.nxTSError.res_success) { 529 // const _installMessage = `${nxTSPKIConfig.installMessage}\n\nNX ê¶ì¥ë²ì : ${nxTSPKIConfig.version.nx} (íì¬ë²ì : ${res.data.nx})\nTSPKI ê¶ì¥ë²ì : ${nxTSPKIConfig.version.tstoolkit} (íì¬ë²ì : ${res.data.tstoolkit})`; 530 // if (confirm(window.nxTSPKIConfig.installMessage) == true) { 531 // // const link = document.createElement('a'); 532 // // link.href = '/download/nxtspkisetup.exe'; 533 // // link.download = 'nxtspkisetup.exe'; 534 // // document.body.appendChild(link); 535 // // link.click(); 536 // // document.body.removeChild(link); 537 // window.location.href = window.nxTSPKIConfig.installPage; 538 // } 539 // } 540 }, 541 versionCheck: [window.nxTSConfig.TSTOOLKIT], 542 }); 543 }, 500); 544 }; 545 546 _toolkit.init = function (transparentDisableBrowser, disableBrowser, fn) { 547 if (getAgentSystem() !== 'windows') { 548 // alert('ì¸ì¦ì ê´ë ¨ ìë¹ì¤ë Window OSë§ ì§ìë©ëë¤.'); 549 return; 550 } 551 552 if (typeof disableBrowser === 'function') { 553 fn = disableBrowser; 554 disableBrowser = true; 555 } 556 disableBrowser = typeof disableBrowser === 'boolean' ? disableBrowser : true; 557 transparentDisableBrowser = typeof transparentDisableBrowser === 'boolean' ? transparentDisableBrowser : false; 558 559 if (fn != undefined) { 560 window.nxTSPKI.onInit(fn); 561 } 562 setTimeout(function () { 563 if (window.nxTSSession.isInit() == false) { 564 window.nxTSCommon.init( 565 { 566 transparentDisableBrowser: transparentDisableBrowser, 567 disableBrowser: disableBrowser, 568 versionCheck: [window.nxTSConfig.TSTOOLKIT], 569 installMessage: window.nxTSPKIConfig.installMessage, 570 installPage: window.nxTSPKIConfig.installPage, 571 }, 572 function (res) { 573 if (res.code == window.nxTSError.res_success) window.nxTSPKI.callPostInit(); 574 }, 575 ); 576 } else { 577 window.nxTSPKI.callPostInit(); 578 } 579 }, 500); 580 }; 581 582 window.nxTSCommon.updateConfig(window.nxTSPKIConfig); 583 584 return _toolkit; 585})(window.nxTSPKIObj, jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.