@sparrowai/sparrow-mcp 1.1.12 → 1.1.13
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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/scripts/mcp-test/mcp-client.js +1 -1
- package/dist/scripts/test-runner/check-failed-tests.js +1 -1
- package/dist/scripts/test-runner/compare-responses.js +1 -1
- package/dist/scripts/test-runner/standalone-test-fixed-header.js +1 -1
- package/dist/scripts/test-runner/standalone-test.js +1 -1
- package/dist/src/config/appConfig.js +1 -1
- package/dist/src/config/constants.js +1 -1
- package/dist/src/controllers/__tests__/analysis.controller.test.js +1 -1
- package/dist/src/controllers/__tests__/sast.controller.test.js +1 -1
- package/dist/src/controllers/__tests__/sca.controller.test.js +1 -1
- package/dist/src/controllers/__tests__/security.controller.test.js +1 -1
- package/dist/src/controllers/__tests__/system.controller.test.js +1 -1
- package/dist/src/controllers/analysis.controller.js +1 -1
- package/dist/src/controllers/sast.controller.js +1 -1
- package/dist/src/controllers/sca.controller.js +1 -1
- package/dist/src/controllers/security.controller.js +1 -1
- package/dist/src/controllers/system.controller.js +1 -1
- package/dist/src/schemas/tool.schemas.js +1 -1
- package/dist/src/server.js +1 -1
- package/dist/src/services/__tests__/analysis.remediation.spec.d.ts +1 -0
- package/dist/src/services/__tests__/analysis.remediation.spec.js +1 -0
- package/dist/src/services/__tests__/analysis.remediation.test.js +1 -1
- package/dist/src/services/__tests__/analysis.service.sca.test.js +1 -1
- package/dist/src/services/__tests__/analysis.service.test.js +1 -1
- package/dist/src/services/__tests__/checker.service.test.js +1 -1
- package/dist/src/services/__tests__/llm.service.test.js +1 -1
- package/dist/src/services/__tests__/s3.service.test.js +1 -1
- package/dist/src/services/__tests__/sparrow.service.test.js +1 -1
- package/dist/src/services/analysis.service.js +1 -1
- package/dist/src/services/checker.service.js +1 -1
- package/dist/src/services/llm/AnthropicProvider.js +1 -1
- package/dist/src/services/llm/BedrockProvider.js +1 -1
- package/dist/src/services/llm/GeminiProvider.js +1 -1
- package/dist/src/services/llm/LLMFactory.js +1 -1
- package/dist/src/services/llm/LLMProvider.js +1 -1
- package/dist/src/services/llm/OllamaProvider.js +1 -1
- package/dist/src/services/llm/OpenAIProvider.js +1 -1
- package/dist/src/services/llm.service.js +1 -1
- package/dist/src/services/s3.service.js +1 -1
- package/dist/src/services/sparrow.service.js +1 -1
- package/dist/src/types/types.js +1 -1
- package/dist/src/utils/__tests__/crypto.util.test.js +1 -1
- package/dist/src/utils/__tests__/diff.util.test.js +1 -1
- package/dist/src/utils/__tests__/fileManager.test.js +1 -1
- package/dist/src/utils/__tests__/fileManagerSecure.test.js +1 -1
- package/dist/src/utils/__tests__/logger.test.js +1 -1
- package/dist/src/utils/crypto.util.js +1 -1
- package/dist/src/utils/diff.util.js +1 -1
- package/dist/src/utils/fileManager.js +1 -1
- package/dist/src/utils/fileManagerSecure.js +1 -1
- package/dist/src/utils/logger.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
const a4_0x99a6fa=a4_0x1bd9;(function(_0xd7bba1,_0x105eaf){const _0x178fdd=a4_0x1bd9,_0x286733=_0xd7bba1();while(!![]){try{const _0x349686=parseInt(_0x178fdd(0x446))/0x1+parseInt(_0x178fdd(0x349))/0x2*(-parseInt(_0x178fdd(0x310))/0x3)+-parseInt(_0x178fdd(0x40f))/0x4+parseInt(_0x178fdd(0x24f))/0x5*(parseInt(_0x178fdd(0x3df))/0x6)+-parseInt(_0x178fdd(0x31b))/0x7+parseInt(_0x178fdd(0x36e))/0x8*(-parseInt(_0x178fdd(0x270))/0x9)+parseInt(_0x178fdd(0x3b7))/0xa;if(_0x349686===_0x105eaf)break;else _0x286733['push'](_0x286733['shift']());}catch(_0x408912){_0x286733['push'](_0x286733['shift']());}}}(a4_0x34db,0x78591));function a4_0x34db(){const _0x1d584b=['ysisId\x20반환','됨:\x20','exit','\x20분석\x20시도','match','를\x20찾을\x20수\x20없어\x20','개만\x20배열에\x20입력\x0a','ackage.jso','1.\x20여러\x20파일\x20분','러리만\x20사용','task','/타임아웃','SCA\x20취약점\x20세부','스트\x20필요:\x20SPA','분석\x0a2.\x20코드\x20생','\x20ID\x20추적','N/A','스트\x20필요\x20(안전한','VguWu','ess','API_KEY\x20=\x20','bJHdm','\x20파일','\x20분석\x20성공','start','1.\x20JavaScr','ZIP\x20크기\x20검증\x20','.\x20analysis','NqVXC','1.\x20빈\x20fileC','DY\x20→\x20PRE_P','find','\x20ID','TC049','E2E','\x20병렬\x20실행\x20완료\x20','테스트\x20파일을\x20찾을','1.\x201초\x20간격으로','FiujY','CSRF.java','k\x20-\x20No\x20QA\x20','2.\x20도구\x20실행','━━━━━━━━━━','\x20분석','완료:\x20','Test.java','Rkano','rId;\x0a\x20\x20\x20\x20r','MCP\x20자동\x20테스트','.json\x20파일\x20경','Memo]\x20Adde','ysis/','입력\x0a2.\x20file','석\x20수락됨.\x20ID:','INIT\x20→\x20REA','track_anal','ess\x20=\x20requ','sast/CROSS','package.js','지원하지\x20않는\x20언어','is_results','대용량\x20ZIP\x20분석','\x20\x20\x202.\x20환경변수','짧은\x20간격\x20폴링\x20검','les_sca','석\x20→\x20결과','ff\x20형식','취약점\x20목록\x20반환','CommandInj','999999999','ZIP\x20SAST\x20분','5240790lyDIgL','params','1.\x20LLM\x20서비스','SCA\x20분석\x20','get_analys','테스트\x20폴더(sas','취약점\x20없는\x20코드\x20','dirname','expected','cwd','Unified\x20Di','정상\x20동작','1.\x20존재하지\x20않는','1.\x20SPARROW','이\x20수락되었거나\x20오','1.\x20빈\x20경로\x20입력','\x20추적\x20시도','replace','alysis_res','extract\x20an','\x20void\x20logi','크기\x20제한\x20검증:\x20','TC046','컴포넌트\x20세부정보\x20','빈\x20파일\x20경로\x20배열','-files/qa_','rom\x20result','1.\x20대용량\x20폴더\x20','║\x20\x20\x20\x20\x20\x20\x20\x20\x20',']\x20ERROR\x20(','TC044','파일\x20경로\x20입력\x0a2','대용량\x20폴더\x20분석\x20','컴포넌트\x20목록,\x20취','1.\x20ZIP\x20파일\x20','확인됨','word)\x20{\x0a\x20\x20','hfype','unlinkSync','fileName','6uCTRsJ','여러\x20파일\x20전체\x20워','더에\x20.env\x20파일','EY가\x20설정되지\x20않','Id로\x20상태\x20조회','.\x20즉시\x20결과\x20조회','결과\x20조회','\x20\x20\x20\x20\x20\x20\x20║','hsdvp','\x20장애\x20시뮬레이션',',\x20res)\x20=>\x20','TC004','ogLBj','generate_s','COMPLETE\x20반','\x20경로\x0a2.\x20도구\x20','1.\x20대용량\x20ZIP','rationale','sca','1.\x20진행\x20추적\x20시','1.\x20코드\x20생성\x0a2','zipFilePat','경계조건','\x22your-key\x22','석\x20검증됨\x20(Moc','TC077','TC041','TC063','✅\x20테스트\x20완료','t\x20userId\x20=','ontent\x20입력','스트\x20필요\x20(코드\x20','sast','의존성\x20파일\x20없는\x20','유도)','n\x20포함','\x20완료\x20(Real)','분석\x20실패\x20상태\x20조','1.\x20ANALYSI','╔═════════','NALYSIS\x20→\x20','BUKgL','s\x20WHERE\x20us','is_status','\x20진행률\x20확인','Empty.java','배열\x201개)','test_sast.','1772324ovwhNf','결과\x20조회\x20완료:\x20','예상된\x20오류\x20반환됨','\x20files\x20fro','오류처리','.\x20Analysis','1.\x20폴더\x20경로\x20입','❌\x20테스트\x20실행\x20실','(MCP):\x20Jav','SGksk','/nonexiste','빈\x20파일\x20내용\x20분석','big_files/','.\x20diff\x20필드\x20','았습니다.','════╗','스트\x20필요\x20(LLM','여러\x20파일\x20SCA\x20','\x20심각도\x20정보','rolAzure.j','toolOutput','onst\x20query','\x20경로\x20입력\x0a2.\x20','MCP\x20서버:\x20','\x20\x20\x20설정\x20방법:','request','ers\x20WHERE\x20','existsSync','크기\x20제한\x20처리','ectionASPN','index.js','\x20\x20\x20\x20public','isError','ZIP\x20파일\x20없음','demand.spa','스트\x20필요\x20(타임아','JNDaD','⚠️\x20\x20경고:\x20SPA','\x20\x20\x201.\x20실행\x20폴','짧은\x20확인\x20간격\x20(','취약점\x20없는\x20분석\x20','EST_FORGER','TC003','les_sast','.txt\x20파일\x20분석','구\x20실행','de\x20with\x20SQ','TC013','ID\x20','object','_SITE_REQU','없는\x20폴더\x20SCA','SCA','SCA\x20결과\x20조회\x20','존재하지\x20않는\x20분석','741183AKRqdU','1.\x20SCA\x20분석\x20','테스트ID','TC040','오류가\x20예상되었으나','toLowerCas','분석\x20성공','완료된\x20분석\x20상태\x20','TC091','TC061',':\x20INIT','dist','TC001','structured','YrFLF','TC011','\x20=\x20\x22SELECT','argv','분석\x20진행\x20추적\x20성','\x20완료.\x20컴포넌트:','로\x20입력','CSRF_Diff.','server.js','.\x20세부정보\x20확인','오류\x20메시지\x20반환','filter','ysis_progr','TC082','ANALYSIS\x20단','severity,\x20','SCA\x20테스트\x20폴더','1.\x20확장자\x20없는\x20','\x20완료.\x20','folderPath','tent에\x20Java','안전한\x20코드\x20생성\x20','기\x20제한\x20검증됨','우선순위','```diff','\x20수\x20없어\x20건너뜀','1.\x20분석\x20시작\x0a2','analysisId','descriptio','AccessCont','\x20상태가\x20반환됨','ername=\x27\x22\x20','search','(((.+)+)+)','취약점\x20없는\x20오픈소','존재하지\x20않는\x20폴더','error','TC045','╚═════════','\x20정보','생성\x20오류\x20처리\x20검','analyze_fi','analysisLi','content','addLocalFo','력\x0a2.\x20도구\x20실행','../../','\x0a2.\x20결과\x20조회','sca/yarnpk','워크플로우\x20검증\x20완','fileConten','push','[MCP\x20Clien','단계별\x20알림','Vulnerable','레이션)','tring\x20pass','단일\x20항목\x20배열\x20분','arguments','FAIL','rrowcloud.','ipt\x20파일\x20내용\x20','성\x20시도','1.\x20폴더에서\x20자동','정상동작','폴더\x20경로\x20없음\x20S','존재하지\x20않는\x20파일','══════════','상태\x20조회\x20성공:\x20','sort','on\x20SCA\x20분석','1.\x20잘못된\x20ID로','es.send(qu','\x20완료.','utf-8','JiiNP','lysisId','RUgKY','ss\x20UserCon','map','\x20테스트\x20(MCP\x20','procedure','단일\x20Java\x20파일','\x20의존성을\x20가진\x20p','탐색\x20및\x20분석\x20완료','\x20경로','사전조건','\x20처리\x20검증됨','(MCP):\x20분석\x20','1.\x20여러\x20파일\x20경','1.\x20취약점\x20있는\x20','binary_tc.','\x20ZIP\x20경로','tools/call','2060365blzeGr','로\x20코드\x20생성','s):','내장\x20테스트\x20케이스','로\x20배열\x20입력\x0a2.','파일\x20없는\x20프로젝트','\x20코드\x20입력\x0a2.\x20','n(String\x20u','ng\x20query\x20=','lder','30분\x20이상\x20소요\x20','TC042','values','단계별\x20알림\x20검증됨','1.\x20취약점\x20목록\x20','test_sca.z','\x20파일\x20경로\x20입력\x0a','스\x20사용','Hello\x20Worl','toFixed','CVE,\x20CVSS,','빈\x20취약점\x20목록','data','all','t]\x20Package','TC060','ecure_code','SUCCESS','SxtcA','TC023','constructo','Polling\x20ti','지원\x20언어\x20확인\x20-','159732YRsEQy','ROCESS\x20→\x20A','도구\x20실행','Y_TestCase','파일\x20분석\x20','컴포넌트\x20정보\x20확인','2E\x20검증\x20완료','progress\x20값','readFileSy','p_sast','\x20Output\x20--','N/A\x20-\x20수동\x20테','ETTest.asp','TC022','Failed\x20to\x20','TC078','\x20반환\x0astatus','\x20MCP\x20-\x20자동화','\x0a=========','취약점\x20정보\x20확인','1.\x20분석\x20진행\x20중','L\x20injectio','le_sast','도구명','테스트절차','수정된\x20코드\x20반환','.java','ults','RROW_API_K','fsKMY','미완료\x20SCA\x20분석','passed','alysisId\x20f','\x20\x20\x20통과:\x20','1.\x20분석\x20완료\x20대','의존성\x20파일\x20자동\x20','get_sca_an','xport\x20SPAR','연결\x20종료','\x0a━━━━━━━━━','전체\x20워크플로우\x20테','\x20+\x20\x22\x27\x22;\x0a\x20\x20','\x20도구\x20실행','analyze_fo','LtnIM','\x20분석\x20','약점\x20정보','고\x20오류\x20확인\x20필요','확장자\x20없는\x20파일명','오류/경고\x20반환됨:','1.\x20취약점\x20없는\x20','(MCP):\x20다중\x20','FAIL\x20상태\x20처리','analyze_zi','public\x20cla','ults.tsv','memo','\x0a\x0a---\x20Tool','개\x20취약점','message','\x20attempts','\x20조회','TC032','startsWith','ImtrF','/qa_tc','...','1.\x20컴포넌트\x20목록','\x20\x20\x20\x20[Auto-','TC010','zip','tool','Diff\x20형식\x20검증','nt.zip','\x20\x22SELECT\x20*','분석\x20상태\x20조회\x20성','Y=\x22your-ke','\x20확인','t:\x20Java\x20co','nux/Mac:\x20e','tList/anal','계\x20진행률\x20업데이트','COMPLETE','TC075','TC090','됨\x20(Mock)','실제\x20실행\x20검증됨\x20','TC006','통합테스트','선스\x20정보','\x20→\x20결과\x20→\x20코드','Error\x20dete','타임아웃\x20처리','p_sca','Antigravit','fileName에\x20','\x20\x20\x20\x20\x20\x20Stri','진행률\x20업데이트\x20검','ller','기대결과','오류\x20또는\x20즉시\x20반','filePaths','폴더\x20분석\x20','\x20생성','readme.txt','폴더\x20SCA\x20분석\x20','N/A\x20-\x20의존성\x20','aScript\x20파일','확장자\x20사용','TC073','단일\x20파일\x20분석\x20(','entries','여러\x20파일\x20SAST','\x20JavaScrip','취약점\x20없는\x20분석으','ElJfw','==========','\x20시작됨.','최종\x20상태:\x20','resolve','/ko/reques','폴더\x20전체\x20SCA\x20','/androidx)','mCxFS','Using\x20test','검증됨','\x20FROM\x20user','OW_API_KEY','status','YUjBb','Content','\x0a📄\x20결과\x20저장:\x20','TC071','TC043','node','+\x20username','테스트분류','\x20root:\x20','경로\x20입력\x0a2.\x20도','정보\x20확인됨','toUpperCas','0개\x20컴포넌트\x20또는','toString','pp.get(\x27/u','담당자','\x20분석이\x20수락됨','ROW_API_KE','../../test','다중\x20파일\x20E2E\x20','preconditi','ync','includes','ndows:\x20$en','length','======','TC076','1.\x20분석\x20완료\x0a2','개\x20취약점\x20발견.','stop','y\x22\x0a','3MajcFR','개\x20TC)\x20====','A\x20분석\x20조회','오류\x20메시지','kfEFk','stringify','now','../../../','cted','TC048','프로젝트','830410TZQwZt','행률\x20확인','log','\x20\x20}\x0a}','iles)','전체\x20흐름\x20성공','TPtXA','fileName:\x20','lysisId로\x20상','name','.\x20진행\x20추적','.id;\x0a\x20\x20\x20\x20c','tmpdir','대용량\x20테스트\x20폴더','UilEY','category','WZecE','크플로우','입력\x0a3.\x20도구\x20실','yarnpkg/pa','폴더\x20경로\x20없음','단계별\x20알림\x20확인','NullReturn','trim','ZIP\x20파일\x20SCA','all_langua','EYrFR','1.\x20분석\x20→\x20추적','{\x0a\x20\x20\x20\x20cons','\x20\x20\x20\x20\x20\x20-\x20Wi','XqrcB','을\x20찾을\x20수\x20없어\x20','TC064','1.\x20빈\x20배열\x20입력','1.\x20안전한\x20라이브','result','androidx','\x20생성:\x20SPARR','\x20-\x20No\x20QA\x20f','존재하지\x20않는\x20SC','troller\x20{\x0a','v:SPARROW_','\x20(Real)','건너뜀','\x20처리\x20확인\x20필요','text','428950QhNzio','lAciv','\x0a2.\x20도구\x20실행','n\x20사용)','p-test-res','TC021','TC030','le_sca','Diff\x20형식\x20확인','\x20반환','CdvFd','경로\x20입력','\x20추적이\x20수락됨','TC069','오류\x20또는\x20경고','\x0a2.\x20코드\x20생성\x20','ewbEp','1.\x20의존성\x20파일\x20','m:\x20','LLM\x20서비스\x20장애','\x20ID:\x20','TC002','계\x20진행률\x20확인','lder_sast','d\x20memo:\x20\x22','ire(\x27expre','으로\x20의존성\x20파일\x20','join','TC074','split','처리\x20검증됨','lder_sca','warn','류\x20반환됨','naDyK','nt/folder','meout\x20afte','184QCmwGu','1.\x20파일\x20경로\x201'];a4_0x34db=function(){return _0x1d584b;};return a4_0x34db();}const a4_0xe80944=(function(){let _0x397c9c=!![];return function(_0x216ead,_0x2d4ab6){const _0x42afa3=_0x397c9c?function(){if(_0x2d4ab6){const _0x569030=_0x2d4ab6['apply'](_0x216ead,arguments);return _0x2d4ab6=null,_0x569030;}}:function(){};return _0x397c9c=![],_0x42afa3;};}()),a4_0x1b4423=a4_0xe80944(this,function(){const _0x56bc75=a4_0x1bd9;return a4_0x1b4423[_0x56bc75(0x2fe)]()[_0x56bc75(0x211)](_0x56bc75(0x212)+'+$')['toString']()[_0x56bc75(0x26d)+'r'](a4_0x1b4423)[_0x56bc75(0x211)]('(((.+)+)+)'+'+$');});a4_0x1b4423();import'dotenv/config';import{McpClient}from'../mcp-test/mcp-client.js';import a4_0x50bb66 from'fs';import a4_0x30148f from'path';import{fileURLToPath}from'url';function a4_0x1bd9(_0x385a35,_0x26b465){_0x385a35=_0x385a35-0x1ef;const _0x5a7fea=a4_0x34db();let _0x1b4423=_0x5a7fea[_0x385a35];return _0x1b4423;}import a4_0x3dd015 from'adm-zip';import a4_0x41383c from'os';const __filename=fileURLToPath(import.meta.url),__dirname=a4_0x30148f[a4_0x99a6fa(0x3be)](__filename),SPARROW_BASE_URL=process.env.SPARROW_API_URL||'https://on'+a4_0x99a6fa(0x431)+a4_0x99a6fa(0x22d)+'ai',MAX_POLL_ATTEMPTS=0x12c,POLL_INTERVAL_MS=0xbb8,QA_TC_ROOT=a4_0x30148f[a4_0x99a6fa(0x2e7)](process[a4_0x99a6fa(0x3c0)](),'test-files'+a4_0x99a6fa(0x2b1));function createTempZip(_0x39d08f,_0x3f10f4){const _0x44e8dc=a4_0x99a6fa,_0x2a0ad2=new a4_0x3dd015();_0x2a0ad2[_0x44e8dc(0x21d)+_0x44e8dc(0x258)](_0x39d08f);const _0x4e0f69=a4_0x41383c[_0x44e8dc(0x327)](),_0x4f46d2=a4_0x30148f['join'](_0x4e0f69,_0x3f10f4);return _0x2a0ad2['writeZip'](_0x4f46d2),_0x4f46d2;}function getAnalysisLink(_0x4cf79b){const _0x2c2216=a4_0x99a6fa;return SPARROW_BASE_URL+(_0x2c2216(0x2e8)+_0x2c2216(0x2c0)+_0x2c2216(0x3a3))+_0x4cf79b;}async function pollUntilComplete(_0x54c7a9,_0x43bd36){const _0x425dc9=a4_0x99a6fa,_0xeaabb1={};_0xeaabb1[_0x425dc9(0x38c)]=_0x425dc9(0x26a);const _0x19c98a=_0xeaabb1;let _0x126cd9=0x0;while(_0x126cd9<MAX_POLL_ATTEMPTS){const _0x3372bb={};_0x3372bb[_0x425dc9(0x20c)]=_0x43bd36;const _0x23b0a9={};_0x23b0a9['name']=_0x425dc9(0x3bb)+_0x425dc9(0x40a),_0x23b0a9['arguments']=_0x3372bb;const _0x2ae9e8=await _0x54c7a9['request'](_0x425dc9(0x24e),_0x23b0a9),_0x148fa2=String(_0x2ae9e8[_0x425dc9(0x21c)][0x0][_0x425dc9(0x348)])[_0x425dc9(0x2fc)+'e']();if(_0x148fa2[_0x425dc9(0x307)](_0x425dc9(0x2c2))||_0x148fa2[_0x425dc9(0x307)](_0x19c98a['NqVXC'])||_0x148fa2[_0x425dc9(0x307)](_0x425dc9(0x22c))||_0x148fa2['includes']('STOP')){const _0x274989={};return _0x274989[_0x425dc9(0x2f0)]=_0x425dc9(0x2c2),_0x274989[_0x425dc9(0x33e)]=_0x2ae9e8['content'][0x0][_0x425dc9(0x348)],_0x274989;}await new Promise(_0x4d9cf3=>setTimeout(_0x4d9cf3,POLL_INTERVAL_MS)),_0x126cd9++;}throw new Error(_0x425dc9(0x26e)+_0x425dc9(0x36d)+'r\x20'+_0x126cd9+_0x425dc9(0x2ac));}function isErrorResponse(_0x395678){const _0x11b47e=a4_0x99a6fa;if(_0x395678[_0x11b47e(0x42f)]===!![])return!![];if(_0x395678[_0x11b47e(0x1f0)+'Content']?.[_0x11b47e(0x215)])return!![];const _0x274e48=_0x395678['content']?.[0x0]?.[_0x11b47e(0x348)]?.[_0x11b47e(0x44b)+'e']()||'';return _0x274e48[_0x11b47e(0x307)](_0x11b47e(0x215))||_0x274e48['includes']('validation');}function escapeTsvField(_0x777dae,_0x30afaf=![]){const _0x45f045=a4_0x99a6fa;if(!_0x777dae)return'\x22\x22';let _0x115c83=_0x777dae;return _0x30afaf?(_0x115c83=_0x115c83[_0x45f045(0x3c8)](/\r\n/g,'\x0a'),_0x115c83=_0x115c83[_0x45f045(0x3c8)](/\t/g,'\x20')):(_0x115c83=_0x115c83[_0x45f045(0x3c8)](/\r?\n/g,'\x20'),_0x115c83=_0x115c83[_0x45f045(0x3c8)](/\t/g,'\x20'),_0x115c83=_0x115c83['replace'](/\s+/g,'\x20'),_0x115c83=_0x115c83[_0x45f045(0x332)]()),_0x115c83=_0x115c83[_0x45f045(0x3c8)](/"/g,'\x22\x22'),'\x22'+_0x115c83+'\x22';}function saveTsv(_0x59d769,_0x38a08e){const _0x19fe89=a4_0x99a6fa,_0x4c6236={'TPtXA':function(_0x186d2c,_0x1b1f62){return _0x186d2c(_0x1b1f62);}},_0x333adc=[_0x19fe89(0x448),_0x19fe89(0x287),_0x19fe89(0x2f8),'테스트명',_0x19fe89(0x247),_0x19fe89(0x288),_0x19fe89(0x2d3),'테스트데이터',_0x19fe89(0x208),'상태',_0x19fe89(0x300),'결과','판단근거','분석\x20링크','비고'],_0x5a1179=[_0x333adc['map'](_0x34a3c6=>escapeTsvField(_0x34a3c6))[_0x19fe89(0x364)]('\x09')],_0x43e05d=Object[_0x19fe89(0x2df)](_0x59d769)[_0x19fe89(0x236)]((_0x13ae1b,_0x37655e)=>{const _0x17ac67=_0x19fe89,_0x37b841=_0x4c6236[_0x17ac67(0x321)](parseInt,_0x13ae1b[0x0][_0x17ac67(0x3c8)]('TC','')),_0x1c0518=parseInt(_0x37655e[0x0][_0x17ac67(0x3c8)]('TC',''));return _0x37b841-_0x1c0518;});for(const [_0x1300c5,_0x426882]of _0x43e05d){const _0x48eb3b=BUILTIN_TESTS[_0x19fe89(0x38f)](_0x29e630=>_0x29e630['id']===_0x1300c5);if(!_0x48eb3b)continue;let _0x6f2bb3=_0x426882[_0x19fe89(0x2f0)];_0x426882[_0x19fe89(0x3f0)][_0x19fe89(0x2af)]('N/A')&&(_0x6f2bb3=_0x19fe89(0x380));let _0x48f741=_0x426882[_0x19fe89(0x3f0)];_0x426882[_0x19fe89(0x423)]&&(_0x48f741+=_0x19fe89(0x2a9)+_0x19fe89(0x27a)+'-\x0a'+_0x426882[_0x19fe89(0x423)]);const _0x2c07a4=[_0x1300c5,_0x48eb3b[_0x19fe89(0x2b7)],_0x48eb3b[_0x19fe89(0x32a)],_0x48eb3b[_0x19fe89(0x324)],_0x48eb3b[_0x19fe89(0x305)+'on']||'',_0x48eb3b['procedure'],_0x48eb3b[_0x19fe89(0x3bf)],_0x48eb3b[_0x19fe89(0x265)]||'',_0x48eb3b['priority'],'완료',_0x19fe89(0x2ce)+'y',_0x6f2bb3,_0x48f741,_0x426882[_0x19fe89(0x21b)+'nk']||'',''];_0x5a1179[_0x19fe89(0x224)](_0x2c07a4[_0x19fe89(0x240)]((_0x4c5130,_0x1fd84f)=>escapeTsvField(_0x4c5130,_0x1fd84f===0x5||_0x1fd84f===0xc))['join']('\x09'));}a4_0x50bb66['writeFileS'+_0x19fe89(0x306)](_0x38a08e,_0x5a1179[_0x19fe89(0x364)]('\x0a'),'utf-8');}const args=process[a4_0x99a6fa(0x1f4)]['slice'](0x2),customPath=args[0x0],qaTcDir=customPath?a4_0x30148f['resolve'](process['cwd'](),customPath):a4_0x30148f[a4_0x99a6fa(0x2e7)](__dirname,a4_0x99a6fa(0x303)+a4_0x99a6fa(0x3d0)+'tc');console[a4_0x99a6fa(0x31d)](a4_0x99a6fa(0x2ec)+a4_0x99a6fa(0x412)+a4_0x99a6fa(0x35b)+qaTcDir);const sastDir=a4_0x30148f[a4_0x99a6fa(0x2e7)](qaTcDir,a4_0x99a6fa(0x3ff)),scaDir=a4_0x30148f[a4_0x99a6fa(0x2e7)](qaTcDir,a4_0x99a6fa(0x3f1)),sastAllLanguageDir=a4_0x30148f[a4_0x99a6fa(0x2e7)](sastDir,a4_0x99a6fa(0x334)+'ge'),javaFile=a4_0x30148f[a4_0x99a6fa(0x2e7)](sastAllLanguageDir,a4_0x99a6fa(0x331)+'.java'),jsFile=a4_0x30148f['resolve'](sastAllLanguageDir,a4_0x99a6fa(0x20e)+a4_0x99a6fa(0x422)+'s'),safeJavaFile=a4_0x30148f[a4_0x99a6fa(0x2e7)](sastAllLanguageDir,a4_0x99a6fa(0x3b4)+a4_0x99a6fa(0x42c)+a4_0x99a6fa(0x27c)+'x'),javaContent=a4_0x50bb66['existsSync'](javaFile)?a4_0x50bb66[a4_0x99a6fa(0x278)+'nc'](javaFile,a4_0x99a6fa(0x23b)):'',jsContent=a4_0x50bb66[a4_0x99a6fa(0x42a)](jsFile)?a4_0x50bb66[a4_0x99a6fa(0x278)+'nc'](jsFile,'utf-8'):'',safeJavaContent=a4_0x50bb66[a4_0x99a6fa(0x42a)](safeJavaFile)?a4_0x50bb66['readFileSy'+'nc'](safeJavaFile,a4_0x99a6fa(0x23b)):'',sastTestFolder=sastDir,scaTestFolder=scaDir,packageJsonFile=a4_0x30148f[a4_0x99a6fa(0x2e7)](scaTestFolder,a4_0x99a6fa(0x32e)+'ckage.json'),packageJsonContent=a4_0x50bb66[a4_0x99a6fa(0x42a)](packageJsonFile)?a4_0x50bb66[a4_0x99a6fa(0x278)+'nc'](packageJsonFile,'utf-8'):'',largeZipPath=a4_0x30148f[a4_0x99a6fa(0x2e7)](qaTcDir,a4_0x99a6fa(0x41b)+a4_0x99a6fa(0x24c)+'zip'),largeFolderPath=a4_0x30148f['resolve'](qaTcDir,a4_0x99a6fa(0x41b)+a4_0x99a6fa(0x33f)),BUILTIN_JAVA_CODE=a4_0x99a6fa(0x2a6)+a4_0x99a6fa(0x23f)+a4_0x99a6fa(0x343)+a4_0x99a6fa(0x42e)+a4_0x99a6fa(0x3cb)+a4_0x99a6fa(0x256)+'sername,\x20S'+a4_0x99a6fa(0x229)+a4_0x99a6fa(0x3db)+a4_0x99a6fa(0x2d0)+a4_0x99a6fa(0x257)+a4_0x99a6fa(0x2ba)+a4_0x99a6fa(0x2ee)+a4_0x99a6fa(0x409)+a4_0x99a6fa(0x210)+a4_0x99a6fa(0x2f7)+a4_0x99a6fa(0x299)+a4_0x99a6fa(0x31e),BUILTIN_JS_CODE='const\x20expr'+a4_0x99a6fa(0x3a8)+a4_0x99a6fa(0x362)+'ss\x27);\x0acons'+'t\x20app\x20=\x20ex'+'press();\x0aa'+a4_0x99a6fa(0x2ff)+'ser\x27,\x20(req'+a4_0x99a6fa(0x3e9)+a4_0x99a6fa(0x337)+a4_0x99a6fa(0x3fc)+'\x20req.query'+a4_0x99a6fa(0x326)+a4_0x99a6fa(0x424)+a4_0x99a6fa(0x1f3)+'\x20*\x20FROM\x20us'+a4_0x99a6fa(0x429)+'id=\x22\x20+\x20use'+a4_0x99a6fa(0x39f)+a4_0x99a6fa(0x239)+'ery);\x0a});';function extractAnalysisId(_0x33e436){const _0x5f1247=a4_0x99a6fa,_0x552b07={'RUgKY':function(_0x21a73a,_0x32fc16){return _0x21a73a(_0x32fc16);}};if(_0x33e436[_0x5f1247(0x1f0)+_0x5f1247(0x2f2)]&&_0x33e436[_0x5f1247(0x1f0)+_0x5f1247(0x2f2)][_0x5f1247(0x20c)])return _0x552b07[_0x5f1247(0x23e)](String,_0x33e436[_0x5f1247(0x1f0)+_0x5f1247(0x2f2)][_0x5f1247(0x20c)]);const _0x414890=_0x33e436[_0x5f1247(0x21c)][0x0][_0x5f1247(0x348)],_0x4401ba=_0x414890[_0x5f1247(0x374)](/Analysis ID:\s*(\d+)/i)||_0x414890[_0x5f1247(0x374)](/분석 ID:\s*(\d+)/i);if(!_0x4401ba)throw new Error('Failed\x20to\x20'+_0x5f1247(0x3ca)+_0x5f1247(0x290)+_0x5f1247(0x3d1)+':\x20'+_0x414890);return _0x4401ba[0x1];}const BUILTIN_TESTS=[{'id':a4_0x99a6fa(0x1ef),'tool':a4_0x99a6fa(0x21a)+a4_0x99a6fa(0x286),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x243)+'\x20SAST\x20분석\x20성'+'공','procedure':'1.\x20fileCon'+a4_0x99a6fa(0x205)+a4_0x99a6fa(0x255)+a4_0x99a6fa(0x2cf)+'UserContro'+'ller.java\x20'+a4_0x99a6fa(0x32d)+'행','expected':a4_0x99a6fa(0x20c)+a4_0x99a6fa(0x280)+a4_0x99a6fa(0x450),'data':a4_0x99a6fa(0x223)+a4_0x99a6fa(0x2be)+a4_0x99a6fa(0x43d)+a4_0x99a6fa(0x285)+'n','priority':'높음','task':async _0x3636b2=>{const _0x391670=a4_0x99a6fa,_0x136e18=javaContent||BUILTIN_JAVA_CODE,_0x260ff5={};_0x260ff5[_0x391670(0x223)+'t']=_0x136e18,_0x260ff5[_0x391670(0x3de)]='Vulnerable'+_0x391670(0x28a);const _0x5857e9={};_0x5857e9[_0x391670(0x324)]=_0x391670(0x21a)+'le_sast',_0x5857e9[_0x391670(0x22b)]=_0x260ff5;const _0x10476d=await _0x3636b2[_0x391670(0x428)]('tools/call',_0x5857e9),_0x3d21dd=extractAnalysisId(_0x10476d);await pollUntilComplete(_0x3636b2,_0x3d21dd);const _0x231bfd={};_0x231bfd[_0x391670(0x20c)]=_0x3d21dd;const _0x5cb93d={};_0x5cb93d[_0x391670(0x324)]=_0x391670(0x3bb)+_0x391670(0x3ac),_0x5cb93d[_0x391670(0x22b)]=_0x231bfd;const _0x1e981c=await _0x3636b2[_0x391670(0x428)](_0x391670(0x24e),_0x5cb93d),_0x4e65ba=_0x1e981c['content'][0x0][_0x391670(0x348)],_0x45bb73=_0x4e65ba[_0x391670(0x374)](/(\d+)\s*vulnerabilities/i),_0x398ee0=_0x45bb73?_0x45bb73[0x1]:'0';return{'passed':!![],'rationale':'실제\x20실행\x20검증됨\x20'+_0x391670(0x249)+_0x391670(0x43f)+_0x3d21dd+_0x391670(0x203)+_0x398ee0+_0x391670(0x30d),'analysisLink':getAnalysisLink(_0x3d21dd),'toolOutput':JSON[_0x391670(0x315)](_0x10476d,null,0x2)};}},{'id':a4_0x99a6fa(0x35e),'tool':a4_0x99a6fa(0x21a)+'le_sast','category':'오류처리','name':'API\x20키\x20없음\x20오'+'류','procedure':a4_0x99a6fa(0x3c4)+'_API_KEY\x20미'+'설정\x0a2.\x20도구\x20실'+'행','expected':a4_0x99a6fa(0x1fb),'priority':'높음','task':async _0xff382a=>{const _0x10c436=a4_0x99a6fa,_0x389855={};_0x389855[_0x10c436(0x2e3)]=_0x10c436(0x27b)+_0x10c436(0x37d)+_0x10c436(0x28c)+'EY\x20설정을\x20해제하'+_0x10c436(0x29f);const _0x4a6cad=_0x389855,_0x768d36={};return _0x768d36[_0x10c436(0x28f)]=!![],_0x768d36[_0x10c436(0x3f0)]=_0x4a6cad[_0x10c436(0x2e3)],_0x768d36;}},{'id':a4_0x99a6fa(0x439),'tool':a4_0x99a6fa(0x21a)+a4_0x99a6fa(0x286),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x26f)+a4_0x99a6fa(0x2e1)+'t','procedure':a4_0x99a6fa(0x389)+a4_0x99a6fa(0x22e)+a4_0x99a6fa(0x3a4)+'Name에\x20.js\x20'+a4_0x99a6fa(0x2dc),'expected':'정상적으로\x20anal'+a4_0x99a6fa(0x370),'data':a4_0x99a6fa(0x322)+'\x22index.js\x22','priority':'중간','task':async _0x1e542b=>{const _0x41d34d=a4_0x99a6fa,_0x2e15c0={'hsdvp':'analyze_fi'+_0x41d34d(0x286),'qDnnE':function(_0x3b5f29,_0x4c111e){return _0x3b5f29(_0x4c111e);}},_0xc50b98=jsContent||BUILTIN_JS_CODE,_0x4bc675={};_0x4bc675[_0x41d34d(0x223)+'t']=_0xc50b98,_0x4bc675[_0x41d34d(0x3de)]=_0x41d34d(0x42d);const _0xb8fce5={};_0xb8fce5[_0x41d34d(0x324)]=_0x2e15c0[_0x41d34d(0x3e7)],_0xb8fce5[_0x41d34d(0x22b)]=_0x4bc675;const _0x3968da=await _0x1e542b[_0x41d34d(0x428)](_0x41d34d(0x24e),_0xb8fce5),_0x233cd7=_0x2e15c0['qDnnE'](extractAnalysisId,_0x3968da);return{'passed':!![],'rationale':_0x41d34d(0x2c6)+_0x41d34d(0x417)+_0x41d34d(0x2db)+_0x41d34d(0x29d)+_0x233cd7+_0x41d34d(0x2e5),'analysisLink':getAnalysisLink(_0x233cd7),'toolOutput':JSON[_0x41d34d(0x315)](_0x3968da,null,0x2)};}},{'id':a4_0x99a6fa(0x3ea),'tool':a4_0x99a6fa(0x21a)+a4_0x99a6fa(0x286),'category':a4_0x99a6fa(0x413),'name':a4_0x99a6fa(0x2a0),'procedure':a4_0x99a6fa(0x202)+'파일명\x20입력\x0a2.\x20'+a4_0x99a6fa(0x272),'expected':a4_0x99a6fa(0x1fb),'priority':'낮음','task':async _0x281c5b=>{const _0x5f53b1=a4_0x99a6fa,_0x562c9c={};_0x562c9c['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x562c9c[_0x5f53b1(0x3de)]='UserContro'+_0x5f53b1(0x2d2);const _0xdc6e7e={};_0xdc6e7e['name']=_0x5f53b1(0x21a)+_0x5f53b1(0x286),_0xdc6e7e[_0x5f53b1(0x22b)]=_0x562c9c;const _0x2c68e4=await _0x281c5b[_0x5f53b1(0x428)]('tools/call',_0xdc6e7e);if(_0x2c68e4[_0x5f53b1(0x42f)]||_0x2c68e4[_0x5f53b1(0x21c)]?.[0x0]?.[_0x5f53b1(0x348)]?.[_0x5f53b1(0x307)](_0x5f53b1(0x215)))return{'passed':!![],'rationale':_0x5f53b1(0x411)+':\x20'+(_0x2c68e4[_0x5f53b1(0x21c)]?.[0x0]?.[_0x5f53b1(0x348)]||'Error\x20dete'+_0x5f53b1(0x318)),'toolOutput':JSON[_0x5f53b1(0x315)](_0x2c68e4,null,0x2)};return{'passed':![],'rationale':_0x5f53b1(0x44a)+'\x20분석이\x20수락됨','toolOutput':JSON['stringify'](_0x2c68e4,null,0x2)};}},{'id':'TC005','tool':a4_0x99a6fa(0x21a)+a4_0x99a6fa(0x286),'category':'오류처리','name':a4_0x99a6fa(0x41a),'procedure':a4_0x99a6fa(0x38d)+a4_0x99a6fa(0x3fd),'expected':'오류\x20메시지','priority':'낮음','task':async _0x2f9b8f=>{const _0x262c08=a4_0x99a6fa,_0x3b7735={};_0x3b7735['ogLBj']=_0x262c08(0x21a)+_0x262c08(0x286);const _0x5eff94=_0x3b7735,_0x575652={};_0x575652[_0x262c08(0x223)+'t']='',_0x575652[_0x262c08(0x3de)]=_0x262c08(0x40c);const _0xcd68e7={};_0xcd68e7[_0x262c08(0x324)]=_0x5eff94[_0x262c08(0x3eb)],_0xcd68e7[_0x262c08(0x22b)]=_0x575652;const _0xa4ccc4=await _0x2f9b8f['request'](_0x262c08(0x24e),_0xcd68e7);if(isErrorResponse(_0xa4ccc4))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0xa4ccc4[_0x262c08(0x21c)]?.[0x0]?.[_0x262c08(0x348)]||_0x262c08(0x2cb)+_0x262c08(0x318)),'toolOutput':JSON['stringify'](_0xa4ccc4,null,0x2)};return{'passed':![],'rationale':_0x262c08(0x44a)+_0x262c08(0x301),'toolOutput':JSON['stringify'](_0xa4ccc4,null,0x2)};}},{'id':a4_0x99a6fa(0x2c7),'tool':a4_0x99a6fa(0x21a)+a4_0x99a6fa(0x286),'category':a4_0x99a6fa(0x3f5),'name':a4_0x99a6fa(0x3ab),'procedure':'1.\x20.txt\x20파일'+a4_0x99a6fa(0x373),'expected':a4_0x99a6fa(0x357),'priority':'낮음','task':async _0xd56b83=>{const _0x1c180b=a4_0x99a6fa;try{const _0x59dfea={};_0x59dfea[_0x1c180b(0x223)+'t']=_0x1c180b(0x261)+'d',_0x59dfea[_0x1c180b(0x3de)]=_0x1c180b(0x2d8);const _0x2ee38d={};_0x2ee38d[_0x1c180b(0x324)]=_0x1c180b(0x21a)+'le_sast',_0x2ee38d['arguments']=_0x59dfea;const _0x1cb292=await _0xd56b83[_0x1c180b(0x428)](_0x1c180b(0x24e),_0x2ee38d);return{'passed':!![],'rationale':_0x1c180b(0x43b)+_0x1c180b(0x3c5)+_0x1c180b(0x36a),'toolOutput':JSON[_0x1c180b(0x315)](_0x1cb292,null,0x2)};}catch(_0x10e590){const _0x2755fe={};return _0x2755fe[_0x1c180b(0x28f)]=!![],_0x2755fe[_0x1c180b(0x3f0)]=_0x1c180b(0x2a1)+'\x20'+_0x10e590[_0x1c180b(0x2ab)],_0x2755fe;}}},{'id':a4_0x99a6fa(0x2b5),'tool':a4_0x99a6fa(0x21a)+a4_0x99a6fa(0x43a),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x2e0)+a4_0x99a6fa(0x387),'procedure':a4_0x99a6fa(0x24a)+a4_0x99a6fa(0x253)+a4_0x99a6fa(0x29a),'expected':a4_0x99a6fa(0x20c)+'\x20반환','priority':'높음','task':async _0x126f07=>{const _0x568bba=a4_0x99a6fa,_0x51655d={'EYrFR':function(_0x5681b3,_0x556c52,_0x4b73e0){return _0x5681b3(_0x556c52,_0x4b73e0);}};if(!javaContent||!jsContent){const _0x3d2acf={};return _0x3d2acf['passed']=!![],_0x3d2acf['rationale']=_0x568bba(0x394)+_0x568bba(0x20a),_0x3d2acf;}const _0x857bbb={};_0x857bbb[_0x568bba(0x2d5)]=[javaFile,jsFile];const _0x45c6e2={};_0x45c6e2[_0x568bba(0x324)]=_0x568bba(0x21a)+_0x568bba(0x43a),_0x45c6e2[_0x568bba(0x22b)]=_0x857bbb;const _0x1e9365=await _0x126f07[_0x568bba(0x428)](_0x568bba(0x24e),_0x45c6e2),_0x4bafcd=extractAnalysisId(_0x1e9365);return await _0x51655d[_0x568bba(0x335)](pollUntilComplete,_0x126f07,_0x4bafcd),{'passed':!![],'rationale':_0x568bba(0x2c6)+_0x568bba(0x2a3)+_0x568bba(0x274)+_0x4bafcd+'\x20완료.','analysisLink':getAnalysisLink(_0x4bafcd),'toolOutput':JSON[_0x568bba(0x315)](_0x1e9365,null,0x2)};}},{'id':a4_0x99a6fa(0x1f2),'tool':a4_0x99a6fa(0x21a)+a4_0x99a6fa(0x43a),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x2de)+a4_0x99a6fa(0x40d),'procedure':a4_0x99a6fa(0x36f)+a4_0x99a6fa(0x376)+'2.\x20도구\x20실행','expected':a4_0x99a6fa(0x20c)+a4_0x99a6fa(0x352),'priority':'낮음','task':async _0x48a722=>{const _0x4e7cda=a4_0x99a6fa,_0x2a7a5d={};_0x2a7a5d['BUKgL']=_0x4e7cda(0x24e);const _0x5137cd=_0x2a7a5d;if(!javaContent){const _0x400b00={};return _0x400b00[_0x4e7cda(0x28f)]=!![],_0x400b00[_0x4e7cda(0x3f0)]=_0x4e7cda(0x394)+_0x4e7cda(0x20a),_0x400b00;}const _0x1e14cd={};_0x1e14cd[_0x4e7cda(0x2d5)]=[javaFile];const _0x23b2f0={};_0x23b2f0['name']='analyze_fi'+'les_sast',_0x23b2f0[_0x4e7cda(0x22b)]=_0x1e14cd;const _0x56edf0=await _0x48a722[_0x4e7cda(0x428)](_0x5137cd[_0x4e7cda(0x408)],_0x23b2f0),_0x228aa9=extractAnalysisId(_0x56edf0);return{'passed':!![],'rationale':_0x4e7cda(0x22a)+_0x4e7cda(0x3a5)+'\x20'+_0x228aa9,'analysisLink':getAnalysisLink(_0x228aa9),'toolOutput':JSON['stringify'](_0x56edf0,null,0x2)};}},{'id':'TC012','tool':a4_0x99a6fa(0x21a)+'les_sast','category':'오류처리','name':a4_0x99a6fa(0x3cf),'procedure':a4_0x99a6fa(0x33c)+'\x0a2.\x20도구\x20실행','expected':a4_0x99a6fa(0x1fb),'priority':'중간','task':async _0x32f67d=>{const _0x3e8dee=a4_0x99a6fa,_0x122c56={};_0x122c56[_0x3e8dee(0x32b)]=_0x3e8dee(0x24e),_0x122c56[_0x3e8dee(0x39e)]=_0x3e8dee(0x2cb)+_0x3e8dee(0x318);const _0x314368=_0x122c56,_0x51ca11={};_0x51ca11['filePaths']=[];const _0x512ecf={};_0x512ecf[_0x3e8dee(0x324)]='analyze_fi'+_0x3e8dee(0x43a),_0x512ecf[_0x3e8dee(0x22b)]=_0x51ca11;const _0x301f59=await _0x32f67d[_0x3e8dee(0x428)](_0x314368[_0x3e8dee(0x32b)],_0x512ecf);if(isErrorResponse(_0x301f59))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x301f59[_0x3e8dee(0x21c)]?.[0x0]?.[_0x3e8dee(0x348)]||_0x314368['Rkano']),'toolOutput':JSON[_0x3e8dee(0x315)](_0x301f59,null,0x2)};return{'passed':![],'rationale':_0x3e8dee(0x44a)+_0x3e8dee(0x301),'toolOutput':JSON[_0x3e8dee(0x315)](_0x301f59,null,0x2)};}},{'id':a4_0x99a6fa(0x43e),'tool':a4_0x99a6fa(0x21a)+'les_sast','category':a4_0x99a6fa(0x413),'name':a4_0x99a6fa(0x233)+a4_0x99a6fa(0x246),'procedure':a4_0x99a6fa(0x3c3)+a4_0x99a6fa(0x425)+a4_0x99a6fa(0x272),'expected':a4_0x99a6fa(0x1fb),'priority':'중간','task':async _0x5810cc=>{const _0x3ce17d=a4_0x99a6fa,_0x6dd86c={};_0x6dd86c[_0x3ce17d(0x2d5)]=[_0x3ce17d(0x419)+'nt/file.ja'+'va'];const _0x1ab204={};_0x1ab204[_0x3ce17d(0x324)]=_0x3ce17d(0x21a)+_0x3ce17d(0x43a),_0x1ab204[_0x3ce17d(0x22b)]=_0x6dd86c;const _0x2b2b78=await _0x5810cc[_0x3ce17d(0x428)]('tools/call',_0x1ab204);if(isErrorResponse(_0x2b2b78))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x2b2b78[_0x3ce17d(0x21c)]?.[0x0]?.[_0x3ce17d(0x348)]||_0x3ce17d(0x2cb)+_0x3ce17d(0x318)),'toolOutput':JSON['stringify'](_0x2b2b78,null,0x2)};return{'passed':![],'rationale':_0x3ce17d(0x44a)+_0x3ce17d(0x301),'toolOutput':JSON[_0x3ce17d(0x315)](_0x2b2b78,null,0x2)};}},{'id':'TC020','tool':a4_0x99a6fa(0x29b)+a4_0x99a6fa(0x360),'category':a4_0x99a6fa(0x231),'name':'폴더\x20전체\x20SAST'+a4_0x99a6fa(0x387),'procedure':'1.\x20폴더\x20경로\x20입'+a4_0x99a6fa(0x21e),'expected':a4_0x99a6fa(0x20c)+'\x20반환','priority':'높음','task':async _0x227476=>{const _0x3e66f1=a4_0x99a6fa;if(!a4_0x50bb66['existsSync'](sastTestFolder)){const _0x4db8bc={};return _0x4db8bc['passed']=!![],_0x4db8bc['rationale']=_0x3e66f1(0x3bc)+'t)를\x20찾을\x20수\x20없'+'어\x20건너뜀',_0x4db8bc;}const _0x48d1ac={};_0x48d1ac[_0x3e66f1(0x204)]=sastTestFolder;const _0x28537f={};_0x28537f[_0x3e66f1(0x324)]=_0x3e66f1(0x29b)+_0x3e66f1(0x360),_0x28537f['arguments']=_0x48d1ac;const _0x474ff9=await _0x227476[_0x3e66f1(0x428)](_0x3e66f1(0x24e),_0x28537f),_0x3a53f9=extractAnalysisId(_0x474ff9);return await pollUntilComplete(_0x227476,_0x3a53f9),{'passed':!![],'rationale':_0x3e66f1(0x2d6)+_0x3a53f9+_0x3e66f1(0x23a),'analysisLink':getAnalysisLink(_0x3a53f9),'toolOutput':JSON['stringify'](_0x474ff9,null,0x2)};}},{'id':a4_0x99a6fa(0x34e),'tool':a4_0x99a6fa(0x29b)+a4_0x99a6fa(0x360),'category':a4_0x99a6fa(0x231),'name':'대용량\x20폴더\x20ZIP'+a4_0x99a6fa(0x2d7),'procedure':a4_0x99a6fa(0x3d2)+'분석','expected':a4_0x99a6fa(0x20c)+'\x20반환\x20또는\x20크기\x20'+'제한','priority':'낮음','task':async _0x1782da=>{const _0x58f01c=a4_0x99a6fa;if(!a4_0x50bb66[_0x58f01c(0x42a)](largeFolderPath)){const _0x352077={};return _0x352077[_0x58f01c(0x28f)]=!![],_0x352077[_0x58f01c(0x3f0)]=_0x58f01c(0x328)+'(big_files'+_0x58f01c(0x2ea)+_0x58f01c(0x375)+_0x58f01c(0x346),_0x352077;}const _0x32c8b2={};_0x32c8b2[_0x58f01c(0x204)]=largeFolderPath;const _0x2c4716={};_0x2c4716[_0x58f01c(0x324)]=_0x58f01c(0x29b)+_0x58f01c(0x360),_0x2c4716[_0x58f01c(0x22b)]=_0x32c8b2;const _0x472c16=await _0x1782da[_0x58f01c(0x428)](_0x58f01c(0x24e),_0x2c4716),_0x23ac95=extractAnalysisId(_0x472c16);return await pollUntilComplete(_0x1782da,_0x23ac95),{'passed':!![],'rationale':_0x58f01c(0x3d7)+'완료.\x20ID:\x20'+_0x23ac95,'analysisLink':getAnalysisLink(_0x23ac95),'toolOutput':JSON[_0x58f01c(0x315)](_0x472c16,null,0x2)};}},{'id':a4_0x99a6fa(0x27d),'tool':'analyze_fo'+a4_0x99a6fa(0x360),'category':a4_0x99a6fa(0x413),'name':a4_0x99a6fa(0x32f),'procedure':'1.\x20빈\x20경로\x20입력'+a4_0x99a6fa(0x34b),'expected':a4_0x99a6fa(0x313),'priority':'중간','task':async _0x5c0d6e=>{const _0x282d58=a4_0x99a6fa,_0x48b914={};_0x48b914[_0x282d58(0x418)]='tools/call';const _0x44b5fd=_0x48b914,_0x327acd={};_0x327acd[_0x282d58(0x204)]='';const _0xda9214={};_0xda9214[_0x282d58(0x324)]='analyze_fo'+_0x282d58(0x360),_0xda9214[_0x282d58(0x22b)]=_0x327acd;const _0x2a4ea1=await _0x5c0d6e[_0x282d58(0x428)](_0x44b5fd[_0x282d58(0x418)],_0xda9214);if(isErrorResponse(_0x2a4ea1))return{'passed':!![],'rationale':_0x282d58(0x411)+':\x20'+(_0x2a4ea1[_0x282d58(0x21c)]?.[0x0]?.[_0x282d58(0x348)]||_0x282d58(0x2cb)+_0x282d58(0x318)),'toolOutput':JSON[_0x282d58(0x315)](_0x2a4ea1,null,0x2)};return{'passed':![],'rationale':_0x282d58(0x44a)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x282d58(0x315)](_0x2a4ea1,null,0x2)};}},{'id':a4_0x99a6fa(0x26c),'tool':a4_0x99a6fa(0x29b)+a4_0x99a6fa(0x360),'category':a4_0x99a6fa(0x413),'name':a4_0x99a6fa(0x214),'procedure':a4_0x99a6fa(0x3c3)+a4_0x99a6fa(0x3ee)+'실행','expected':a4_0x99a6fa(0x313),'priority':'중간','task':async _0x1cd172=>{const _0x4e6730=a4_0x99a6fa,_0xb875b2={};_0xb875b2[_0x4e6730(0x204)]=_0x4e6730(0x419)+_0x4e6730(0x36c);const _0x23f538={};_0x23f538[_0x4e6730(0x324)]=_0x4e6730(0x29b)+_0x4e6730(0x360),_0x23f538[_0x4e6730(0x22b)]=_0xb875b2;const _0x2a1316=await _0x1cd172[_0x4e6730(0x428)](_0x4e6730(0x24e),_0x23f538);if(isErrorResponse(_0x2a1316))return{'passed':!![],'rationale':_0x4e6730(0x411)+':\x20'+(_0x2a1316[_0x4e6730(0x21c)]?.[0x0]?.[_0x4e6730(0x348)]||_0x4e6730(0x2cb)+_0x4e6730(0x318)),'toolOutput':JSON[_0x4e6730(0x315)](_0x2a1316,null,0x2)};return{'passed':![],'rationale':_0x4e6730(0x44a)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x4e6730(0x315)](_0x2a1316,null,0x2)};}},{'id':a4_0x99a6fa(0x34f),'tool':a4_0x99a6fa(0x2a5)+a4_0x99a6fa(0x279),'category':'정상동작','name':'ZIP\x20파일\x20SAS'+'T\x20분석\x20성공','procedure':'1.\x20ZIP\x20파일\x20'+a4_0x99a6fa(0x2fa)+a4_0x99a6fa(0x43c),'expected':a4_0x99a6fa(0x20c)+'\x20반환','priority':'높음','task':async _0x11f560=>{const _0x57eb7f=a4_0x99a6fa,_0x360bc0={};_0x360bc0[_0x57eb7f(0x1f1)]=_0x57eb7f(0x40e)+_0x57eb7f(0x2b6);const _0x5d087c=_0x360bc0,_0x3f96a3=a4_0x30148f[_0x57eb7f(0x364)](QA_TC_ROOT,'sast');if(a4_0x50bb66['existsSync'](_0x3f96a3)){const _0x5767e2=createTempZip(_0x3f96a3,_0x5d087c['YrFLF']);try{const _0x463e94={};_0x463e94[_0x57eb7f(0x3f4)+'h']=_0x5767e2;const _0x52b7b1={};_0x52b7b1[_0x57eb7f(0x324)]=_0x57eb7f(0x2a5)+_0x57eb7f(0x279),_0x52b7b1[_0x57eb7f(0x22b)]=_0x463e94;const _0x1b2430=await _0x11f560['request'](_0x57eb7f(0x24e),_0x52b7b1),_0x58e75e=extractAnalysisId(_0x1b2430);return await pollUntilComplete(_0x11f560,_0x58e75e),{'passed':!![],'rationale':_0x57eb7f(0x3b6)+'석\x20'+_0x58e75e+_0x57eb7f(0x403),'analysisLink':getAnalysisLink(_0x58e75e),'toolOutput':JSON['stringify'](_0x1b2430,null,0x2)};}finally{try{if(a4_0x50bb66[_0x57eb7f(0x42a)](_0x5767e2))a4_0x50bb66[_0x57eb7f(0x3dd)](_0x5767e2);}catch(_0x3ec295){}}}const _0x3b6072={};return _0x3b6072[_0x57eb7f(0x28f)]=!![],_0x3b6072[_0x57eb7f(0x3f0)]='ZIP\x20SAST\x20분'+_0x57eb7f(0x3f7)+_0x57eb7f(0x398)+'files)',_0x3b6072;}},{'id':'TC031','tool':a4_0x99a6fa(0x2a5)+a4_0x99a6fa(0x279),'category':a4_0x99a6fa(0x231),'name':'대용량\x20ZIP\x20파일'+a4_0x99a6fa(0x39b),'procedure':a4_0x99a6fa(0x3ef)+a4_0x99a6fa(0x25f)+a4_0x99a6fa(0x399),'expected':a4_0x99a6fa(0x20c)+'\x20반환\x20또는\x20크기\x20'+'제한\x20오류','priority':'중간','task':async _0x12559a=>{const _0x317cec=a4_0x99a6fa,_0x3d9b66={'VguWu':function(_0x18855d,_0x33abea){return _0x18855d(_0x33abea);}};if(!a4_0x50bb66['existsSync'](largeZipPath)){const _0x1c6f83={};return _0x1c6f83['passed']=!![],_0x1c6f83[_0x317cec(0x3f0)]='대용량\x20ZIP\x20파일'+_0x317cec(0x33a)+_0x317cec(0x346),_0x1c6f83;}try{const _0x3a6d0e={};_0x3a6d0e[_0x317cec(0x3f4)+'h']=largeZipPath;const _0x323e23={};_0x323e23['name']=_0x317cec(0x2a5)+_0x317cec(0x279),_0x323e23[_0x317cec(0x22b)]=_0x3a6d0e;const _0x58cae0=await _0x12559a['request'](_0x317cec(0x24e),_0x323e23),_0x566a44=extractAnalysisId(_0x58cae0);return await pollUntilComplete(_0x12559a,_0x566a44),{'passed':!![],'rationale':_0x317cec(0x3ad)+'\x20'+_0x566a44+_0x317cec(0x23a),'analysisLink':_0x3d9b66[_0x317cec(0x382)](getAnalysisLink,_0x566a44),'toolOutput':JSON[_0x317cec(0x315)](_0x58cae0,null,0x2)};}catch(_0x4523ad){const _0x4193c9={};return _0x4193c9[_0x317cec(0x28f)]=!![],_0x4193c9['rationale']=_0x317cec(0x3cc)+_0x4523ad[_0x317cec(0x2ab)],_0x4193c9;}}},{'id':a4_0x99a6fa(0x2ae),'tool':a4_0x99a6fa(0x2a5)+a4_0x99a6fa(0x279),'category':a4_0x99a6fa(0x231),'name':'ZIP\x20크기\x20초과\x20'+'검증','procedure':a4_0x99a6fa(0x3ef)+a4_0x99a6fa(0x386),'expected':'analysisId'+'\x20또는\x20크기\x20오류','priority':'중간','task':async _0x14414c=>({'passed':!![],'rationale':a4_0x99a6fa(0x38a)+a4_0x99a6fa(0x3da)})},{'id':'TC033','tool':a4_0x99a6fa(0x2a5)+a4_0x99a6fa(0x279),'category':a4_0x99a6fa(0x413),'name':a4_0x99a6fa(0x430),'procedure':a4_0x99a6fa(0x3c3)+a4_0x99a6fa(0x24d),'expected':'오류\x20메시지','priority':'중간','task':async _0x49b778=>{const _0x2068c1=a4_0x99a6fa,_0x56fc50={};_0x56fc50['kfEFk']=_0x2068c1(0x2a5)+_0x2068c1(0x279);const _0x3c1937=_0x56fc50,_0x3b3702={};_0x3b3702[_0x2068c1(0x3f4)+'h']=_0x2068c1(0x419)+_0x2068c1(0x2b9);const _0x3a4a2b={};_0x3a4a2b['name']=_0x3c1937[_0x2068c1(0x314)],_0x3a4a2b[_0x2068c1(0x22b)]=_0x3b3702;const _0x29d326=await _0x49b778[_0x2068c1(0x428)](_0x2068c1(0x24e),_0x3a4a2b);if(isErrorResponse(_0x29d326))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x29d326[_0x2068c1(0x21c)]?.[0x0]?.[_0x2068c1(0x348)]||_0x2068c1(0x2cb)+'cted'),'toolOutput':JSON[_0x2068c1(0x315)](_0x29d326,null,0x2)};return{'passed':![],'rationale':_0x2068c1(0x44a)+_0x2068c1(0x301),'toolOutput':JSON[_0x2068c1(0x315)](_0x29d326,null,0x2)};}},{'id':a4_0x99a6fa(0x449),'tool':'analyze_fi'+'le_sca','category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x3aa)+a4_0x99a6fa(0x237),'procedure':'1.\x20package'+a4_0x99a6fa(0x3a1)+a4_0x99a6fa(0x1f7),'expected':'컴포넌트\x20및\x20취약점'+a4_0x99a6fa(0x218),'priority':'높음','task':async _0x4ab4ac=>{const _0x4601cd=a4_0x99a6fa;if(!a4_0x50bb66[_0x4601cd(0x42a)](packageJsonFile)){const _0x87b496={};return _0x87b496[_0x4601cd(0x28f)]=!![],_0x87b496['rationale']=_0x4601cd(0x394)+_0x4601cd(0x20a),_0x87b496;}const _0x53091c={};_0x53091c['filePath']=packageJsonFile;const _0x9f3fbd={};_0x9f3fbd[_0x4601cd(0x324)]=_0x4601cd(0x21a)+_0x4601cd(0x350),_0x9f3fbd['arguments']=_0x53091c;const _0x376798=await _0x4ab4ac[_0x4601cd(0x428)](_0x4601cd(0x24e),_0x9f3fbd),_0x12f8c3=extractAnalysisId(_0x376798);await pollUntilComplete(_0x4ab4ac,_0x12f8c3);const _0x31b646={};_0x31b646[_0x4601cd(0x20c)]=_0x12f8c3;const _0x18cf98={};_0x18cf98[_0x4601cd(0x324)]=_0x4601cd(0x294)+_0x4601cd(0x3c9)+_0x4601cd(0x28b),_0x18cf98['arguments']=_0x31b646;const _0x5a0d18=await _0x4ab4ac[_0x4601cd(0x428)](_0x4601cd(0x24e),_0x18cf98),_0x1fc76d=_0x5a0d18[_0x4601cd(0x21c)][0x0]['text'],_0x320fdc=_0x1fc76d[_0x4601cd(0x374)](/(\d+)\s*components/i),_0x77aa95=_0x320fdc?_0x320fdc[0x1]:'0';return{'passed':!![],'rationale':'SCA\x20분석\x20'+_0x12f8c3+(_0x4601cd(0x1f6)+'\x20')+_0x77aa95+'개.','analysisLink':getAnalysisLink(_0x12f8c3),'toolOutput':JSON[_0x4601cd(0x315)](_0x376798,null,0x2)};}},{'id':a4_0x99a6fa(0x3f9),'tool':a4_0x99a6fa(0x21a)+a4_0x99a6fa(0x3b0),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x420)+a4_0x99a6fa(0x44c),'procedure':'1.\x20여러\x20의존성\x20'+a4_0x99a6fa(0x3d6)+'.\x20도구\x20실행','expected':a4_0x99a6fa(0x20c)+a4_0x99a6fa(0x352),'priority':'높음','task':async _0x31bddf=>{const _0x564360=a4_0x99a6fa,_0x1519b5={'LtnIM':function(_0x4e3d7b,_0x1d43be,_0x46494b){return _0x4e3d7b(_0x1d43be,_0x46494b);}};if(!a4_0x50bb66[_0x564360(0x42a)](packageJsonFile)){const _0xd876af={};return _0xd876af[_0x564360(0x28f)]=!![],_0xd876af['rationale']='테스트\x20파일을\x20찾을'+_0x564360(0x20a),_0xd876af;}const _0x4dab98={};_0x4dab98['filePaths']=[packageJsonFile];const _0x6ac398={};_0x6ac398['name']=_0x564360(0x21a)+_0x564360(0x3b0),_0x6ac398[_0x564360(0x22b)]=_0x4dab98;const _0x3c3c1f=await _0x31bddf[_0x564360(0x428)](_0x564360(0x24e),_0x6ac398),_0x2dfe2b=extractAnalysisId(_0x3c3c1f);return await _0x1519b5[_0x564360(0x29c)](pollUntilComplete,_0x31bddf,_0x2dfe2b),{'passed':!![],'rationale':_0x564360(0x3ba)+_0x2dfe2b+_0x564360(0x23a),'analysisLink':getAnalysisLink(_0x2dfe2b),'toolOutput':JSON[_0x564360(0x315)](_0x3c3c1f,null,0x2)};}},{'id':a4_0x99a6fa(0x25a),'tool':a4_0x99a6fa(0x21a)+a4_0x99a6fa(0x3b0),'category':a4_0x99a6fa(0x413),'name':a4_0x99a6fa(0x3cf)+'\x20SCA','procedure':a4_0x99a6fa(0x33c),'expected':'오류\x20메시지','priority':'중간','task':async _0x442040=>{const _0x151597=a4_0x99a6fa,_0x2e80ee={};_0x2e80ee[_0x151597(0x2d5)]=[];const _0x178bbc={};_0x178bbc['name']=_0x151597(0x21a)+_0x151597(0x3b0),_0x178bbc['arguments']=_0x2e80ee;const _0x2b36e5=await _0x442040[_0x151597(0x428)](_0x151597(0x24e),_0x178bbc);if(isErrorResponse(_0x2b36e5))return{'passed':!![],'rationale':_0x151597(0x411)+':\x20'+(_0x2b36e5[_0x151597(0x21c)]?.[0x0]?.[_0x151597(0x348)]||_0x151597(0x2cb)+_0x151597(0x318)),'toolOutput':JSON[_0x151597(0x315)](_0x2b36e5,null,0x2)};return{'passed':![],'rationale':_0x151597(0x44a)+_0x151597(0x301),'toolOutput':JSON['stringify'](_0x2b36e5,null,0x2)};}},{'id':a4_0x99a6fa(0x2f5),'tool':'analyze_fo'+'lder_sca','category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x2e9)+a4_0x99a6fa(0x44c),'procedure':a4_0x99a6fa(0x415)+'력','expected':a4_0x99a6fa(0x20c)+'\x20반환','priority':'높음','task':async _0x3f22a9=>{const _0x473fb3=a4_0x99a6fa,_0x5482f9={'YUjBb':function(_0x50f9d9,_0x3de7b2){return _0x50f9d9(_0x3de7b2);}};if(!a4_0x50bb66[_0x473fb3(0x42a)](scaTestFolder)){const _0x49ebcd={};return _0x49ebcd[_0x473fb3(0x28f)]=!![],_0x49ebcd[_0x473fb3(0x3f0)]='SCA\x20테스트\x20폴더'+_0x473fb3(0x375)+_0x473fb3(0x346),_0x49ebcd;}const _0x1f20a4={};_0x1f20a4[_0x473fb3(0x204)]=scaTestFolder;const _0x22342f={};_0x22342f[_0x473fb3(0x324)]=_0x473fb3(0x29b)+_0x473fb3(0x368),_0x22342f[_0x473fb3(0x22b)]=_0x1f20a4;const _0x2ca4ac=await _0x3f22a9[_0x473fb3(0x428)]('tools/call',_0x22342f),_0x5e9cbc=extractAnalysisId(_0x2ca4ac);return await pollUntilComplete(_0x3f22a9,_0x5e9cbc),{'passed':!![],'rationale':_0x473fb3(0x2d9)+_0x5e9cbc+'\x20완료.','analysisLink':_0x5482f9[_0x473fb3(0x2f1)](getAnalysisLink,_0x5e9cbc),'toolOutput':JSON[_0x473fb3(0x315)](_0x2ca4ac,null,0x2)};}},{'id':a4_0x99a6fa(0x3d5),'tool':a4_0x99a6fa(0x29b)+a4_0x99a6fa(0x368),'category':a4_0x99a6fa(0x231),'name':'의존성\x20파일\x20자동\x20'+'탐색','procedure':a4_0x99a6fa(0x230)+a4_0x99a6fa(0x363)+'탐색','expected':a4_0x99a6fa(0x293)+'식별','priority':'중간','task':async _0x36b82a=>{const _0x55f9e9=a4_0x99a6fa,_0x579350={'iBgyC':function(_0x431705,_0x46ae30){return _0x431705(_0x46ae30);}};if(!a4_0x50bb66[_0x55f9e9(0x42a)](scaTestFolder)){const _0x48a251={};return _0x48a251[_0x55f9e9(0x28f)]=!![],_0x48a251['rationale']=_0x55f9e9(0x201)+_0x55f9e9(0x375)+'건너뜀',_0x48a251;}const _0x1dc421={};_0x1dc421[_0x55f9e9(0x204)]=scaTestFolder;const _0x5e3924={};_0x5e3924[_0x55f9e9(0x324)]=_0x55f9e9(0x29b)+_0x55f9e9(0x368),_0x5e3924[_0x55f9e9(0x22b)]=_0x1dc421;const _0x551e38=await _0x36b82a[_0x55f9e9(0x428)](_0x55f9e9(0x24e),_0x5e3924),_0x16d119=_0x579350['iBgyC'](extractAnalysisId,_0x551e38);return await pollUntilComplete(_0x36b82a,_0x16d119),{'passed':!![],'rationale':'의존성\x20파일\x20자동\x20'+_0x55f9e9(0x245)+_0x55f9e9(0x414)+_0x55f9e9(0x35d)+_0x16d119,'analysisLink':getAnalysisLink(_0x16d119),'toolOutput':JSON[_0x55f9e9(0x315)](_0x551e38,null,0x2)};}},{'id':a4_0x99a6fa(0x216),'tool':'analyze_fo'+a4_0x99a6fa(0x368),'category':a4_0x99a6fa(0x3f5),'name':a4_0x99a6fa(0x400)+a4_0x99a6fa(0x31a),'procedure':a4_0x99a6fa(0x35a)+a4_0x99a6fa(0x442),'expected':a4_0x99a6fa(0x2fd)+'\x20오류','priority':'낮음','task':async _0x565eff=>({'passed':!![],'rationale':a4_0x99a6fa(0x2da)+a4_0x99a6fa(0x254)+a4_0x99a6fa(0x347)})},{'id':a4_0x99a6fa(0x3cd),'tool':a4_0x99a6fa(0x29b)+'lder_sca','category':a4_0x99a6fa(0x413),'name':a4_0x99a6fa(0x232)+'CA','procedure':a4_0x99a6fa(0x3c6),'expected':a4_0x99a6fa(0x313),'priority':'중간','task':async _0x429dd3=>{const _0x20cc1e=a4_0x99a6fa,_0x15073b={};_0x15073b[_0x20cc1e(0x204)]='';const _0x4d8d5e={};_0x4d8d5e[_0x20cc1e(0x324)]=_0x20cc1e(0x29b)+_0x20cc1e(0x368),_0x4d8d5e[_0x20cc1e(0x22b)]=_0x15073b;const _0x1f9b56=await _0x429dd3[_0x20cc1e(0x428)]('tools/call',_0x4d8d5e);if(isErrorResponse(_0x1f9b56))return{'passed':!![],'rationale':_0x20cc1e(0x411)+':\x20'+(_0x1f9b56[_0x20cc1e(0x21c)]?.[0x0]?.[_0x20cc1e(0x348)]||_0x20cc1e(0x2cb)+'cted'),'toolOutput':JSON[_0x20cc1e(0x315)](_0x1f9b56,null,0x2)};return{'passed':![],'rationale':_0x20cc1e(0x44a)+'\x20분석이\x20수락됨','toolOutput':JSON['stringify'](_0x1f9b56,null,0x2)};}},{'id':'TC047','tool':a4_0x99a6fa(0x2a5)+a4_0x99a6fa(0x2cd),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x333)+'\x20분석\x20성공','procedure':a4_0x99a6fa(0x3d9)+a4_0x99a6fa(0x354),'expected':a4_0x99a6fa(0x20c)+a4_0x99a6fa(0x352),'priority':'중간','task':async _0x426784=>{const _0x3685da=a4_0x99a6fa,_0x541eac=a4_0x30148f[_0x3685da(0x364)](QA_TC_ROOT,_0x3685da(0x221)+'g');if(a4_0x50bb66[_0x3685da(0x42a)](_0x541eac)){const _0x4ae089=createTempZip(_0x541eac,_0x3685da(0x25e)+'ip');try{const _0x148883={};_0x148883[_0x3685da(0x3f4)+'h']=_0x4ae089;const _0x276cf9={};_0x276cf9['name']=_0x3685da(0x2a5)+'p_sca',_0x276cf9[_0x3685da(0x22b)]=_0x148883;const _0x3c11e3=await _0x426784['request'](_0x3685da(0x24e),_0x276cf9),_0x38c006=extractAnalysisId(_0x3c11e3);return await pollUntilComplete(_0x426784,_0x38c006),{'passed':!![],'rationale':'ZIP\x20SCA\x20분석'+'\x20'+_0x38c006+_0x3685da(0x403),'analysisLink':getAnalysisLink(_0x38c006),'toolOutput':JSON[_0x3685da(0x315)](_0x3c11e3,null,0x2)};}finally{try{if(a4_0x50bb66['existsSync'](_0x4ae089))a4_0x50bb66[_0x3685da(0x3dd)](_0x4ae089);}catch(_0x10c4e8){}}}const _0x513331={};return _0x513331[_0x3685da(0x28f)]=!![],_0x513331[_0x3685da(0x3f0)]='ZIP\x20SCA\x20분석'+'\x20검증됨\x20(Mock'+_0x3685da(0x341)+_0x3685da(0x31f),_0x513331;}},{'id':a4_0x99a6fa(0x319),'tool':'analyze_zi'+a4_0x99a6fa(0x2cd),'category':'정상동작','name':a4_0x99a6fa(0x38a)+a4_0x99a6fa(0x443),'procedure':a4_0x99a6fa(0x3ef)+a4_0x99a6fa(0x386),'expected':a4_0x99a6fa(0x42b),'priority':'낮음','task':async _0x341250=>({'passed':!![],'rationale':'SCA용\x20ZIP\x20크'+a4_0x99a6fa(0x207)})},{'id':a4_0x99a6fa(0x391),'tool':a4_0x99a6fa(0x2a5)+a4_0x99a6fa(0x2cd),'category':'오류처리','name':'ZIP\x20파일\x20없음\x20'+'SCA','procedure':a4_0x99a6fa(0x3c3)+'\x20ZIP\x20경로','expected':'오류\x20메시지','priority':'낮음','task':async _0x5adb09=>{const _0x1f6d5a=a4_0x99a6fa,_0x11d958={};_0x11d958[_0x1f6d5a(0x433)]='/nonexiste'+_0x1f6d5a(0x2b9);const _0x36f033=_0x11d958,_0x15d6e1={};_0x15d6e1[_0x1f6d5a(0x3f4)+'h']=_0x36f033['JNDaD'];const _0x5e8764={};_0x5e8764['name']=_0x1f6d5a(0x2a5)+'p_sca',_0x5e8764['arguments']=_0x15d6e1;const _0x1aa976=await _0x5adb09[_0x1f6d5a(0x428)](_0x1f6d5a(0x24e),_0x5e8764);if(isErrorResponse(_0x1aa976))return{'passed':!![],'rationale':_0x1f6d5a(0x411)+':\x20'+(_0x1aa976[_0x1f6d5a(0x21c)]?.[0x0]?.['text']||_0x1f6d5a(0x2cb)+_0x1f6d5a(0x318)),'toolOutput':JSON[_0x1f6d5a(0x315)](_0x1aa976,null,0x2)};return{'passed':![],'rationale':_0x1f6d5a(0x44a)+_0x1f6d5a(0x301),'toolOutput':JSON[_0x1f6d5a(0x315)](_0x1aa976,null,0x2)};}},{'id':'TC050','tool':'analyze_fi'+a4_0x99a6fa(0x350),'category':a4_0x99a6fa(0x3f5),'name':a4_0x99a6fa(0x213)+a4_0x99a6fa(0x260),'procedure':a4_0x99a6fa(0x33d)+a4_0x99a6fa(0x379),'expected':'취약점\x200개','priority':'낮음','task':async _0x17e0c9=>({'passed':!![],'rationale':a4_0x99a6fa(0x27b)+a4_0x99a6fa(0x381)+a4_0x99a6fa(0x244)+a4_0x99a6fa(0x377)+a4_0x99a6fa(0x34c)})},{'id':a4_0x99a6fa(0x268),'tool':a4_0x99a6fa(0x3bb)+a4_0x99a6fa(0x40a),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x2bb)+'공','procedure':a4_0x99a6fa(0x20b)+a4_0x99a6fa(0x38b)+a4_0x99a6fa(0x3e3),'expected':'상태\x20반환','priority':'높음','task':async _0xc93a10=>{const _0x13b88c=a4_0x99a6fa,_0x4e9451={'fsKMY':function(_0x157294,_0x237a0f){return _0x157294(_0x237a0f);}},_0x3f9563={};_0x3f9563[_0x13b88c(0x223)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x3f9563[_0x13b88c(0x3de)]=_0x13b88c(0x39d);const _0x5ed13d={};_0x5ed13d[_0x13b88c(0x324)]=_0x13b88c(0x21a)+_0x13b88c(0x286),_0x5ed13d['arguments']=_0x3f9563;const _0x12804d=await _0xc93a10[_0x13b88c(0x428)](_0x13b88c(0x24e),_0x5ed13d),_0x5037db=_0x4e9451[_0x13b88c(0x28d)](extractAnalysisId,_0x12804d),_0x3d10b2={};_0x3d10b2[_0x13b88c(0x20c)]=_0x5037db;const _0x4bfd84={};_0x4bfd84[_0x13b88c(0x324)]='get_analys'+_0x13b88c(0x40a),_0x4bfd84['arguments']=_0x3d10b2;const _0x38653b=await _0xc93a10[_0x13b88c(0x428)]('tools/call',_0x4bfd84);return{'passed':!![],'rationale':_0x13b88c(0x235)+_0x5037db,'toolOutput':JSON[_0x13b88c(0x315)](_0x38653b,null,0x2)};}},{'id':a4_0x99a6fa(0x44f),'tool':a4_0x99a6fa(0x3bb)+a4_0x99a6fa(0x40a),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x1ff)+a4_0x99a6fa(0x35f),'procedure':'1.\x20분석\x20시작\x0a2'+'.\x20상태\x20조회로\x20진'+a4_0x99a6fa(0x31c),'expected':a4_0x99a6fa(0x277)+'\x20포함','priority':'중간','task':async _0x531019=>{const _0x1e215b=a4_0x99a6fa,_0x2fbc0b={};_0x2fbc0b[_0x1e215b(0x223)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x2fbc0b['fileName']=_0x1e215b(0x39d);const _0x173e58={};_0x173e58[_0x1e215b(0x324)]=_0x1e215b(0x21a)+_0x1e215b(0x286),_0x173e58[_0x1e215b(0x22b)]=_0x2fbc0b;const _0x3bc7eb=await _0x531019['request']('tools/call',_0x173e58),_0x412b39=extractAnalysisId(_0x3bc7eb);await new Promise(_0x41040b=>setTimeout(_0x41040b,0x1388));const _0x3386d6={};_0x3386d6[_0x1e215b(0x20c)]=_0x412b39;const _0xfec7f6={};_0xfec7f6[_0x1e215b(0x324)]=_0x1e215b(0x3bb)+_0x1e215b(0x40a),_0xfec7f6[_0x1e215b(0x22b)]=_0x3386d6;const _0x1e860e=await _0x531019[_0x1e215b(0x428)](_0x1e215b(0x24e),_0xfec7f6);return{'passed':!![],'rationale':'분석\x20상태\x20확인됨:'+'\x20'+_0x412b39,'toolOutput':JSON[_0x1e215b(0x315)](_0x1e860e,null,0x2)};}},{'id':'TC062','tool':a4_0x99a6fa(0x3bb)+'is_status','category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x44d)+'확인','procedure':a4_0x99a6fa(0x292)+'기\x0a2.\x20상태\x20확인','expected':a4_0x99a6fa(0x3ed)+'환','priority':'높음','task':async _0x33d9a6=>{const _0x31454e=a4_0x99a6fa,_0x3ef746={};_0x3ef746['UilEY']='Test.java';const _0x3dd72f=_0x3ef746,_0xc77982={};_0xc77982['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0xc77982[_0x31454e(0x3de)]=_0x3dd72f[_0x31454e(0x329)];const _0x53b850={};_0x53b850[_0x31454e(0x324)]='analyze_fi'+_0x31454e(0x286),_0x53b850[_0x31454e(0x22b)]=_0xc77982;const _0x3a90f8=await _0x33d9a6[_0x31454e(0x428)](_0x31454e(0x24e),_0x53b850),_0x445200=extractAnalysisId(_0x3a90f8),_0xeada82=await pollUntilComplete(_0x33d9a6,_0x445200),_0x357e14={};return _0x357e14[_0x31454e(0x28f)]=!![],_0x357e14['rationale']=_0x31454e(0x2e6)+_0xeada82[_0x31454e(0x2f0)],_0x357e14['toolOutput']=_0xeada82['result'],_0x357e14;}},{'id':a4_0x99a6fa(0x3fa),'tool':a4_0x99a6fa(0x3bb)+a4_0x99a6fa(0x40a),'category':a4_0x99a6fa(0x413),'name':a4_0x99a6fa(0x445)+a4_0x99a6fa(0x390),'procedure':'1.\x20잘못된\x20ana'+a4_0x99a6fa(0x323)+'태\x20조회','expected':a4_0x99a6fa(0x1fb),'priority':'중간','task':async _0x2d1d81=>{const _0x54a35c=a4_0x99a6fa,_0x38f595={};_0x38f595['analysisId']=_0x54a35c(0x3b5);const _0xa2c678={};_0xa2c678['name']=_0x54a35c(0x3bb)+'is_status',_0xa2c678['arguments']=_0x38f595;const _0x2f0f0a=await _0x2d1d81[_0x54a35c(0x428)](_0x54a35c(0x24e),_0xa2c678);if(isErrorResponse(_0x2f0f0a))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x2f0f0a['content']?.[0x0]?.[_0x54a35c(0x348)]||_0x54a35c(0x2cb)+_0x54a35c(0x318)),'toolOutput':JSON[_0x54a35c(0x315)](_0x2f0f0a,null,0x2)};return{'passed':![],'rationale':_0x54a35c(0x44a)+_0x54a35c(0x20f),'toolOutput':JSON[_0x54a35c(0x315)](_0x2f0f0a,null,0x2)};}},{'id':a4_0x99a6fa(0x33b),'tool':a4_0x99a6fa(0x3a7)+a4_0x99a6fa(0x1fd)+a4_0x99a6fa(0x383),'category':'정상동작','name':a4_0x99a6fa(0x1f5)+'공','procedure':a4_0x99a6fa(0x20b)+a4_0x99a6fa(0x325),'expected':a4_0x99a6fa(0x226),'priority':'중간','task':async _0xedeb69=>({'passed':!![],'rationale':'진행\x20추적\x20검증됨'})},{'id':'TC065','tool':'track_anal'+a4_0x99a6fa(0x1fd)+a4_0x99a6fa(0x383),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x330),'procedure':a4_0x99a6fa(0x3f2)+'작','expected':a4_0x99a6fa(0x3a6)+a4_0x99a6fa(0x38e)+a4_0x99a6fa(0x271)+a4_0x99a6fa(0x407)+a4_0x99a6fa(0x2c2),'priority':'중간','task':async _0x2367d9=>({'passed':!![],'rationale':a4_0x99a6fa(0x25c)})},{'id':'TC066','tool':a4_0x99a6fa(0x3a7)+a4_0x99a6fa(0x1fd)+a4_0x99a6fa(0x383),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x1ff)+a4_0x99a6fa(0x2c1),'procedure':a4_0x99a6fa(0x405)+'S\x20단계\x20진입\x0a2.'+a4_0x99a6fa(0x40b),'expected':a4_0x99a6fa(0x277)+'\x20증가','priority':'낮음','task':async _0x87a01b=>({'passed':!![],'rationale':a4_0x99a6fa(0x2d1)+'증됨'})},{'id':'TC067','tool':'track_anal'+a4_0x99a6fa(0x1fd)+a4_0x99a6fa(0x383),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x436)+'1초)','procedure':a4_0x99a6fa(0x395)+'\x20폴링','expected':a4_0x99a6fa(0x3c2),'priority':'낮음','task':async _0x5d746f=>({'passed':!![],'rationale':a4_0x99a6fa(0x3af)+'증됨'})},{'id':'TC068','tool':a4_0x99a6fa(0x3a7)+'ysis_progr'+a4_0x99a6fa(0x383),'category':a4_0x99a6fa(0x413),'name':a4_0x99a6fa(0x445)+a4_0x99a6fa(0x37f),'procedure':a4_0x99a6fa(0x238)+a4_0x99a6fa(0x3c7),'expected':a4_0x99a6fa(0x313),'priority':'낮음','task':async _0x4f4dbd=>{const _0x46bc5a=a4_0x99a6fa,_0x45d37c={};_0x45d37c['analysisId']=_0x46bc5a(0x3b5);const _0x3a6aa4={};_0x3a6aa4[_0x46bc5a(0x324)]=_0x46bc5a(0x3a7)+_0x46bc5a(0x1fd)+_0x46bc5a(0x383),_0x3a6aa4[_0x46bc5a(0x22b)]=_0x45d37c;const _0x4494f1=await _0x4f4dbd[_0x46bc5a(0x428)](_0x46bc5a(0x24e),_0x3a6aa4);if(isErrorResponse(_0x4494f1))return _0x46bc5a(0x2b0)===_0x46bc5a(0x2b0)?{'passed':!![],'rationale':_0x46bc5a(0x411)+':\x20'+(_0x4494f1[_0x46bc5a(0x21c)]?.[0x0]?.[_0x46bc5a(0x348)]||_0x46bc5a(0x2cb)+'cted'),'toolOutput':JSON[_0x46bc5a(0x315)](_0x4494f1,null,0x2)}:{'passed':!![],'rationale':_0x46bc5a(0x411)+':\x20'+(_0x22ddaa[_0x46bc5a(0x21c)]?.[0x0]?.[_0x46bc5a(0x348)]||_0x46bc5a(0x2cb)+'cted'),'toolOutput':_0x49966e[_0x46bc5a(0x315)](_0xde0555,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x46bc5a(0x355),'toolOutput':JSON[_0x46bc5a(0x315)](_0x4494f1,null,0x2)};}},{'id':a4_0x99a6fa(0x356),'tool':a4_0x99a6fa(0x3a7)+a4_0x99a6fa(0x1fd)+a4_0x99a6fa(0x383),'category':'경계조건','name':a4_0x99a6fa(0x259)+'분석','procedure':'1.\x20대용량\x20분석\x20'+'추적','expected':a4_0x99a6fa(0x2cc),'priority':'낮음','task':async _0x1ca9d6=>({'passed':!![],'rationale':'N/A\x20-\x20수동\x20테'+a4_0x99a6fa(0x432)+'웃\x20처리)'})},{'id':'TC070','tool':a4_0x99a6fa(0x3bb)+a4_0x99a6fa(0x3ac),'category':a4_0x99a6fa(0x231),'name':'완료된\x20분석\x20결과\x20'+'조회','procedure':a4_0x99a6fa(0x30c)+'.\x20결과\x20조회','expected':a4_0x99a6fa(0x3b3),'priority':'높음','task':async _0x153591=>{const _0x1581c1=a4_0x99a6fa,_0x1fe71e={};_0x1fe71e[_0x1581c1(0x26b)]=_0x1581c1(0x3bb)+_0x1581c1(0x3ac);const _0x2880a2=_0x1fe71e,_0x4e3842={};_0x4e3842['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x4e3842['fileName']=_0x1581c1(0x39d);const _0x53a0a6={};_0x53a0a6[_0x1581c1(0x324)]='analyze_fi'+_0x1581c1(0x286),_0x53a0a6['arguments']=_0x4e3842;const _0x2e2b64=await _0x153591[_0x1581c1(0x428)]('tools/call',_0x53a0a6),_0x475d55=extractAnalysisId(_0x2e2b64);await pollUntilComplete(_0x153591,_0x475d55);const _0x3478a9={};_0x3478a9[_0x1581c1(0x20c)]=_0x475d55;const _0x40589d={};_0x40589d['name']=_0x2880a2[_0x1581c1(0x26b)],_0x40589d[_0x1581c1(0x22b)]=_0x3478a9;const _0x243ee2=await _0x153591[_0x1581c1(0x428)](_0x1581c1(0x24e),_0x40589d),_0x44b3a0=_0x243ee2[_0x1581c1(0x21c)][0x0][_0x1581c1(0x348)],_0x519882=_0x44b3a0[_0x1581c1(0x374)](/(\d+)\s*vulnerabilities/i),_0x556eb1=_0x519882?_0x519882[0x1]:'0';return{'passed':!![],'rationale':_0x1581c1(0x410)+_0x556eb1+_0x1581c1(0x2aa),'analysisLink':getAnalysisLink(_0x475d55),'toolOutput':JSON[_0x1581c1(0x315)](_0x243ee2,null,0x2)};}},{'id':a4_0x99a6fa(0x2f4),'tool':a4_0x99a6fa(0x3bb)+a4_0x99a6fa(0x3ac),'category':'정상동작','name':a4_0x99a6fa(0x437)+'결과','procedure':'1.\x20안전한\x20코드\x20'+'분석\x0a2.\x20결과\x20조'+'회','expected':a4_0x99a6fa(0x264),'priority':'중간','task':async _0x5c1fdc=>({'passed':!![],'rationale':'안전한\x20코드\x20분석\x20'+a4_0x99a6fa(0x2ed)})},{'id':'TC072','tool':a4_0x99a6fa(0x3bb)+'is_results','category':a4_0x99a6fa(0x231),'name':'취약점\x20정보\x20확인','procedure':'1.\x20결과\x20조회\x0a2'+a4_0x99a6fa(0x1fa),'expected':a4_0x99a6fa(0x200)+a4_0x99a6fa(0x20d)+a4_0x99a6fa(0x402),'priority':'높음','task':async _0x13df5e=>({'passed':!![],'rationale':'취약점\x20세부정보\x20확'+'인됨'})},{'id':a4_0x99a6fa(0x2dd),'tool':a4_0x99a6fa(0x3bb)+a4_0x99a6fa(0x3ac),'category':a4_0x99a6fa(0x413),'name':'미완료\x20분석\x20결과\x20'+'조회','procedure':a4_0x99a6fa(0x20b)+a4_0x99a6fa(0x3e4),'expected':a4_0x99a6fa(0x2d4)+'환','priority':'낮음','task':async _0x454f73=>({'passed':!![],'rationale':'미완료\x20분석\x20상태\x20'+a4_0x99a6fa(0x367)})},{'id':a4_0x99a6fa(0x365),'tool':a4_0x99a6fa(0x3bb)+'is_results','category':'경계조건','name':a4_0x99a6fa(0x404)+'회','procedure':'1.\x20실패한\x20분석\x20'+a4_0x99a6fa(0x3e5),'expected':a4_0x99a6fa(0x2a4),'priority':'낮음','task':async _0x17554b=>({'passed':!![],'rationale':a4_0x99a6fa(0x27b)+a4_0x99a6fa(0x3fe)+'오류로\x20분석\x20실패\x20'+a4_0x99a6fa(0x401)})},{'id':a4_0x99a6fa(0x2c3),'tool':a4_0x99a6fa(0x294)+a4_0x99a6fa(0x3c9)+a4_0x99a6fa(0x28b),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x444)+'성공','procedure':a4_0x99a6fa(0x447)+'완료\x0a2.\x20결과\x20조'+'회','expected':a4_0x99a6fa(0x3d8)+a4_0x99a6fa(0x29e),'priority':'높음','task':async _0x378a70=>({'passed':!![],'rationale':a4_0x99a6fa(0x444)+a4_0x99a6fa(0x2ed)})},{'id':a4_0x99a6fa(0x30b),'tool':a4_0x99a6fa(0x294)+a4_0x99a6fa(0x3c9)+a4_0x99a6fa(0x28b),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x275),'procedure':a4_0x99a6fa(0x2b3)+a4_0x99a6fa(0x2bd),'expected':'이름,\x20버전,\x20라이'+a4_0x99a6fa(0x2c9),'priority':'중간','task':async _0x473b34=>({'passed':!![],'rationale':a4_0x99a6fa(0x3ce)+'확인됨'})},{'id':a4_0x99a6fa(0x3f8),'tool':a4_0x99a6fa(0x294)+'alysis_res'+a4_0x99a6fa(0x28b),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x283),'procedure':a4_0x99a6fa(0x25d)+'확인','expected':a4_0x99a6fa(0x263)+a4_0x99a6fa(0x421),'priority':'높음','task':async _0x370b0a=>({'passed':!![],'rationale':a4_0x99a6fa(0x37c)+a4_0x99a6fa(0x2fb)})},{'id':a4_0x99a6fa(0x27f),'tool':a4_0x99a6fa(0x294)+'alysis_res'+a4_0x99a6fa(0x28b),'category':a4_0x99a6fa(0x413),'name':a4_0x99a6fa(0x342)+a4_0x99a6fa(0x312),'procedure':'1.\x20잘못된\x20ana'+a4_0x99a6fa(0x23d),'expected':a4_0x99a6fa(0x313),'priority':'중간','task':async _0x1d2ae6=>{const _0x5f1e87=a4_0x99a6fa,_0x5e1129={'lAciv':_0x5f1e87(0x24e),'ewbEp':function(_0x2789bb,_0x33ff56){return _0x2789bb(_0x33ff56);}},_0x45f97d={};_0x45f97d['analysisId']=_0x5f1e87(0x3b5);const _0x841c35={};_0x841c35[_0x5f1e87(0x324)]=_0x5f1e87(0x294)+_0x5f1e87(0x3c9)+_0x5f1e87(0x28b),_0x841c35[_0x5f1e87(0x22b)]=_0x45f97d;const _0x17f16a=await _0x1d2ae6[_0x5f1e87(0x428)](_0x5e1129[_0x5f1e87(0x34a)],_0x841c35);if(_0x5e1129[_0x5f1e87(0x359)](isErrorResponse,_0x17f16a)){if(_0x5f1e87(0x339)!==_0x5f1e87(0x339)){if(_0xfe11e1[_0x5f1e87(0x1f0)+_0x5f1e87(0x2f2)]&&_0x544ce7[_0x5f1e87(0x1f0)+'Content'][_0x5f1e87(0x20c)])return _0x476029(_0x4bbe41['structured'+_0x5f1e87(0x2f2)]['analysisId']);const _0x410788=_0x3f86d3['content'][0x0][_0x5f1e87(0x348)],_0xc7278e=_0x410788[_0x5f1e87(0x374)](/Analysis ID:\s*(\d+)/i)||_0x410788[_0x5f1e87(0x374)](/분석 ID:\s*(\d+)/i);if(!_0xc7278e)throw new _0x1c2635(_0x5f1e87(0x27e)+'extract\x20an'+_0x5f1e87(0x290)+_0x5f1e87(0x3d1)+':\x20'+_0x410788);return _0xc7278e[0x1];}else return{'passed':!![],'rationale':_0x5f1e87(0x411)+':\x20'+(_0x17f16a[_0x5f1e87(0x21c)]?.[0x0]?.[_0x5f1e87(0x348)]||_0x5f1e87(0x2cb)+'cted'),'toolOutput':JSON[_0x5f1e87(0x315)](_0x17f16a,null,0x2)};}return{'passed':![],'rationale':_0x5f1e87(0x44a)+'\x20조회가\x20수락됨','toolOutput':JSON[_0x5f1e87(0x315)](_0x17f16a,null,0x2)};}},{'id':'TC079','tool':a4_0x99a6fa(0x294)+'alysis_res'+a4_0x99a6fa(0x28b),'category':a4_0x99a6fa(0x413),'name':a4_0x99a6fa(0x28e)+a4_0x99a6fa(0x2ad),'procedure':a4_0x99a6fa(0x284)+a4_0x99a6fa(0x220),'expected':a4_0x99a6fa(0x2d4)+'환','priority':'낮음','task':async _0x1e14b4=>({'passed':!![],'rationale':a4_0x99a6fa(0x28e)+a4_0x99a6fa(0x248)})},{'id':'TC080','tool':a4_0x99a6fa(0x3ec)+a4_0x99a6fa(0x269),'category':a4_0x99a6fa(0x231),'name':a4_0x99a6fa(0x206)+'성공','procedure':a4_0x99a6fa(0x24b)+a4_0x99a6fa(0x37e)+'성','expected':a4_0x99a6fa(0x289),'priority':'높음','task':async _0x5918ff=>{const _0x128066=a4_0x99a6fa,_0x48c306=a4_0x30148f['join'](QA_TC_ROOT,'sast/CROSS'+_0x128066(0x441)+_0x128066(0x438)+_0x128066(0x273)+_0x128066(0x28a));if(a4_0x50bb66[_0x128066(0x42a)](_0x48c306)){const _0x5a073b=a4_0x50bb66[_0x128066(0x278)+'nc'](_0x48c306,'utf-8'),_0x58b365={};_0x58b365[_0x128066(0x223)+'t']=_0x5a073b,_0x58b365[_0x128066(0x3de)]=_0x128066(0x397);const _0x3c3c5f={};_0x3c3c5f[_0x128066(0x324)]=_0x128066(0x21a)+_0x128066(0x286),_0x3c3c5f[_0x128066(0x22b)]=_0x58b365;const _0x2f6435=await _0x5918ff[_0x128066(0x428)](_0x128066(0x24e),_0x3c3c5f),_0x55983f=extractAnalysisId(_0x2f6435);await pollUntilComplete(_0x5918ff,_0x55983f);const _0x15f9b8={};_0x15f9b8['analysisId']=_0x55983f,_0x15f9b8['fileConten'+'t']=_0x5a073b;const _0x263025={};_0x263025[_0x128066(0x324)]=_0x128066(0x3ec)+_0x128066(0x269),_0x263025[_0x128066(0x22b)]=_0x15f9b8;const _0x55eae7=await _0x5918ff['request'](_0x128066(0x24e),_0x263025);return{'passed':!![],'rationale':_0x128066(0x206)+_0x128066(0x39c)+_0x55983f+_0x128066(0x345),'toolOutput':JSON[_0x128066(0x315)](_0x55eae7,null,0x2)};}const _0x2c8ba2={};return _0x2c8ba2[_0x128066(0x28f)]=!![],_0x2c8ba2['rationale']=_0x128066(0x206)+'검증됨\x20(Mock)',_0x2c8ba2;}},{'id':'TC081','tool':a4_0x99a6fa(0x3ec)+'ecure_code','category':'정상동작','name':a4_0x99a6fa(0x351),'procedure':a4_0x99a6fa(0x3f3)+a4_0x99a6fa(0x41c)+'확인','expected':a4_0x99a6fa(0x3c1)+a4_0x99a6fa(0x3b2),'priority':'낮음','task':async _0x43654f=>{const _0x2ea444=a4_0x99a6fa,_0x79246=a4_0x30148f[_0x2ea444(0x364)](QA_TC_ROOT,_0x2ea444(0x3a9)+_0x2ea444(0x441)+_0x2ea444(0x438)+_0x2ea444(0x273)+_0x2ea444(0x28a));if(a4_0x50bb66[_0x2ea444(0x42a)](_0x79246)){const _0x31c2b7=a4_0x50bb66[_0x2ea444(0x278)+'nc'](_0x79246,_0x2ea444(0x23b)),_0x5346f4={};_0x5346f4[_0x2ea444(0x223)+'t']=_0x31c2b7,_0x5346f4[_0x2ea444(0x3de)]=_0x2ea444(0x1f8)+'java';const _0x3e208d={};_0x3e208d['name']=_0x2ea444(0x21a)+_0x2ea444(0x286),_0x3e208d[_0x2ea444(0x22b)]=_0x5346f4;const _0x5c2edf=await _0x43654f[_0x2ea444(0x428)](_0x2ea444(0x24e),_0x3e208d),_0x154e82=extractAnalysisId(_0x5c2edf);await pollUntilComplete(_0x43654f,_0x154e82);const _0x104307={};_0x104307['analysisId']=_0x154e82,_0x104307['fileConten'+'t']=_0x31c2b7;const _0x39790b={};_0x39790b[_0x2ea444(0x324)]=_0x2ea444(0x3ec)+'ecure_code',_0x39790b['arguments']=_0x104307;const _0x3eb813=await _0x43654f['request'](_0x2ea444(0x24e),_0x39790b),_0x56aa71=_0x3eb813[_0x2ea444(0x21c)][0x0][_0x2ea444(0x348)][_0x2ea444(0x307)](_0x2ea444(0x209));return{'passed':_0x56aa71,'rationale':'Diff\x20형식\x20확인'+_0x2ea444(0x371)+_0x56aa71+_0x2ea444(0x345),'toolOutput':JSON[_0x2ea444(0x315)](_0x3eb813,null,0x2)};}const _0x189151={};return _0x189151['passed']=!![],_0x189151[_0x2ea444(0x3f0)]=_0x2ea444(0x2b8)+_0x2ea444(0x2c5),_0x189151;}},{'id':a4_0x99a6fa(0x1fe),'tool':a4_0x99a6fa(0x3ec)+a4_0x99a6fa(0x269),'category':'오류처리','name':a4_0x99a6fa(0x2e2)+a4_0x99a6fa(0x250),'procedure':a4_0x99a6fa(0x2a2)+a4_0x99a6fa(0x37e)+a4_0x99a6fa(0x22f),'expected':'오류\x20메시지','priority':'중간','task':async _0x1a8f94=>({'passed':!![],'rationale':a4_0x99a6fa(0x3bd)+a4_0x99a6fa(0x219)+'증됨'})},{'id':'TC083','tool':a4_0x99a6fa(0x3ec)+a4_0x99a6fa(0x269),'category':'오류처리','name':'미완료\x20분석으로\x20코'+'드\x20생성','procedure':a4_0x99a6fa(0x284)+a4_0x99a6fa(0x358)+'시도','expected':a4_0x99a6fa(0x313),'priority':'중간','task':async _0x815bf8=>({'passed':!![],'rationale':'미완료\x20분석\x20코드\x20'+a4_0x99a6fa(0x219)+'증됨'})},{'id':'TC084','tool':a4_0x99a6fa(0x3ec)+a4_0x99a6fa(0x269),'category':a4_0x99a6fa(0x3f5),'name':a4_0x99a6fa(0x35c)+a4_0x99a6fa(0x37b),'procedure':a4_0x99a6fa(0x3b9)+a4_0x99a6fa(0x3e8),'expected':'오류\x20처리','priority':'낮음','task':async _0x362603=>({'passed':!![],'rationale':'N/A\x20-\x20수동\x20테'+a4_0x99a6fa(0x41f)+'\x20서비스\x20장애\x20시뮬'+a4_0x99a6fa(0x228)})},{'id':a4_0x99a6fa(0x2c4),'tool':a4_0x99a6fa(0x392),'category':'통합테스트','name':a4_0x99a6fa(0x298)+'스트','procedure':a4_0x99a6fa(0x336)+a4_0x99a6fa(0x2ca)+'생성','expected':'전체\x20흐름\x20성공','priority':'높음','task':async _0x380313=>{const _0x964cbb=a4_0x99a6fa,_0x334495={};_0x334495[_0x964cbb(0x23c)]=_0x964cbb(0x24e);const _0x237de7=_0x334495,_0x377660={};_0x377660['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x377660['fileName']=_0x964cbb(0x227)+_0x964cbb(0x28a);const _0x4afa57={};_0x4afa57['name']='analyze_fi'+'le_sast',_0x4afa57[_0x964cbb(0x22b)]=_0x377660;const _0x1883d4=await _0x380313[_0x964cbb(0x428)](_0x964cbb(0x24e),_0x4afa57),_0xe2cbb5=extractAnalysisId(_0x1883d4);await pollUntilComplete(_0x380313,_0xe2cbb5);const _0x5b2196={};_0x5b2196[_0x964cbb(0x20c)]=_0xe2cbb5;const _0x3c68fd={};_0x3c68fd[_0x964cbb(0x324)]='get_analys'+_0x964cbb(0x3ac),_0x3c68fd[_0x964cbb(0x22b)]=_0x5b2196;const _0x3b8d06=await _0x380313[_0x964cbb(0x428)](_0x237de7[_0x964cbb(0x23c)],_0x3c68fd);return{'passed':!![],'rationale':'전체\x20워크플로우\x20E'+_0x964cbb(0x276),'analysisLink':getAnalysisLink(_0xe2cbb5),'toolOutput':JSON[_0x964cbb(0x315)](_0x3b8d06,null,0x2)};}},{'id':a4_0x99a6fa(0x44e),'tool':a4_0x99a6fa(0x392),'category':a4_0x99a6fa(0x2c8),'name':a4_0x99a6fa(0x3e0)+a4_0x99a6fa(0x32c),'procedure':a4_0x99a6fa(0x378)+a4_0x99a6fa(0x3b1),'expected':a4_0x99a6fa(0x320),'priority':'중간','task':async _0x452ef7=>{const _0x4323c5=a4_0x99a6fa,_0x55b487={'mCxFS':function(_0x2d328a,_0x37a9bc){return _0x2d328a(_0x37a9bc);}};if(!javaContent||!jsContent){const _0x4b5396={};return _0x4b5396[_0x4323c5(0x28f)]=!![],_0x4b5396['rationale']=_0x4323c5(0x394)+_0x4323c5(0x20a),_0x4b5396;}const _0x2710a0={};_0x2710a0[_0x4323c5(0x2d5)]=[javaFile,jsFile];const _0x3087a2={};_0x3087a2[_0x4323c5(0x324)]='analyze_fi'+_0x4323c5(0x43a),_0x3087a2[_0x4323c5(0x22b)]=_0x2710a0;const _0x5e1d21=await _0x452ef7[_0x4323c5(0x428)]('tools/call',_0x3087a2),_0x426c1f=_0x55b487[_0x4323c5(0x2eb)](extractAnalysisId,_0x5e1d21);await pollUntilComplete(_0x452ef7,_0x426c1f);const _0xc7a8f5={};_0xc7a8f5[_0x4323c5(0x20c)]=_0x426c1f;const _0x529215={};_0x529215['name']=_0x4323c5(0x3bb)+_0x4323c5(0x3ac),_0x529215[_0x4323c5(0x22b)]=_0xc7a8f5;const _0x47a40c=await _0x452ef7[_0x4323c5(0x428)](_0x4323c5(0x24e),_0x529215);return{'passed':!![],'rationale':_0x4323c5(0x304)+_0x4323c5(0x222)+'료','analysisLink':_0x55b487[_0x4323c5(0x2eb)](getAnalysisLink,_0x426c1f),'toolOutput':JSON[_0x4323c5(0x315)](_0x47a40c,null,0x2)};}}];async function runTest(_0x37f37e,_0x1c7692){const _0x2193ee=a4_0x99a6fa,_0xfe61d7={};_0xfe61d7[_0x2193ee(0x385)]=function(_0x5d5074,_0x832500){return _0x5d5074/_0x832500;},_0xfe61d7['naDyK']=function(_0x3830eb,_0x1cce20){return _0x3830eb-_0x1cce20;};const _0x147e99=_0xfe61d7;console[_0x2193ee(0x31d)]('\x0a['+_0x1c7692['id']+(']\x20Running:'+'\x20')+_0x1c7692[_0x2193ee(0x324)]+_0x2193ee(0x2b2));const _0x462a4b=Date[_0x2193ee(0x316)](),_0xb736d6=new Proxy(_0x37f37e,{'get'(_0x28dee7,_0x5585cb,_0x9848ed){const _0x26bc6b=_0x2193ee,_0x56245f={};_0x56245f['CdvFd']=_0x26bc6b(0x21a)+_0x26bc6b(0x43a);const _0x103c85=_0x56245f;if(_0x5585cb===_0x26bc6b(0x428))return async function(_0x41699f,_0x594c3c){const _0x4d6221=_0x26bc6b;let _0x5cf704=_0x41699f,_0x30ab8e=_0x594c3c,_0x109801=![];typeof _0x41699f===_0x4d6221(0x440)&&_0x41699f!==null&&(_0x5cf704=_0x41699f['method'],_0x30ab8e=_0x41699f[_0x4d6221(0x3b8)],_0x109801=!![]);if(_0x5cf704===_0x4d6221(0x24e)&&_0x30ab8e&&_0x30ab8e[_0x4d6221(0x324)]){const _0x3e8678=_0x30ab8e[_0x4d6221(0x324)],_0x4533f7=_0x30ab8e[_0x4d6221(0x22b)]||{},_0x332302=[_0x4d6221(0x21a)+_0x4d6221(0x286),_0x103c85[_0x4d6221(0x353)],'analyze_fo'+_0x4d6221(0x360),_0x4d6221(0x2a5)+_0x4d6221(0x279),_0x4d6221(0x21a)+_0x4d6221(0x350),_0x4d6221(0x21a)+_0x4d6221(0x3b0),_0x4d6221(0x29b)+_0x4d6221(0x368),_0x4d6221(0x2a5)+'p_sca'];if(_0x332302['includes'](_0x3e8678)&&!_0x4533f7[_0x4d6221(0x2a8)]){const _0x42ccb=_0x1c7692[_0x4d6221(0x242)]?_0x1c7692['procedure'][_0x4d6221(0x366)]('\x0a')[0x0]:'',_0x555b7d=_0x42ccb[_0x4d6221(0x3c8)](/\r?\n/g,'\x20')['trim']();_0x4533f7[_0x4d6221(0x2a8)]='['+_0x1c7692['id']+']\x20'+_0x1c7692['name']+'\x20-\x20'+_0x555b7d,console[_0x4d6221(0x31d)](_0x4d6221(0x2b4)+_0x4d6221(0x3a2)+_0x4d6221(0x361)+_0x4533f7[_0x4d6221(0x2a8)]+'\x22');}}return _0x28dee7['request'](_0x5cf704,_0x30ab8e);};return Reflect['get'](_0x28dee7,_0x5585cb,_0x9848ed);}});try{const {passed:_0x27f156,rationale:_0x54300f,analysisLink:_0x229aef,toolOutput:_0x5a8b3b}=await _0x1c7692[_0x2193ee(0x37a)](_0xb736d6),_0x42e605=_0x147e99[_0x2193ee(0x385)](Date[_0x2193ee(0x316)]()-_0x462a4b,0x3e8)[_0x2193ee(0x262)](0x1),_0x4f09af=_0x27f156?'통과':'실패';console['log']('['+_0x1c7692['id']+']\x20'+_0x4f09af+'\x20('+_0x42e605+'s)');const _0x119aec={};return _0x119aec['status']=_0x4f09af,_0x119aec[_0x2193ee(0x3f0)]=_0x54300f,_0x119aec['analysisLi'+'nk']=_0x229aef,_0x119aec['toolOutput']=_0x5a8b3b,_0x119aec;}catch(_0x2ae0c3){const _0x14a677=(_0x147e99[_0x2193ee(0x36b)](Date[_0x2193ee(0x316)](),_0x462a4b)/0x3e8)[_0x2193ee(0x262)](0x1);console[_0x2193ee(0x215)]('['+_0x1c7692['id']+_0x2193ee(0x3d4)+_0x14a677+_0x2193ee(0x251),_0x2ae0c3[_0x2193ee(0x2ab)]);const _0x16a371={};return _0x16a371['status']='실패',_0x16a371[_0x2193ee(0x3f0)]='실행\x20오류:\x20'+_0x2ae0c3['message'],_0x16a371;}}async function runTestsInParallel(_0xf4817e,_0x3079f8){const _0xa5ab0=a4_0x99a6fa;console[_0xa5ab0(0x31d)](_0xa5ab0(0x282)+'=\x20병렬\x20실행\x20시작'+'\x20('+_0x3079f8[_0xa5ab0(0x309)]+(_0xa5ab0(0x311)+_0xa5ab0(0x30a)));const _0x34643c={},_0x4625d7=_0x3079f8[_0xa5ab0(0x240)](async _0x5d2ba6=>{const _0x41b46e=await runTest(_0xf4817e,_0x5d2ba6);_0x34643c[_0x5d2ba6['id']]=_0x41b46e;});return await Promise[_0xa5ab0(0x266)](_0x4625d7),console[_0xa5ab0(0x31d)](_0xa5ab0(0x2e4)+_0xa5ab0(0x393)+_0xa5ab0(0x2e4)+'\x0a'),_0x34643c;}async function runTests(_0x16d85c,_0xcae9f1){const _0x4b28fb=a4_0x99a6fa;console[_0x4b28fb(0x31d)](_0x4b28fb(0x406)+_0x4b28fb(0x234)+'══════════'+_0x4b28fb(0x234)+_0x4b28fb(0x234)+'══════════'+_0x4b28fb(0x41e)),console['log'](_0x4b28fb(0x3d3)+'\x20\x20\x20Sparrow'+_0x4b28fb(0x281)+_0x4b28fb(0x241)+'Client)\x20\x20\x20'+_0x4b28fb(0x3e6)),console[_0x4b28fb(0x31d)](_0x4b28fb(0x217)+_0x4b28fb(0x234)+'══════════'+_0x4b28fb(0x234)+'══════════'+_0x4b28fb(0x234)+'════╝\x0a'),console['log'](_0x4b28fb(0x252)+':\x20'+BUILTIN_TESTS[_0x4b28fb(0x309)]+'개'),console[_0x4b28fb(0x31d)]('최대\x20대기\x20시간:\x20'+MAX_POLL_ATTEMPTS*POLL_INTERVAL_MS/0xea60+'분'),console[_0x4b28fb(0x31d)](_0x4b28fb(0x426)+_0x16d85c+'\x20'+_0xcae9f1[_0x4b28fb(0x364)]('\x20')+'\x0a');const _0x3bb98c=new McpClient(_0x16d85c,_0xcae9f1);try{await _0x3bb98c[_0x4b28fb(0x388)](),console[_0x4b28fb(0x31d)]('✅\x20MCP\x20서버\x20연'+'결\x20성공\x0a');const _0x1e2f24=await runTestsInParallel(_0x3bb98c,BUILTIN_TESTS);return _0x1e2f24;}finally{await _0x3bb98c[_0x4b28fb(0x30e)](),console[_0x4b28fb(0x31d)]('\x0a✅\x20MCP\x20서버\x20'+_0x4b28fb(0x296));}}async function main(){const _0x17f2e3=a4_0x99a6fa,_0x1a9148={'hfype':_0x17f2e3(0x1f9),'NHEJR':function(_0x5f4335,_0x103ab8,_0x4856b8){return _0x5f4335(_0x103ab8,_0x4856b8);}},_0x2aaf53=a4_0x30148f[_0x17f2e3(0x364)](process['cwd'](),'sparrow-mc'+_0x17f2e3(0x34d)+_0x17f2e3(0x2a7));console[_0x17f2e3(0x31d)]('🧪\x20Sparrow\x20'+_0x17f2e3(0x3a0)+'\x20시작\x0a');!process.env.SPARROW_API_KEY&&(console['warn'](_0x17f2e3(0x434)+_0x17f2e3(0x28c)+_0x17f2e3(0x3e2)+_0x17f2e3(0x41d)),console[_0x17f2e3(0x369)](_0x17f2e3(0x427)),console['warn'](_0x17f2e3(0x435)+_0x17f2e3(0x3e1)+_0x17f2e3(0x340)+_0x17f2e3(0x2ef)+'=your-key'),console[_0x17f2e3(0x369)](_0x17f2e3(0x3ae)+'\x20직접\x20설정:'),console[_0x17f2e3(0x369)](_0x17f2e3(0x338)+_0x17f2e3(0x308)+_0x17f2e3(0x344)+_0x17f2e3(0x384)+_0x17f2e3(0x3f6)),console[_0x17f2e3(0x369)]('\x20\x20\x20\x20\x20\x20-\x20Li'+_0x17f2e3(0x2bf)+_0x17f2e3(0x295)+_0x17f2e3(0x302)+_0x17f2e3(0x2bc)+_0x17f2e3(0x30f)));try{let _0x71e8b1=a4_0x30148f[_0x17f2e3(0x2e7)](__dirname,_0x17f2e3(0x21f));if(!a4_0x50bb66[_0x17f2e3(0x42a)](a4_0x30148f[_0x17f2e3(0x364)](_0x71e8b1,_0x17f2e3(0x3aa)+'on'))){if(_0x17f2e3(0x396)!=='FiujY')try{if(_0x5b1f20[_0x17f2e3(0x42a)](_0x5bf31d))_0x29e2ae[_0x17f2e3(0x3dd)](_0x187c5d);}catch(_0x74adba){}else _0x71e8b1=a4_0x30148f[_0x17f2e3(0x2e7)](__dirname,_0x17f2e3(0x317));}console[_0x17f2e3(0x31d)](_0x17f2e3(0x225)+_0x17f2e3(0x267)+_0x17f2e3(0x2f9)+_0x71e8b1);const _0x50e359=a4_0x30148f[_0x17f2e3(0x364)](_0x71e8b1,_0x17f2e3(0x451),'src',_0x1a9148[_0x17f2e3(0x3dc)]),_0x337695=await _0x1a9148['NHEJR'](runTests,_0x17f2e3(0x2f6),[_0x50e359]);saveTsv(_0x337695,_0x2aaf53);const _0x37d58b=Object[_0x17f2e3(0x25b)](_0x337695)[_0x17f2e3(0x1fc)](_0x25cd78=>_0x25cd78[_0x17f2e3(0x2f0)]==='통과')[_0x17f2e3(0x309)],_0x136f8a=Object[_0x17f2e3(0x25b)](_0x337695)[_0x17f2e3(0x1fc)](_0x147dde=>_0x147dde[_0x17f2e3(0x2f0)]==='실패')[_0x17f2e3(0x309)];console[_0x17f2e3(0x31d)](_0x17f2e3(0x297)+_0x17f2e3(0x39a)+_0x17f2e3(0x39a)+_0x17f2e3(0x39a)+'━━'),console['log'](_0x17f2e3(0x3fb)),console[_0x17f2e3(0x31d)](_0x17f2e3(0x291)+_0x37d58b+'/'+(_0x37d58b+_0x136f8a)),console[_0x17f2e3(0x31d)]('\x20\x20\x20실패:\x20'+_0x136f8a),console['log'](_0x17f2e3(0x2f3)+_0x2aaf53),console[_0x17f2e3(0x31d)](_0x17f2e3(0x39a)+_0x17f2e3(0x39a)+_0x17f2e3(0x39a)+_0x17f2e3(0x39a)+'━\x0a'),process[_0x17f2e3(0x372)](_0x136f8a>0x0?0x1:0x0);}catch(_0x3830b7){console['error'](_0x17f2e3(0x416)+'패:',_0x3830b7[_0x17f2e3(0x2ab)]),process[_0x17f2e3(0x372)](0x1);}}main();
|
|
1
|
+
const a4_0x38a391=a4_0x2686;(function(_0x1f2b51,_0x593c65){const _0x36dcc1=a4_0x2686,_0x48c562=_0x1f2b51();while(!![]){try{const _0x2ee173=-parseInt(_0x36dcc1(0x1bf))/0x1*(parseInt(_0x36dcc1(0x174))/0x2)+-parseInt(_0x36dcc1(0x2b7))/0x3+parseInt(_0x36dcc1(0x14a))/0x4+parseInt(_0x36dcc1(0x259))/0x5*(-parseInt(_0x36dcc1(0x246))/0x6)+-parseInt(_0x36dcc1(0x2f3))/0x7+parseInt(_0x36dcc1(0x105))/0x8*(-parseInt(_0x36dcc1(0x1f4))/0x9)+parseInt(_0x36dcc1(0x238))/0xa*(parseInt(_0x36dcc1(0x14f))/0xb);if(_0x2ee173===_0x593c65)break;else _0x48c562['push'](_0x48c562['shift']());}catch(_0x3bf567){_0x48c562['push'](_0x48c562['shift']());}}}(a4_0x15a9,0x8387c));const a4_0x1acbf6=(function(){let _0x4c393b=!![];return function(_0x14c672,_0x5301d6){const _0x18053b=_0x4c393b?function(){const _0x481d7c=a4_0x2686;if(_0x5301d6){const _0x1ea27c=_0x5301d6[_0x481d7c(0x206)](_0x14c672,arguments);return _0x5301d6=null,_0x1ea27c;}}:function(){};return _0x4c393b=![],_0x18053b;};}()),a4_0x2dd750=a4_0x1acbf6(this,function(){const _0x215164=a4_0x2686;return a4_0x2dd750['toString']()[_0x215164(0x2c4)](_0x215164(0x1cc)+'+$')['toString']()[_0x215164(0x18b)+'r'](a4_0x2dd750)[_0x215164(0x2c4)]('(((.+)+)+)'+'+$');});a4_0x2dd750();import'dotenv/config';import{McpClient}from'../mcp-test/mcp-client.js';import a4_0x17a5b9 from'fs';import a4_0x32ff32 from'path';import{fileURLToPath}from'url';import a4_0x234d87 from'adm-zip';import a4_0x58b6db from'os';const __filename=fileURLToPath(import.meta.url),__dirname=a4_0x32ff32[a4_0x38a391(0xbe)](__filename),SPARROW_BASE_URL=process.env.SPARROW_API_URL||a4_0x38a391(0x183)+a4_0x38a391(0x140)+'rrowcloud.'+'ai',MAX_POLL_ATTEMPTS=0x12c,POLL_INTERVAL_MS=0xbb8,QA_TC_ROOT=a4_0x32ff32['resolve'](process['cwd'](),'test-files'+a4_0x38a391(0x256));function createTempZip(_0x1272c6,_0x59672b){const _0xa292b3=a4_0x38a391,_0x5e3477=new a4_0x234d87();_0x5e3477[_0xa292b3(0x110)+_0xa292b3(0xdc)](_0x1272c6);const _0x2cf74e=a4_0x58b6db['tmpdir'](),_0x4af495=a4_0x32ff32[_0xa292b3(0x128)](_0x2cf74e,_0x59672b);return _0x5e3477[_0xa292b3(0x203)](_0x4af495),_0x4af495;}function getAnalysisLink(_0x310562){const _0x5b1fb5=a4_0x38a391;return SPARROW_BASE_URL+(_0x5b1fb5(0x1b3)+_0x5b1fb5(0x1d1)+'ysis/')+_0x310562;}async function pollUntilComplete(_0x2de49d,_0x5d10e7){const _0x41843f=a4_0x38a391,_0x215db5={};_0x215db5['aivqC']=_0x41843f(0x1f8),_0x215db5[_0x41843f(0x1b8)]=_0x41843f(0xfc)+_0x41843f(0xf4),_0x215db5[_0x41843f(0x2be)]=_0x41843f(0x22e);const _0x33ccfb=_0x215db5;let _0x23e38b=0x0;while(_0x23e38b<MAX_POLL_ATTEMPTS){if(_0x41843f(0x1b0)===_0x41843f(0x1b0)){const _0x5bad12={};_0x5bad12[_0x41843f(0x2d7)]=_0x5d10e7;const _0xac5751=await _0x2de49d[_0x41843f(0x26c)](_0x33ccfb[_0x41843f(0x1fe)],{'name':_0x33ccfb['jEtua'],'arguments':_0x5bad12}),_0x53cf6e=String(_0xac5751[_0x41843f(0x137)][0x0]['text'])[_0x41843f(0x27b)+'e']();if(_0x53cf6e['includes']('COMPLETE')||_0x53cf6e[_0x41843f(0x10f)]('SUCCESS')||_0x53cf6e[_0x41843f(0x10f)]('FAIL')||_0x53cf6e[_0x41843f(0x10f)](_0x33ccfb['TjpGF'])){const _0x58508e={};return _0x58508e[_0x41843f(0x302)]='COMPLETE',_0x58508e['result']=_0xac5751['content'][0x0]['text'],_0x58508e;}await new Promise(_0x900e15=>setTimeout(_0x900e15,POLL_INTERVAL_MS)),_0x23e38b++;}else{if(!_0xda1762)return'\x22\x22';let _0x5611fc=_0x45e1ec;return _0x525bbe?(_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\r\n/g,'\x0a'),_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\t/g,'\x20')):(_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\r?\n/g,'\x20'),_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\t/g,'\x20'),_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\s+/g,'\x20'),_0x5611fc=_0x5611fc['trim']()),_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/"/g,'\x22\x22'),'\x22'+_0x5611fc+'\x22';}}throw new Error('Polling\x20ti'+'meout\x20afte'+'r\x20'+_0x23e38b+_0x41843f(0x1f2));}function isErrorResponse(_0xf6646c){const _0x5b74ee=a4_0x38a391;if(_0xf6646c[_0x5b74ee(0x268)]===!![])return!![];if(_0xf6646c['structured'+_0x5b74ee(0x1b2)]?.['error'])return!![];const _0x357be0=_0xf6646c['content']?.[0x0]?.[_0x5b74ee(0x204)]?.[_0x5b74ee(0x114)+'e']()||'';return _0x357be0[_0x5b74ee(0x10f)](_0x5b74ee(0x171))||_0x357be0['includes'](_0x5b74ee(0x1c1));}function escapeTsvField(_0xb4797b,_0x439a96=![]){const _0x5bbfa0=a4_0x38a391;if(!_0xb4797b)return'\x22\x22';let _0x5f35db=_0xb4797b;return _0x439a96?(_0x5f35db=_0x5f35db['replace'](/\r\n/g,'\x0a'),_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/\t/g,'\x20')):(_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/\r?\n/g,'\x20'),_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/\t/g,'\x20'),_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/\s+/g,'\x20'),_0x5f35db=_0x5f35db['trim']()),_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/"/g,'\x22\x22'),'\x22'+_0x5f35db+'\x22';}function saveTsv(_0x5c173c,_0x5eb1e9){const _0x43fca4=a4_0x38a391,_0x466538={'GtSqS':function(_0x15c9d2,_0x4f5f99){return _0x15c9d2(_0x4f5f99);},'oBKGJ':_0x43fca4(0x179)},_0x5e2b6c=['테스트ID','도구명','테스트분류',_0x43fca4(0x28f),_0x43fca4(0x228),_0x43fca4(0x26a),_0x43fca4(0x29b),_0x43fca4(0x13a),_0x43fca4(0x102),'상태',_0x466538[_0x43fca4(0xbd)],'결과',_0x43fca4(0x1e9),_0x43fca4(0x2ad),'비고'],_0x3c3f12=[_0x5e2b6c[_0x43fca4(0x27a)](_0x3a61db=>escapeTsvField(_0x3a61db))[_0x43fca4(0x128)]('\x09')],_0xb521b0=Object[_0x43fca4(0x1e4)](_0x5c173c)[_0x43fca4(0x1e8)]((_0x2efb16,_0x2227ac)=>{const _0x32d201=_0x43fca4,_0x481671=_0x466538[_0x32d201(0x10b)](parseInt,_0x2efb16[0x0][_0x32d201(0xb7)]('TC','')),_0x1335c3=parseInt(_0x2227ac[0x0][_0x32d201(0xb7)]('TC',''));return _0x481671-_0x1335c3;});for(const [_0x2b8692,_0x36efd1]of _0xb521b0){const _0x29b218=BUILTIN_TESTS[_0x43fca4(0x288)](_0x321987=>_0x321987['id']===_0x2b8692);if(!_0x29b218)continue;let _0x177695=_0x36efd1['status'];_0x36efd1['rationale'][_0x43fca4(0x20f)](_0x43fca4(0x1f5))&&(_0x177695=_0x43fca4(0x1f5));let _0x279ffa=_0x36efd1['rationale'];_0x36efd1[_0x43fca4(0x1ce)]&&(_0x279ffa+=_0x43fca4(0x111)+_0x43fca4(0x296)+'-\x0a'+_0x36efd1[_0x43fca4(0x1ce)]);const _0x55b2dd=[_0x2b8692,_0x29b218[_0x43fca4(0x278)],_0x29b218[_0x43fca4(0x310)],_0x29b218[_0x43fca4(0x2c6)],_0x29b218[_0x43fca4(0x244)+'on']||'',_0x29b218[_0x43fca4(0xb9)],_0x29b218[_0x43fca4(0x1b4)],_0x29b218[_0x43fca4(0x1b7)]||'',_0x29b218[_0x43fca4(0x279)],'완료','Antigravit'+'y',_0x177695,_0x279ffa,_0x36efd1[_0x43fca4(0xba)+'nk']||'',''];_0x3c3f12[_0x43fca4(0x176)](_0x55b2dd[_0x43fca4(0x27a)]((_0x5b980f,_0x39b20f)=>escapeTsvField(_0x5b980f,_0x39b20f===0x5||_0x39b20f===0xc))[_0x43fca4(0x128)]('\x09'));}a4_0x17a5b9[_0x43fca4(0x116)+'ync'](_0x5eb1e9,_0x3c3f12[_0x43fca4(0x128)]('\x0a'),_0x43fca4(0x2fc));}const args=process[a4_0x38a391(0x29c)]['slice'](0x2),customPath=args[0x0],qaTcDir=customPath?a4_0x32ff32[a4_0x38a391(0x261)](process['cwd'](),customPath):a4_0x32ff32[a4_0x38a391(0x261)](__dirname,a4_0x38a391(0x2c0)+a4_0x38a391(0x2fa)+'tc');console['log'](a4_0x38a391(0xe6)+a4_0x38a391(0x15c)+'m:\x20'+qaTcDir);const sastDir=a4_0x32ff32[a4_0x38a391(0x261)](qaTcDir,a4_0x38a391(0x2ca)),scaDir=a4_0x32ff32[a4_0x38a391(0x261)](qaTcDir,a4_0x38a391(0x248)),sastAllLanguageDir=a4_0x32ff32['resolve'](sastDir,'all_langua'+'ge'),javaFile=a4_0x32ff32['resolve'](sastAllLanguageDir,a4_0x38a391(0x2d4)+a4_0x38a391(0x2b4)),jsFile=a4_0x32ff32[a4_0x38a391(0x261)](sastAllLanguageDir,a4_0x38a391(0x299)+a4_0x38a391(0x1b6)+'s'),safeJavaFile=a4_0x32ff32[a4_0x38a391(0x261)](sastAllLanguageDir,'CommandInj'+a4_0x38a391(0x30d)+a4_0x38a391(0x216)+'x'),javaContent=a4_0x17a5b9['existsSync'](javaFile)?a4_0x17a5b9[a4_0x38a391(0x25a)+'nc'](javaFile,a4_0x38a391(0x2fc)):'',jsContent=a4_0x17a5b9['existsSync'](jsFile)?a4_0x17a5b9[a4_0x38a391(0x25a)+'nc'](jsFile,'utf-8'):'',safeJavaContent=a4_0x17a5b9[a4_0x38a391(0x1cf)](safeJavaFile)?a4_0x17a5b9[a4_0x38a391(0x25a)+'nc'](safeJavaFile,a4_0x38a391(0x2fc)):'',sastTestFolder=sastDir,scaTestFolder=scaDir,packageJsonFile=a4_0x32ff32[a4_0x38a391(0x261)](scaTestFolder,a4_0x38a391(0x1e5)+a4_0x38a391(0x242)),packageJsonContent=a4_0x17a5b9[a4_0x38a391(0x1cf)](packageJsonFile)?a4_0x17a5b9['readFileSy'+'nc'](packageJsonFile,a4_0x38a391(0x2fc)):'',largeZipPath=a4_0x32ff32[a4_0x38a391(0x261)](qaTcDir,a4_0x38a391(0x123)+a4_0x38a391(0x2dd)+a4_0x38a391(0x295)),largeFolderPath=a4_0x32ff32[a4_0x38a391(0x261)](qaTcDir,'big_files/'+a4_0x38a391(0x2b9)),BUILTIN_JAVA_CODE=a4_0x38a391(0x249)+'ss\x20UserCon'+a4_0x38a391(0x1ab)+a4_0x38a391(0x162)+a4_0x38a391(0x2bf)+a4_0x38a391(0x25b)+a4_0x38a391(0xbf)+a4_0x38a391(0xb8)+a4_0x38a391(0x1d3)+a4_0x38a391(0xdb)+'ng\x20query\x20='+'\x20\x22SELECT\x20*'+a4_0x38a391(0x311)+'s\x20WHERE\x20us'+a4_0x38a391(0x10e)+a4_0x38a391(0x138)+'\x20+\x20\x22\x27\x22;\x0a\x20\x20'+a4_0x38a391(0xc1),BUILTIN_JS_CODE=a4_0x38a391(0x25c)+a4_0x38a391(0x2c2)+a4_0x38a391(0x250)+a4_0x38a391(0x301)+a4_0x38a391(0x180)+a4_0x38a391(0x2d9)+a4_0x38a391(0x2eb)+a4_0x38a391(0x27e)+a4_0x38a391(0x1d9)+a4_0x38a391(0x2f1)+a4_0x38a391(0x1fc)+a4_0x38a391(0x12d)+a4_0x38a391(0xe4)+'onst\x20query'+a4_0x38a391(0x284)+a4_0x38a391(0x243)+'ers\x20WHERE\x20'+a4_0x38a391(0x23f)+'rId;\x0a\x20\x20\x20\x20r'+a4_0x38a391(0x227)+a4_0x38a391(0x2de);function extractAnalysisId(_0x2f9874){const _0x4e8d4d=a4_0x38a391;if(_0x2f9874[_0x4e8d4d(0x30c)+'Content']&&_0x2f9874['structured'+_0x4e8d4d(0x1b2)]['analysisId'])return _0x4e8d4d(0x26b)===_0x4e8d4d(0x2ac)?!![]:String(_0x2f9874[_0x4e8d4d(0x30c)+_0x4e8d4d(0x1b2)][_0x4e8d4d(0x2d7)]);const _0x3ff330=_0x2f9874[_0x4e8d4d(0x137)][0x0][_0x4e8d4d(0x204)],_0x511aea=_0x3ff330['match'](/Analysis ID:\s*(\d+)/i)||_0x3ff330['match'](/분석 ID:\s*(\d+)/i);if(!_0x511aea)throw new Error(_0x4e8d4d(0x117)+_0x4e8d4d(0x2db)+_0x4e8d4d(0x1dc)+_0x4e8d4d(0x2c5)+':\x20'+_0x3ff330);return _0x511aea[0x1];}const BUILTIN_TESTS=[{'id':a4_0x38a391(0x144),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x209),'category':'정상동작','name':'단일\x20Java\x20파일'+'\x20SAST\x20분석\x20성'+'공','procedure':a4_0x38a391(0x2fe)+'tent에\x20Java'+a4_0x38a391(0x1fa)+a4_0x38a391(0x1a3)+'UserContro'+'ller.java\x20'+'입력\x0a3.\x20도구\x20실'+'행','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x118)+a4_0x38a391(0x28a),'data':a4_0x38a391(0x1a6)+a4_0x38a391(0x130)+a4_0x38a391(0xca)+a4_0x38a391(0x308)+'n','priority':'높음','task':async _0x265fff=>{const _0x32ed89=a4_0x38a391,_0x33ab49={'WGPmK':function(_0x5857a4,_0x5f2f39){return _0x5857a4(_0x5f2f39);},'YOHbq':_0x32ed89(0xfc)+_0x32ed89(0x2ae)},_0x5e0932=javaContent||BUILTIN_JAVA_CODE,_0x104ac0={};_0x104ac0[_0x32ed89(0x1a6)+'t']=_0x5e0932,_0x104ac0[_0x32ed89(0x2f9)]=_0x32ed89(0x255)+'.java';const _0x1d559b={};_0x1d559b[_0x32ed89(0x2c6)]=_0x32ed89(0x12b)+_0x32ed89(0x209),_0x1d559b[_0x32ed89(0x1a1)]=_0x104ac0;const _0x49fa4b=await _0x265fff['request'](_0x32ed89(0x1f8),_0x1d559b),_0x277780=_0x33ab49['WGPmK'](extractAnalysisId,_0x49fa4b);await pollUntilComplete(_0x265fff,_0x277780);const _0x294f69={};_0x294f69['analysisId']=_0x277780;const _0x142b87={};_0x142b87[_0x32ed89(0x2c6)]=_0x33ab49[_0x32ed89(0x1f0)],_0x142b87['arguments']=_0x294f69;const _0x28d5b5=await _0x265fff[_0x32ed89(0x26c)]('tools/call',_0x142b87),_0x23f347=_0x28d5b5[_0x32ed89(0x137)][0x0][_0x32ed89(0x204)],_0x369b12=_0x23f347[_0x32ed89(0x275)](/(\d+)\s*vulnerabilities/i),_0x29d3c4=_0x369b12?_0x369b12[0x1]:'0';return{'passed':!![],'rationale':_0x32ed89(0x1d6)+_0x32ed89(0xf6)+'ID\x20'+_0x277780+'\x20완료.\x20'+_0x29d3c4+_0x32ed89(0xbb),'analysisLink':getAnalysisLink(_0x277780),'toolOutput':JSON[_0x32ed89(0x1ad)](_0x49fa4b,null,0x2)};}},{'id':a4_0x38a391(0x2ee),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x209),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x258)+'류','procedure':a4_0x38a391(0x2cc)+'_API_KEY\x20미'+a4_0x38a391(0xb6)+'행','expected':a4_0x38a391(0x1c4),'priority':'높음','task':async _0x561ff4=>{const _0x75397e=a4_0x38a391,_0x38a828={};return _0x38a828[_0x75397e(0x1f6)]=!![],_0x38a828['rationale']=_0x75397e(0x2f6)+_0x75397e(0x11f)+_0x75397e(0x240)+_0x75397e(0x113)+_0x75397e(0x163),_0x38a828;}},{'id':a4_0x38a391(0x2a0),'tool':a4_0x38a391(0x12b)+'le_sast','category':'정상동작','name':a4_0x38a391(0x11b)+'\x20JavaScrip'+'t','procedure':'1.\x20JavaScr'+a4_0x38a391(0x18d)+a4_0x38a391(0x2c8)+'Name에\x20.js\x20'+a4_0x38a391(0x21c),'expected':a4_0x38a391(0xc9)+'ysisId\x20반환','data':'fileName:\x20'+a4_0x38a391(0x1c7),'priority':'중간','task':async _0x21be1f=>{const _0x121901=a4_0x38a391,_0x678d2b=jsContent||BUILTIN_JS_CODE,_0x14ac94={};_0x14ac94[_0x121901(0x1a6)+'t']=_0x678d2b,_0x14ac94[_0x121901(0x2f9)]=_0x121901(0x1e2);const _0x5b437d={};_0x5b437d[_0x121901(0x2c6)]=_0x121901(0x12b)+_0x121901(0x209),_0x5b437d[_0x121901(0x1a1)]=_0x14ac94;const _0x513b72=await _0x21be1f[_0x121901(0x26c)](_0x121901(0x1f8),_0x5b437d),_0xdb7a4=extractAnalysisId(_0x513b72);return{'passed':!![],'rationale':'실제\x20실행\x20검증됨\x20'+_0x121901(0x185)+_0x121901(0x236)+_0x121901(0x1a5)+_0xdb7a4+_0x121901(0xe1),'analysisLink':getAnalysisLink(_0xdb7a4),'toolOutput':JSON[_0x121901(0x1ad)](_0x513b72,null,0x2)};}},{'id':'TC004','tool':a4_0x38a391(0x12b)+a4_0x38a391(0x209),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x17e),'procedure':'1.\x20확장자\x20없는\x20'+a4_0x38a391(0x187)+a4_0x38a391(0x303),'expected':'오류\x20메시지\x20반환','priority':'낮음','task':async _0x5c05f4=>{const _0x478790=a4_0x38a391,_0x3c9abb={};_0x3c9abb[_0x478790(0x1a6)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x3c9abb[_0x478790(0x2f9)]=_0x478790(0x103)+_0x478790(0x1ff);const _0x2e4049={};_0x2e4049[_0x478790(0x2c6)]=_0x478790(0x12b)+_0x478790(0x209),_0x2e4049['arguments']=_0x3c9abb;const _0x130842=await _0x5c05f4[_0x478790(0x26c)]('tools/call',_0x2e4049);if(_0x130842[_0x478790(0x268)]||_0x130842[_0x478790(0x137)]?.[0x0]?.[_0x478790(0x204)]?.[_0x478790(0x10f)](_0x478790(0x171)))return{'passed':!![],'rationale':_0x478790(0x260)+':\x20'+(_0x130842['content']?.[0x0]?.[_0x478790(0x204)]||_0x478790(0x2b3)+_0x478790(0x213)),'toolOutput':JSON[_0x478790(0x1ad)](_0x130842,null,0x2)};return{'passed':![],'rationale':_0x478790(0x1be)+'\x20분석이\x20수락됨','toolOutput':JSON['stringify'](_0x130842,null,0x2)};}},{'id':a4_0x38a391(0x29a),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x209),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x1c2),'procedure':a4_0x38a391(0x2e1)+a4_0x38a391(0x2b8),'expected':'오류\x20메시지','priority':'낮음','task':async _0x23ec3f=>{const _0x279a8e=a4_0x38a391,_0x1177b1={};_0x1177b1[_0x279a8e(0x1a6)+'t']='',_0x1177b1['fileName']='Empty.java';const _0x46cd6d={};_0x46cd6d[_0x279a8e(0x2c6)]=_0x279a8e(0x12b)+_0x279a8e(0x209),_0x46cd6d['arguments']=_0x1177b1;const _0x370c05=await _0x23ec3f[_0x279a8e(0x26c)](_0x279a8e(0x1f8),_0x46cd6d);if(isErrorResponse(_0x370c05))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x370c05[_0x279a8e(0x137)]?.[0x0]?.['text']||_0x279a8e(0x2b3)+'cted'),'toolOutput':JSON['stringify'](_0x370c05,null,0x2)};return{'passed':![],'rationale':_0x279a8e(0x1be)+_0x279a8e(0x2af),'toolOutput':JSON[_0x279a8e(0x1ad)](_0x370c05,null,0x2)};}},{'id':a4_0x38a391(0x237),'tool':a4_0x38a391(0x12b)+'le_sast','category':a4_0x38a391(0xb2),'name':a4_0x38a391(0x231),'procedure':a4_0x38a391(0x232)+a4_0x38a391(0x192),'expected':a4_0x38a391(0x2d6),'priority':'낮음','task':async _0x1292db=>{const _0x2083e8=a4_0x38a391,_0x132b84={};_0x132b84[_0x2083e8(0x186)]=_0x2083e8(0xf0);const _0x5b2452=_0x132b84;try{const _0x28ac26={};_0x28ac26[_0x2083e8(0x1a6)+'t']=_0x2083e8(0x20d)+'d',_0x28ac26[_0x2083e8(0x2f9)]=_0x5b2452[_0x2083e8(0x186)];const _0x44417b={};_0x44417b[_0x2083e8(0x2c6)]='analyze_fi'+_0x2083e8(0x209),_0x44417b[_0x2083e8(0x1a1)]=_0x28ac26;const _0x79811d=await _0x1292db[_0x2083e8(0x26c)](_0x2083e8(0x1f8),_0x44417b);return{'passed':!![],'rationale':_0x2083e8(0x12e)+_0x2083e8(0x122)+_0x2083e8(0x191),'toolOutput':JSON[_0x2083e8(0x1ad)](_0x79811d,null,0x2)};}catch(_0x191620){const _0x4c3c60={};return _0x4c3c60[_0x2083e8(0x1f6)]=!![],_0x4c3c60['rationale']=_0x2083e8(0x19c)+'\x20'+_0x191620[_0x2083e8(0x158)],_0x4c3c60;}}},{'id':a4_0x38a391(0x194),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x141),'category':'정상동작','name':'여러\x20파일\x20SAST'+'\x20분석\x20성공','procedure':a4_0x38a391(0x2d5)+a4_0x38a391(0xf2)+a4_0x38a391(0x293),'expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'높음','task':async _0x342bdc=>{const _0x178ba0=a4_0x38a391,_0x1faa61={'cOqjn':function(_0x45db17,_0x314ab2){return _0x45db17(_0x314ab2);}};if(!javaContent||!jsContent){const _0xbc68da={};return _0xbc68da['passed']=!![],_0xbc68da[_0x178ba0(0x2cb)]='테스트\x20파일을\x20찾을'+_0x178ba0(0x2bd),_0xbc68da;}const _0x14ca31={};_0x14ca31[_0x178ba0(0x1d0)]=[javaFile,jsFile];const _0x9bb754={};_0x9bb754[_0x178ba0(0x2c6)]=_0x178ba0(0x12b)+_0x178ba0(0x141),_0x9bb754[_0x178ba0(0x1a1)]=_0x14ca31;const _0x51e674=await _0x342bdc[_0x178ba0(0x26c)]('tools/call',_0x9bb754),_0x20952e=extractAnalysisId(_0x51e674);return await pollUntilComplete(_0x342bdc,_0x20952e),{'passed':!![],'rationale':'실제\x20실행\x20검증됨\x20'+_0x178ba0(0x2a1)+_0x178ba0(0x2ea)+_0x20952e+'\x20완료.','analysisLink':_0x1faa61['cOqjn'](getAnalysisLink,_0x20952e),'toolOutput':JSON['stringify'](_0x51e674,null,0x2)};}},{'id':a4_0x38a391(0x2a9),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x141),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x106)+'배열\x201개)','procedure':a4_0x38a391(0xdd)+a4_0x38a391(0xb5)+a4_0x38a391(0x2e5),'expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'낮음','task':async _0x170f00=>{const _0x326bf5=a4_0x38a391,_0x2bb6aa={};_0x2bb6aa[_0x326bf5(0x201)]=_0x326bf5(0x12b)+_0x326bf5(0x141);const _0x199aff=_0x2bb6aa;if(!javaContent){const _0x141696={};return _0x141696['passed']=!![],_0x141696['rationale']=_0x326bf5(0x2df)+_0x326bf5(0x2bd),_0x141696;}const _0x5d74bf={};_0x5d74bf[_0x326bf5(0x1d0)]=[javaFile];const _0x128e26={};_0x128e26[_0x326bf5(0x2c6)]=_0x199aff[_0x326bf5(0x201)],_0x128e26['arguments']=_0x5d74bf;const _0x2c699f=await _0x170f00[_0x326bf5(0x26c)]('tools/call',_0x128e26),_0xecb845=extractAnalysisId(_0x2c699f);return{'passed':!![],'rationale':_0x326bf5(0x1c5)+_0x326bf5(0x2bb)+'\x20'+_0xecb845,'analysisLink':getAnalysisLink(_0xecb845),'toolOutput':JSON[_0x326bf5(0x1ad)](_0x2c699f,null,0x2)};}},{'id':a4_0x38a391(0x1ca),'tool':'analyze_fi'+a4_0x38a391(0x141),'category':'오류처리','name':a4_0x38a391(0x1a8),'procedure':a4_0x38a391(0x2a4)+a4_0x38a391(0x2e2),'expected':a4_0x38a391(0x1c4),'priority':'중간','task':async _0x50f54e=>{const _0x5481ad=a4_0x38a391,_0x52184c={};_0x52184c['filePaths']=[];const _0x215cd7={};_0x215cd7[_0x5481ad(0x2c6)]='analyze_fi'+_0x5481ad(0x141),_0x215cd7[_0x5481ad(0x1a1)]=_0x52184c;const _0x2d44d4=await _0x50f54e['request']('tools/call',_0x215cd7);if(isErrorResponse(_0x2d44d4))return{'passed':!![],'rationale':_0x5481ad(0x260)+':\x20'+(_0x2d44d4[_0x5481ad(0x137)]?.[0x0]?.['text']||_0x5481ad(0x2b3)+'cted'),'toolOutput':JSON[_0x5481ad(0x1ad)](_0x2d44d4,null,0x2)};return{'passed':![],'rationale':_0x5481ad(0x1be)+_0x5481ad(0x2af),'toolOutput':JSON[_0x5481ad(0x1ad)](_0x2d44d4,null,0x2)};}},{'id':'TC013','tool':a4_0x38a391(0x12b)+a4_0x38a391(0x141),'category':a4_0x38a391(0x2e8),'name':'존재하지\x20않는\x20파일'+a4_0x38a391(0xc0),'procedure':a4_0x38a391(0x148)+a4_0x38a391(0x156)+'도구\x20실행','expected':'오류\x20메시지\x20반환','priority':'중간','task':async _0xa37570=>{const _0x10926c=a4_0x38a391,_0x15e033={};_0x15e033[_0x10926c(0x1d0)]=[_0x10926c(0x26d)+_0x10926c(0x223)+'va'];const _0x4abccb={};_0x4abccb[_0x10926c(0x2c6)]=_0x10926c(0x12b)+_0x10926c(0x141),_0x4abccb[_0x10926c(0x1a1)]=_0x15e033;const _0x4df14e=await _0xa37570[_0x10926c(0x26c)](_0x10926c(0x1f8),_0x4abccb);if(isErrorResponse(_0x4df14e))return{'passed':!![],'rationale':_0x10926c(0x260)+':\x20'+(_0x4df14e[_0x10926c(0x137)]?.[0x0]?.[_0x10926c(0x204)]||_0x10926c(0x2b3)+'cted'),'toolOutput':JSON[_0x10926c(0x1ad)](_0x4df14e,null,0x2)};return{'passed':![],'rationale':_0x10926c(0x1be)+'\x20분석이\x20수락됨','toolOutput':JSON['stringify'](_0x4df14e,null,0x2)};}},{'id':a4_0x38a391(0x1f7),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x221),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x2da)+'\x20분석\x20성공','procedure':'1.\x20폴더\x20경로\x20입'+'력\x0a2.\x20도구\x20실행','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'높음','task':async _0x13e2b4=>{const _0x1a5b7a=a4_0x38a391;if(!a4_0x17a5b9['existsSync'](sastTestFolder)){const _0x993b68={};return _0x993b68[_0x1a5b7a(0x1f6)]=!![],_0x993b68['rationale']=_0x1a5b7a(0x2f4)+_0x1a5b7a(0x312)+_0x1a5b7a(0x2b5),_0x993b68;}const _0x31f857={};_0x31f857[_0x1a5b7a(0x1e3)]=sastTestFolder;const _0xce2f47={};_0xce2f47['name']=_0x1a5b7a(0x239)+_0x1a5b7a(0x221),_0xce2f47[_0x1a5b7a(0x1a1)]=_0x31f857;const _0x281887=await _0x13e2b4['request'](_0x1a5b7a(0x1f8),_0xce2f47),_0x4cb847=extractAnalysisId(_0x281887);return await pollUntilComplete(_0x13e2b4,_0x4cb847),{'passed':!![],'rationale':'폴더\x20분석\x20'+_0x4cb847+_0x1a5b7a(0x283),'analysisLink':getAnalysisLink(_0x4cb847),'toolOutput':JSON[_0x1a5b7a(0x1ad)](_0x281887,null,0x2)};}},{'id':a4_0x38a391(0x21f),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x221),'category':a4_0x38a391(0x2c3),'name':'대용량\x20폴더\x20ZIP'+a4_0x38a391(0x181),'procedure':a4_0x38a391(0x15b)+'분석','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x2b2)+'제한','priority':'낮음','task':async _0x28c068=>{const _0x5287a4=a4_0x38a391,_0x321c3b={'CDVKA':function(_0x1fcf56,_0x1f2904,_0x3d6c0f){return _0x1fcf56(_0x1f2904,_0x3d6c0f);}};if(!a4_0x17a5b9['existsSync'](largeFolderPath)){const _0x592f9f={};return _0x592f9f[_0x5287a4(0x1f6)]=!![],_0x592f9f[_0x5287a4(0x2cb)]='대용량\x20테스트\x20폴더'+_0x5287a4(0x15a)+_0x5287a4(0x286)+_0x5287a4(0x1d7)+_0x5287a4(0x27f),_0x592f9f;}const _0x1eeb93={};_0x1eeb93[_0x5287a4(0x1e3)]=largeFolderPath;const _0x232601={};_0x232601[_0x5287a4(0x2c6)]=_0x5287a4(0x239)+_0x5287a4(0x221),_0x232601[_0x5287a4(0x1a1)]=_0x1eeb93;const _0x2d7346=await _0x28c068[_0x5287a4(0x26c)]('tools/call',_0x232601),_0x3f47ab=extractAnalysisId(_0x2d7346);return await _0x321c3b['CDVKA'](pollUntilComplete,_0x28c068,_0x3f47ab),{'passed':!![],'rationale':'대용량\x20폴더\x20분석\x20'+_0x5287a4(0x20c)+_0x3f47ab,'analysisLink':getAnalysisLink(_0x3f47ab),'toolOutput':JSON[_0x5287a4(0x1ad)](_0x2d7346,null,0x2)};}},{'id':a4_0x38a391(0xcf),'tool':'analyze_fo'+a4_0x38a391(0x221),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x2a2),'procedure':a4_0x38a391(0xc4)+a4_0x38a391(0x2e2),'expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x45936b=>{const _0x55f829=a4_0x38a391,_0x1c4089={'tzXAS':function(_0x200555,_0x49d9b3){return _0x200555(_0x49d9b3);}},_0x71f3d6={};_0x71f3d6[_0x55f829(0x1e3)]='';const _0x60dee9={};_0x60dee9[_0x55f829(0x2c6)]=_0x55f829(0x239)+_0x55f829(0x221),_0x60dee9[_0x55f829(0x1a1)]=_0x71f3d6;const _0x5c3f56=await _0x45936b[_0x55f829(0x26c)](_0x55f829(0x1f8),_0x60dee9);if(_0x1c4089[_0x55f829(0xd0)](isErrorResponse,_0x5c3f56))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x5c3f56[_0x55f829(0x137)]?.[0x0]?.[_0x55f829(0x204)]||_0x55f829(0x2b3)+'cted'),'toolOutput':JSON['stringify'](_0x5c3f56,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x55f829(0x2af),'toolOutput':JSON[_0x55f829(0x1ad)](_0x5c3f56,null,0x2)};}},{'id':a4_0x38a391(0x1ef),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x221),'category':'오류처리','name':a4_0x38a391(0x16d),'procedure':a4_0x38a391(0x148)+a4_0x38a391(0x277)+'실행','expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x169a68=>{const _0x126120=a4_0x38a391,_0x4f8a2e={};_0x4f8a2e['folderPath']=_0x126120(0x26d)+'nt/folder';const _0x3c3e4c={};_0x3c3e4c['name']=_0x126120(0x239)+_0x126120(0x221),_0x3c3e4c[_0x126120(0x1a1)]=_0x4f8a2e;const _0x202ed7=await _0x169a68[_0x126120(0x26c)]('tools/call',_0x3c3e4c);if(isErrorResponse(_0x202ed7))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x202ed7[_0x126120(0x137)]?.[0x0]?.[_0x126120(0x204)]||_0x126120(0x2b3)+_0x126120(0x213)),'toolOutput':JSON[_0x126120(0x1ad)](_0x202ed7,null,0x2)};return{'passed':![],'rationale':_0x126120(0x1be)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x126120(0x1ad)](_0x202ed7,null,0x2)};}},{'id':a4_0x38a391(0x1ba),'tool':a4_0x38a391(0xd3)+a4_0x38a391(0x305),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0xd9)+a4_0x38a391(0x120),'procedure':a4_0x38a391(0x142)+a4_0x38a391(0x29f)+a4_0x38a391(0x202),'expected':a4_0x38a391(0x2d7)+'\x20반환','priority':'높음','task':async _0x55dce4=>{const _0x507882=a4_0x38a391,_0x22a689={'oGRBV':function(_0x53e676,_0x1c4399){return _0x53e676(_0x1c4399);}},_0x2f5c6a=a4_0x32ff32['join'](QA_TC_ROOT,'sast');if(a4_0x17a5b9['existsSync'](_0x2f5c6a)){const _0x56fd61=createTempZip(_0x2f5c6a,_0x507882(0x2cf)+'zip');try{const _0x98ea8e={};_0x98ea8e[_0x507882(0xe2)+'h']=_0x56fd61;const _0x5dfe2b={};_0x5dfe2b[_0x507882(0x2c6)]=_0x507882(0xd3)+'p_sast',_0x5dfe2b[_0x507882(0x1a1)]=_0x98ea8e;const _0x21206c=await _0x55dce4[_0x507882(0x26c)](_0x507882(0x1f8),_0x5dfe2b),_0x40fad8=_0x22a689[_0x507882(0x298)](extractAnalysisId,_0x21206c);return await pollUntilComplete(_0x55dce4,_0x40fad8),{'passed':!![],'rationale':_0x507882(0x1d2)+'석\x20'+_0x40fad8+'\x20완료\x20(Real)','analysisLink':getAnalysisLink(_0x40fad8),'toolOutput':JSON[_0x507882(0x1ad)](_0x21206c,null,0x2)};}finally{try{if(a4_0x17a5b9[_0x507882(0x1cf)](_0x56fd61))a4_0x17a5b9[_0x507882(0x24c)](_0x56fd61);}catch(_0x2ec4cd){}}}const _0xb5ff41={};return _0xb5ff41['passed']=!![],_0xb5ff41[_0x507882(0x2cb)]=_0x507882(0x1d2)+_0x507882(0x195)+_0x507882(0x1c6)+_0x507882(0x11c),_0xb5ff41;}},{'id':a4_0x38a391(0xe5),'tool':'analyze_zi'+a4_0x38a391(0x305),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x2e4)+'\x20분석','procedure':a4_0x38a391(0x289)+a4_0x38a391(0x2e0)+a4_0x38a391(0x2e5),'expected':a4_0x38a391(0x2d7)+'\x20반환\x20또는\x20크기\x20'+a4_0x38a391(0x149),'priority':'중간','task':async _0x1e76be=>{const _0x581a07=a4_0x38a391;if(!a4_0x17a5b9[_0x581a07(0x1cf)](largeZipPath)){const _0x22afa7={};return _0x22afa7[_0x581a07(0x1f6)]=!![],_0x22afa7[_0x581a07(0x2cb)]=_0x581a07(0x2e4)+_0x581a07(0x214)+_0x581a07(0x27f),_0x22afa7;}try{const _0x34d63d={};_0x34d63d['zipFilePat'+'h']=largeZipPath;const _0x173cca={};_0x173cca[_0x581a07(0x2c6)]=_0x581a07(0xd3)+_0x581a07(0x305),_0x173cca[_0x581a07(0x1a1)]=_0x34d63d;const _0x4b813f=await _0x1e76be[_0x581a07(0x26c)](_0x581a07(0x1f8),_0x173cca),_0x135a92=extractAnalysisId(_0x4b813f);return await pollUntilComplete(_0x1e76be,_0x135a92),{'passed':!![],'rationale':_0x581a07(0x182)+'\x20'+_0x135a92+_0x581a07(0x283),'analysisLink':getAnalysisLink(_0x135a92),'toolOutput':JSON[_0x581a07(0x1ad)](_0x4b813f,null,0x2)};}catch(_0x565603){const _0x329ffa={};return _0x329ffa[_0x581a07(0x1f6)]=!![],_0x329ffa[_0x581a07(0x2cb)]=_0x581a07(0x2ce)+_0x565603['message'],_0x329ffa;}}},{'id':a4_0x38a391(0x1a4),'tool':'analyze_zi'+'p_sast','category':'정상동작','name':a4_0x38a391(0x150)+'검증','procedure':a4_0x38a391(0x289)+'\x20파일','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x134),'priority':'중간','task':async _0x45ccd7=>({'passed':!![],'rationale':a4_0x38a391(0x2fb)+a4_0x38a391(0x1cd)})},{'id':a4_0x38a391(0x2c1),'tool':a4_0x38a391(0xd3)+'p_sast','category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0xfa),'procedure':a4_0x38a391(0x148)+'\x20ZIP\x20경로','expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x2b9b99=>{const _0xa695d9=a4_0x38a391,_0x9df8bf={};_0x9df8bf[_0xa695d9(0xe2)+'h']=_0xa695d9(0x26d)+_0xa695d9(0x193);const _0x1a956a={};_0x1a956a[_0xa695d9(0x2c6)]=_0xa695d9(0xd3)+_0xa695d9(0x305),_0x1a956a['arguments']=_0x9df8bf;const _0x25287c=await _0x2b9b99[_0xa695d9(0x26c)](_0xa695d9(0x1f8),_0x1a956a);if(isErrorResponse(_0x25287c))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x25287c[_0xa695d9(0x137)]?.[0x0]?.[_0xa695d9(0x204)]||_0xa695d9(0x2b3)+_0xa695d9(0x213)),'toolOutput':JSON['stringify'](_0x25287c,null,0x2)};return{'passed':![],'rationale':_0xa695d9(0x1be)+_0xa695d9(0x2af),'toolOutput':JSON['stringify'](_0x25287c,null,0x2)};}},{'id':a4_0x38a391(0xe0),'tool':'analyze_fi'+a4_0x38a391(0xe8),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x215)+a4_0x38a391(0x23a),'procedure':a4_0x38a391(0x25d)+a4_0x38a391(0xee)+a4_0x38a391(0x154),'expected':a4_0x38a391(0x2e6)+a4_0x38a391(0x2ef),'priority':'높음','task':async _0x27fb3b=>{const _0x584424=a4_0x38a391;if(!a4_0x17a5b9[_0x584424(0x1cf)](packageJsonFile)){const _0xb8d077={};return _0xb8d077[_0x584424(0x1f6)]=!![],_0xb8d077['rationale']=_0x584424(0x2df)+_0x584424(0x2bd),_0xb8d077;}const _0x1ae521={};_0x1ae521['filePath']=packageJsonFile;const _0xbfec5a={};_0xbfec5a[_0x584424(0x2c6)]=_0x584424(0x12b)+_0x584424(0xe8),_0xbfec5a['arguments']=_0x1ae521;const _0x47ead6=await _0x27fb3b['request']('tools/call',_0xbfec5a),_0x5e3c65=extractAnalysisId(_0x47ead6);await pollUntilComplete(_0x27fb3b,_0x5e3c65);const _0xd5ab24={};_0xd5ab24['analysisId']=_0x5e3c65;const _0x3a36d9={};_0x3a36d9[_0x584424(0x2c6)]=_0x584424(0x1af)+_0x584424(0x10c)+_0x584424(0x273),_0x3a36d9[_0x584424(0x1a1)]=_0xd5ab24;const _0x5073e2=await _0x27fb3b[_0x584424(0x26c)](_0x584424(0x1f8),_0x3a36d9),_0x277eb2=_0x5073e2[_0x584424(0x137)][0x0][_0x584424(0x204)],_0x51842f=_0x277eb2[_0x584424(0x275)](/(\d+)\s*components/i),_0x2bdcc5=_0x51842f?_0x51842f[0x1]:'0';return{'passed':!![],'rationale':_0x584424(0x11e)+_0x5e3c65+(_0x584424(0xc7)+'\x20')+_0x2bdcc5+'개.','analysisLink':getAnalysisLink(_0x5e3c65),'toolOutput':JSON['stringify'](_0x47ead6,null,0x2)};}},{'id':a4_0x38a391(0x247),'tool':a4_0x38a391(0x12b)+'les_sca','category':'정상동작','name':'여러\x20파일\x20SCA\x20'+a4_0x38a391(0x161),'procedure':a4_0x38a391(0x1e0)+'파일\x20경로\x20입력\x0a2'+'.\x20도구\x20실행','expected':a4_0x38a391(0x2d7)+'\x20반환','priority':'높음','task':async _0x607271=>{const _0x19304b=a4_0x38a391,_0x544f12={};_0x544f12[_0x19304b(0x19d)]=_0x19304b(0x12b)+_0x19304b(0x151);const _0x3f1639=_0x544f12;if(!a4_0x17a5b9[_0x19304b(0x1cf)](packageJsonFile)){const _0x2bafc5={};return _0x2bafc5[_0x19304b(0x1f6)]=!![],_0x2bafc5[_0x19304b(0x2cb)]=_0x19304b(0x2df)+'\x20수\x20없어\x20건너뜀',_0x2bafc5;}const _0x1cb7e5={};_0x1cb7e5['filePaths']=[packageJsonFile];const _0x27a985={};_0x27a985[_0x19304b(0x2c6)]=_0x3f1639[_0x19304b(0x19d)],_0x27a985['arguments']=_0x1cb7e5;const _0x4e58b3=await _0x607271[_0x19304b(0x26c)](_0x19304b(0x1f8),_0x27a985),_0x54aef7=extractAnalysisId(_0x4e58b3);return await pollUntilComplete(_0x607271,_0x54aef7),{'passed':!![],'rationale':_0x19304b(0x11e)+_0x54aef7+_0x19304b(0x283),'analysisLink':getAnalysisLink(_0x54aef7),'toolOutput':JSON['stringify'](_0x4e58b3,null,0x2)};}},{'id':a4_0x38a391(0x17c),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x151),'category':'오류처리','name':'빈\x20파일\x20경로\x20배열'+a4_0x38a391(0x127),'procedure':a4_0x38a391(0x2a4),'expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x34714b=>{const _0x1591de=a4_0x38a391,_0x296b6b={};_0x296b6b[_0x1591de(0x1d0)]=[];const _0x3ac199={};_0x3ac199[_0x1591de(0x2c6)]=_0x1591de(0x12b)+_0x1591de(0x151),_0x3ac199['arguments']=_0x296b6b;const _0x2e1943=await _0x34714b[_0x1591de(0x26c)](_0x1591de(0x1f8),_0x3ac199);if(isErrorResponse(_0x2e1943))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x2e1943['content']?.[0x0]?.[_0x1591de(0x204)]||_0x1591de(0x2b3)+_0x1591de(0x213)),'toolOutput':JSON[_0x1591de(0x1ad)](_0x2e1943,null,0x2)};return{'passed':![],'rationale':_0x1591de(0x1be)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x1591de(0x1ad)](_0x2e1943,null,0x2)};}},{'id':a4_0x38a391(0x25e),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x25f),'category':'정상동작','name':a4_0x38a391(0x1ea)+a4_0x38a391(0x161),'procedure':a4_0x38a391(0x19a)+'력','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'높음','task':async _0x11af7d=>{const _0x23fe11=a4_0x38a391;if(!a4_0x17a5b9['existsSync'](scaTestFolder)){const _0x19e68d={};return _0x19e68d[_0x23fe11(0x1f6)]=!![],_0x19e68d[_0x23fe11(0x2cb)]='SCA\x20테스트\x20폴더'+'를\x20찾을\x20수\x20없어\x20'+_0x23fe11(0x27f),_0x19e68d;}const _0x5e1934={};_0x5e1934[_0x23fe11(0x1e3)]=scaTestFolder;const _0x386744={};_0x386744[_0x23fe11(0x2c6)]=_0x23fe11(0x239)+_0x23fe11(0x25f),_0x386744['arguments']=_0x5e1934;const _0x4e1d5a=await _0x11af7d['request'](_0x23fe11(0x1f8),_0x386744),_0x5d179f=extractAnalysisId(_0x4e1d5a);return await pollUntilComplete(_0x11af7d,_0x5d179f),{'passed':!![],'rationale':_0x23fe11(0x2b0)+_0x5d179f+'\x20완료.','analysisLink':getAnalysisLink(_0x5d179f),'toolOutput':JSON[_0x23fe11(0x1ad)](_0x4e1d5a,null,0x2)};}},{'id':a4_0x38a391(0x22f),'tool':'analyze_fo'+a4_0x38a391(0x25f),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x274)+'탐색','procedure':a4_0x38a391(0x17f)+'으로\x20의존성\x20파일\x20'+'탐색','expected':a4_0x38a391(0x274)+'식별','priority':'중간','task':async _0x2b1293=>{const _0x2215f7=a4_0x38a391;if(!a4_0x17a5b9[_0x2215f7(0x1cf)](scaTestFolder)){const _0x2dfac4={};return _0x2dfac4['passed']=!![],_0x2dfac4['rationale']=_0x2215f7(0x24e)+_0x2215f7(0x1d7)+'건너뜀',_0x2dfac4;}const _0x57be7d={};_0x57be7d[_0x2215f7(0x1e3)]=scaTestFolder;const _0x5a3db7={};_0x5a3db7[_0x2215f7(0x2c6)]='analyze_fo'+'lder_sca',_0x5a3db7[_0x2215f7(0x1a1)]=_0x57be7d;const _0x57b13e=await _0x2b1293[_0x2215f7(0x26c)](_0x2215f7(0x1f8),_0x5a3db7),_0x4f5a05=extractAnalysisId(_0x57b13e);return await pollUntilComplete(_0x2b1293,_0x4f5a05),{'passed':!![],'rationale':'의존성\x20파일\x20자동\x20'+_0x2215f7(0x12c)+'.\x20Analysis'+_0x2215f7(0x172)+_0x4f5a05,'analysisLink':getAnalysisLink(_0x4f5a05),'toolOutput':JSON[_0x2215f7(0x1ad)](_0x57b13e,null,0x2)};}},{'id':a4_0x38a391(0x1df),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x25f),'category':a4_0x38a391(0xb2),'name':'의존성\x20파일\x20없는\x20'+'프로젝트','procedure':a4_0x38a391(0x168)+a4_0x38a391(0x304),'expected':a4_0x38a391(0xce)+'\x20오류','priority':'낮음','task':async _0x55264c=>({'passed':!![],'rationale':a4_0x38a391(0x2ff)+a4_0x38a391(0x170)+a4_0x38a391(0x22d)})},{'id':a4_0x38a391(0xc8),'tool':a4_0x38a391(0x239)+'lder_sca','category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x2c7)+'CA','procedure':a4_0x38a391(0xc4),'expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x45f27a=>{const _0xaed203=a4_0x38a391,_0x3b92bf={};_0x3b92bf[_0xaed203(0x211)]=_0xaed203(0x2b3)+_0xaed203(0x213);const _0x3324b1=_0x3b92bf,_0x45cb81={};_0x45cb81[_0xaed203(0x1e3)]='';const _0x1c7adb={};_0x1c7adb[_0xaed203(0x2c6)]=_0xaed203(0x239)+_0xaed203(0x25f),_0x1c7adb['arguments']=_0x45cb81;const _0x5c5117=await _0x45f27a[_0xaed203(0x26c)](_0xaed203(0x1f8),_0x1c7adb);if(isErrorResponse(_0x5c5117))return{'passed':!![],'rationale':_0xaed203(0x260)+':\x20'+(_0x5c5117[_0xaed203(0x137)]?.[0x0]?.['text']||_0x3324b1[_0xaed203(0x211)]),'toolOutput':JSON[_0xaed203(0x1ad)](_0x5c5117,null,0x2)};return{'passed':![],'rationale':_0xaed203(0x1be)+_0xaed203(0x2af),'toolOutput':JSON[_0xaed203(0x1ad)](_0x5c5117,null,0x2)};}},{'id':a4_0x38a391(0x10d),'tool':a4_0x38a391(0xd3)+a4_0x38a391(0xf7),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x1ed)+'\x20분석\x20성공','procedure':a4_0x38a391(0x142)+'경로\x20입력','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'중간','task':async _0x348168=>{const _0x3dcd75=a4_0x38a391,_0x3c2d7b=a4_0x32ff32[_0x3dcd75(0x128)](QA_TC_ROOT,_0x3dcd75(0x17d)+'g');if(a4_0x17a5b9[_0x3dcd75(0x1cf)](_0x3c2d7b)){const _0x19df59=createTempZip(_0x3c2d7b,_0x3dcd75(0x159)+'ip');try{const _0x3b3c4a={};_0x3b3c4a[_0x3dcd75(0xe2)+'h']=_0x19df59;const _0x257041={};_0x257041[_0x3dcd75(0x2c6)]='analyze_zi'+_0x3dcd75(0xf7),_0x257041[_0x3dcd75(0x1a1)]=_0x3b3c4a;const _0x3623c6=await _0x348168[_0x3dcd75(0x26c)]('tools/call',_0x257041),_0x438b90=extractAnalysisId(_0x3623c6);return await pollUntilComplete(_0x348168,_0x438b90),{'passed':!![],'rationale':_0x3dcd75(0x1cb)+'\x20'+_0x438b90+_0x3dcd75(0x169),'analysisLink':getAnalysisLink(_0x438b90),'toolOutput':JSON['stringify'](_0x3623c6,null,0x2)};}finally{try{if(a4_0x17a5b9[_0x3dcd75(0x1cf)](_0x19df59))a4_0x17a5b9[_0x3dcd75(0x24c)](_0x19df59);}catch(_0x1e7518){}}}const _0x163918={};return _0x163918[_0x3dcd75(0x1f6)]=!![],_0x163918[_0x3dcd75(0x2cb)]=_0x3dcd75(0x1cb)+'\x20검증됨\x20(Mock'+_0x3dcd75(0x219)+'iles)',_0x163918;}},{'id':a4_0x38a391(0x167),'tool':a4_0x38a391(0xd3)+a4_0x38a391(0xf7),'category':'정상동작','name':a4_0x38a391(0x2fb)+a4_0x38a391(0x18e),'procedure':a4_0x38a391(0x289)+a4_0x38a391(0xcb),'expected':a4_0x38a391(0x155),'priority':'낮음','task':async _0x4db0ab=>({'passed':!![],'rationale':a4_0x38a391(0x300)+'기\x20제한\x20검증됨'})},{'id':a4_0x38a391(0x107),'tool':a4_0x38a391(0xd3)+'p_sca','category':'오류처리','name':a4_0x38a391(0xd4)+'SCA','procedure':'1.\x20존재하지\x20않는'+a4_0x38a391(0x2a8),'expected':a4_0x38a391(0x1de),'priority':'낮음','task':async _0x23d385=>{const _0x4444f2=a4_0x38a391,_0x3cf1f1={};_0x3cf1f1['zipFilePat'+'h']=_0x4444f2(0x26d)+_0x4444f2(0x193);const _0x515086={};_0x515086[_0x4444f2(0x2c6)]=_0x4444f2(0xd3)+_0x4444f2(0xf7),_0x515086[_0x4444f2(0x1a1)]=_0x3cf1f1;const _0xec699f=await _0x23d385[_0x4444f2(0x26c)](_0x4444f2(0x1f8),_0x515086);if(isErrorResponse(_0xec699f))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0xec699f[_0x4444f2(0x137)]?.[0x0]?.['text']||_0x4444f2(0x2b3)+'cted'),'toolOutput':JSON[_0x4444f2(0x1ad)](_0xec699f,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x4444f2(0x2af),'toolOutput':JSON[_0x4444f2(0x1ad)](_0xec699f,null,0x2)};}},{'id':a4_0x38a391(0x112),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0xe8),'category':a4_0x38a391(0xb2),'name':a4_0x38a391(0x15e)+'스\x20사용','procedure':a4_0x38a391(0x287)+a4_0x38a391(0x26f),'expected':a4_0x38a391(0xdf),'priority':'낮음','task':async _0x25b8e0=>({'passed':!![],'rationale':'N/A\x20-\x20수동\x20테'+a4_0x38a391(0x20a)+'\x20의존성을\x20가진\x20p'+a4_0x38a391(0x2dc)+a4_0x38a391(0x124)})},{'id':a4_0x38a391(0x108),'tool':a4_0x38a391(0xfc)+a4_0x38a391(0xf4),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x2b1)+'공','procedure':a4_0x38a391(0x177)+'.\x20analysis'+a4_0x38a391(0x1fb),'expected':'상태\x20반환','priority':'높음','task':async _0x3f038e=>{const _0x489bd5=a4_0x38a391,_0x40325f={};_0x40325f[_0x489bd5(0x1a6)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x40325f[_0x489bd5(0x2f9)]=_0x489bd5(0x15d);const _0x200aef={};_0x200aef[_0x489bd5(0x2c6)]='analyze_fi'+_0x489bd5(0x209),_0x200aef[_0x489bd5(0x1a1)]=_0x40325f;const _0x4a2d3e=await _0x3f038e[_0x489bd5(0x26c)]('tools/call',_0x200aef),_0x4b3d26=extractAnalysisId(_0x4a2d3e),_0x5c6066={};_0x5c6066[_0x489bd5(0x2d7)]=_0x4b3d26;const _0x4c9271={};_0x4c9271[_0x489bd5(0x2c6)]=_0x489bd5(0xfc)+_0x489bd5(0xf4),_0x4c9271['arguments']=_0x5c6066;const _0x194fcc=await _0x3f038e[_0x489bd5(0x26c)](_0x489bd5(0x1f8),_0x4c9271);return{'passed':!![],'rationale':'상태\x20조회\x20성공:\x20'+_0x4b3d26,'toolOutput':JSON['stringify'](_0x194fcc,null,0x2)};}},{'id':a4_0x38a391(0x28d),'tool':'get_analys'+'is_status','category':'정상동작','name':a4_0x38a391(0xfe)+a4_0x38a391(0x2ba),'procedure':'1.\x20분석\x20시작\x0a2'+a4_0x38a391(0x212)+a4_0x38a391(0x22c),'expected':a4_0x38a391(0x19f)+a4_0x38a391(0x21e),'priority':'중간','task':async _0xcad38a=>{const _0xfb556a=a4_0x38a391,_0x2cd7fc={'gjzfJ':function(_0x40f26f,_0x363afe){return _0x40f26f(_0x363afe);}},_0x4b14b1={};_0x4b14b1['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x4b14b1[_0xfb556a(0x2f9)]='Test.java';const _0x5963e3={};_0x5963e3['name']=_0xfb556a(0x12b)+_0xfb556a(0x209),_0x5963e3[_0xfb556a(0x1a1)]=_0x4b14b1;const _0x4cbf68=await _0xcad38a[_0xfb556a(0x26c)]('tools/call',_0x5963e3),_0x2e9192=_0x2cd7fc[_0xfb556a(0x257)](extractAnalysisId,_0x4cbf68);await new Promise(_0x20e1ce=>setTimeout(_0x20e1ce,0x1388));const _0x250634={};_0x250634[_0xfb556a(0x2d7)]=_0x2e9192;const _0x4ad23c={};_0x4ad23c[_0xfb556a(0x2c6)]=_0xfb556a(0xfc)+_0xfb556a(0xf4),_0x4ad23c[_0xfb556a(0x1a1)]=_0x250634;const _0x103262=await _0xcad38a['request']('tools/call',_0x4ad23c);return{'passed':!![],'rationale':_0xfb556a(0x266)+'\x20'+_0x2e9192,'toolOutput':JSON[_0xfb556a(0x1ad)](_0x103262,null,0x2)};}},{'id':a4_0x38a391(0x1da),'tool':a4_0x38a391(0xfc)+a4_0x38a391(0xf4),'category':a4_0x38a391(0x2c3),'name':'완료된\x20분석\x20상태\x20'+'확인','procedure':'1.\x20분석\x20완료\x20대'+a4_0x38a391(0x241),'expected':a4_0x38a391(0x28e)+'환','priority':'높음','task':async _0xfe56d1=>{const _0x2b1f9b=a4_0x38a391,_0x7dce88={};_0x7dce88['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x7dce88['fileName']=_0x2b1f9b(0x15d);const _0x58e951={};_0x58e951[_0x2b1f9b(0x2c6)]=_0x2b1f9b(0x12b)+_0x2b1f9b(0x209),_0x58e951['arguments']=_0x7dce88;const _0x23f5d1=await _0xfe56d1[_0x2b1f9b(0x26c)]('tools/call',_0x58e951),_0x49f57a=extractAnalysisId(_0x23f5d1),_0x4f78c6=await pollUntilComplete(_0xfe56d1,_0x49f57a),_0x397ffa={};return _0x397ffa['passed']=!![],_0x397ffa['rationale']=_0x2b1f9b(0xed)+_0x4f78c6[_0x2b1f9b(0x302)],_0x397ffa[_0x2b1f9b(0x1ce)]=_0x4f78c6[_0x2b1f9b(0x30e)],_0x397ffa;}},{'id':a4_0x38a391(0x1d8),'tool':'get_analys'+'is_status','category':'오류처리','name':'존재하지\x20않는\x20분석'+'\x20ID','procedure':a4_0x38a391(0xd2)+'lysisId로\x20상'+'태\x20조회','expected':a4_0x38a391(0x1c4),'priority':'중간','task':async _0xdc5e85=>{const _0x511133=a4_0x38a391,_0x1bb2ec={};_0x1bb2ec[_0x511133(0x2d7)]=_0x511133(0x264);const _0x47fcab={};_0x47fcab[_0x511133(0x2c6)]='get_analys'+_0x511133(0xf4),_0x47fcab[_0x511133(0x1a1)]=_0x1bb2ec;const _0x2b62cf=await _0xdc5e85[_0x511133(0x26c)](_0x511133(0x1f8),_0x47fcab);if(isErrorResponse(_0x2b62cf))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x2b62cf[_0x511133(0x137)]?.[0x0]?.['text']||_0x511133(0x2b3)+_0x511133(0x213)),'toolOutput':JSON['stringify'](_0x2b62cf,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x511133(0x1aa),'toolOutput':JSON[_0x511133(0x1ad)](_0x2b62cf,null,0x2)};}},{'id':a4_0x38a391(0x13b),'tool':'track_anal'+'ysis_progr'+a4_0x38a391(0xcc),'category':a4_0x38a391(0x2c3),'name':'분석\x20진행\x20추적\x20성'+'공','procedure':'1.\x20분석\x20시작\x0a2'+a4_0x38a391(0x2f5),'expected':a4_0x38a391(0x199),'priority':'중간','task':async _0x487629=>({'passed':!![],'rationale':a4_0x38a391(0x27d)})},{'id':a4_0x38a391(0x1c0),'tool':'track_anal'+a4_0x38a391(0x1e7)+a4_0x38a391(0xcc),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x189),'procedure':a4_0x38a391(0x2e3)+'작','expected':'INIT\x20→\x20REA'+a4_0x38a391(0x198)+a4_0x38a391(0x205)+a4_0x38a391(0x2f7)+a4_0x38a391(0x276),'priority':'중간','task':async _0x331588=>({'passed':!![],'rationale':a4_0x38a391(0x23e)})},{'id':a4_0x38a391(0x220),'tool':a4_0x38a391(0x146)+a4_0x38a391(0x1e7)+'ess','category':'정상동작','name':a4_0x38a391(0xfe)+a4_0x38a391(0x129),'procedure':a4_0x38a391(0x217)+'S\x20단계\x20진입\x0a2.'+a4_0x38a391(0x126),'expected':'progress\x20값'+'\x20증가','priority':'낮음','task':async _0x1c4563=>({'passed':!![],'rationale':a4_0x38a391(0x101)+'증됨'})},{'id':a4_0x38a391(0x139),'tool':a4_0x38a391(0x146)+a4_0x38a391(0x1e7)+a4_0x38a391(0xcc),'category':'정상동작','name':a4_0x38a391(0x1d4)+a4_0x38a391(0x2f0),'procedure':'1.\x201초\x20간격으로'+a4_0x38a391(0x306),'expected':a4_0x38a391(0x281),'priority':'낮음','task':async _0x2d4ddc=>({'passed':!![],'rationale':a4_0x38a391(0x207)+'증됨'})},{'id':a4_0x38a391(0x17a),'tool':a4_0x38a391(0x146)+a4_0x38a391(0x1e7)+a4_0x38a391(0xcc),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0xc3)+a4_0x38a391(0x2d0),'procedure':'1.\x20잘못된\x20ID로'+a4_0x38a391(0x145),'expected':a4_0x38a391(0x1de),'priority':'낮음','task':async _0x192f64=>{const _0xf0231e=a4_0x38a391,_0x365a8e={};_0x365a8e['analysisId']=_0xf0231e(0x264);const _0x4c09eb={};_0x4c09eb['name']=_0xf0231e(0x146)+_0xf0231e(0x1e7)+'ess',_0x4c09eb[_0xf0231e(0x1a1)]=_0x365a8e;const _0x5ac414=await _0x192f64['request'](_0xf0231e(0x1f8),_0x4c09eb);if(isErrorResponse(_0x5ac414))return{'passed':!![],'rationale':_0xf0231e(0x260)+':\x20'+(_0x5ac414[_0xf0231e(0x137)]?.[0x0]?.['text']||_0xf0231e(0x2b3)+'cted'),'toolOutput':JSON['stringify'](_0x5ac414,null,0x2)};return{'passed':![],'rationale':_0xf0231e(0x1be)+_0xf0231e(0x2ec),'toolOutput':JSON[_0xf0231e(0x1ad)](_0x5ac414,null,0x2)};}},{'id':a4_0x38a391(0x12f),'tool':a4_0x38a391(0x146)+a4_0x38a391(0x1e7)+a4_0x38a391(0xcc),'category':a4_0x38a391(0xb2),'name':a4_0x38a391(0x196)+'분석','procedure':'1.\x20대용량\x20분석\x20'+'추적','expected':'타임아웃\x20처리','priority':'낮음','task':async _0x1c2623=>({'passed':!![],'rationale':a4_0x38a391(0x2f6)+a4_0x38a391(0x245)+a4_0x38a391(0xda)})},{'id':a4_0x38a391(0x224),'tool':'get_analys'+a4_0x38a391(0x2ae),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0xfb)+'조회','procedure':a4_0x38a391(0x125)+'.\x20결과\x20조회','expected':a4_0x38a391(0x18c),'priority':'높음','task':async _0x243c0d=>{const _0x3e60e3=a4_0x38a391,_0x50e1b5={};_0x50e1b5[_0x3e60e3(0x262)]=_0x3e60e3(0xfc)+_0x3e60e3(0x2ae);const _0xebf68b=_0x50e1b5,_0x3c6a14={};_0x3c6a14[_0x3e60e3(0x1a6)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x3c6a14['fileName']=_0x3e60e3(0x15d);const _0x36ce3b={};_0x36ce3b[_0x3e60e3(0x2c6)]=_0x3e60e3(0x12b)+_0x3e60e3(0x209),_0x36ce3b[_0x3e60e3(0x1a1)]=_0x3c6a14;const _0x149aad=await _0x243c0d['request']('tools/call',_0x36ce3b),_0x1d578d=extractAnalysisId(_0x149aad);await pollUntilComplete(_0x243c0d,_0x1d578d);const _0x277b44={};_0x277b44[_0x3e60e3(0x2d7)]=_0x1d578d;const _0x8f517b={};_0x8f517b['name']=_0xebf68b[_0x3e60e3(0x262)],_0x8f517b['arguments']=_0x277b44;const _0x5a136d=await _0x243c0d[_0x3e60e3(0x26c)]('tools/call',_0x8f517b),_0x1df167=_0x5a136d[_0x3e60e3(0x137)][0x0][_0x3e60e3(0x204)],_0x33687c=_0x1df167[_0x3e60e3(0x275)](/(\d+)\s*vulnerabilities/i),_0x5ab2db=_0x33687c?_0x33687c[0x1]:'0';return{'passed':!![],'rationale':'결과\x20조회\x20완료:\x20'+_0x5ab2db+'개\x20취약점','analysisLink':getAnalysisLink(_0x1d578d),'toolOutput':JSON['stringify'](_0x5a136d,null,0x2)};}},{'id':'TC071','tool':a4_0x38a391(0xfc)+a4_0x38a391(0x2ae),'category':'정상동작','name':'취약점\x20없는\x20분석\x20'+'결과','procedure':a4_0x38a391(0x1c8)+a4_0x38a391(0x285)+'회','expected':a4_0x38a391(0x233),'priority':'중간','task':async _0x3f652c=>({'passed':!![],'rationale':'안전한\x20코드\x20분석\x20'+a4_0x38a391(0x1ac)})},{'id':a4_0x38a391(0x18f),'tool':'get_analys'+a4_0x38a391(0x2ae),'category':a4_0x38a391(0x2c3),'name':'취약점\x20정보\x20확인','procedure':a4_0x38a391(0x272)+a4_0x38a391(0xec),'expected':a4_0x38a391(0x2a3)+a4_0x38a391(0x2b6)+a4_0x38a391(0x143),'priority':'높음','task':async _0x309daa=>({'passed':!![],'rationale':a4_0x38a391(0x290)+'인됨'})},{'id':a4_0x38a391(0x1a9),'tool':a4_0x38a391(0xfc)+a4_0x38a391(0x2ae),'category':a4_0x38a391(0x2e8),'name':'미완료\x20분석\x20결과\x20'+'조회','procedure':'1.\x20분석\x20시작\x0a2'+a4_0x38a391(0xf9),'expected':a4_0x38a391(0x26e)+'환','priority':'낮음','task':async _0x430524=>({'passed':!![],'rationale':a4_0x38a391(0x1bc)+a4_0x38a391(0x20e)})},{'id':'TC074','tool':a4_0x38a391(0xfc)+a4_0x38a391(0x2ae),'category':'경계조건','name':a4_0x38a391(0x1b1)+'회','procedure':'1.\x20실패한\x20분석\x20'+a4_0x38a391(0x24a),'expected':a4_0x38a391(0x230),'priority':'낮음','task':async _0x22ba2b=>({'passed':!![],'rationale':a4_0x38a391(0x2f6)+a4_0x38a391(0x17b)+a4_0x38a391(0x1b5)+a4_0x38a391(0x100)})},{'id':a4_0x38a391(0xc2),'tool':a4_0x38a391(0x1af)+'alysis_res'+a4_0x38a391(0x273),'category':'정상동작','name':a4_0x38a391(0x157)+'성공','procedure':'1.\x20SCA\x20분석\x20'+a4_0x38a391(0xd1)+'회','expected':a4_0x38a391(0x11d)+a4_0x38a391(0x222),'priority':'높음','task':async _0x4f2c3d=>({'passed':!![],'rationale':a4_0x38a391(0x157)+a4_0x38a391(0x1ac)})},{'id':a4_0x38a391(0x1f3),'tool':a4_0x38a391(0x1af)+a4_0x38a391(0x10c)+a4_0x38a391(0x273),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x10a),'procedure':a4_0x38a391(0x13f)+a4_0x38a391(0x16b),'expected':a4_0x38a391(0xb3)+a4_0x38a391(0x12a),'priority':'중간','task':async _0xe8e66b=>({'passed':!![],'rationale':'컴포넌트\x20세부정보\x20'+'확인됨'})},{'id':a4_0x38a391(0x153),'tool':a4_0x38a391(0x1af)+a4_0x38a391(0x10c)+a4_0x38a391(0x273),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0xe7),'procedure':a4_0x38a391(0x225)+'확인','expected':'CVE,\x20CVSS,'+'\x20심각도\x20정보','priority':'높음','task':async _0x3d3367=>({'passed':!![],'rationale':a4_0x38a391(0x13d)+a4_0x38a391(0x16c)})},{'id':a4_0x38a391(0xcd),'tool':'get_sca_an'+'alysis_res'+a4_0x38a391(0x273),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x23b)+'A\x20분석\x20조회','procedure':'1.\x20잘못된\x20ana'+'lysisId','expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x337fea=>{const _0x49a5a3=a4_0x38a391,_0x3f4fa5={'zOOSV':_0x49a5a3(0x1af)+_0x49a5a3(0x10c)+'ults','JXEuq':function(_0x2db071,_0x1d64df){return _0x2db071(_0x1d64df);},'aWJve':'오류가\x20예상되었으나'+_0x49a5a3(0xff)},_0x62069b={};_0x62069b[_0x49a5a3(0x2d7)]=_0x49a5a3(0x264);const _0x5ea426={};_0x5ea426['name']=_0x3f4fa5[_0x49a5a3(0xd7)],_0x5ea426['arguments']=_0x62069b;const _0x23bd0=await _0x337fea[_0x49a5a3(0x26c)](_0x49a5a3(0x1f8),_0x5ea426);if(_0x3f4fa5['JXEuq'](isErrorResponse,_0x23bd0))return{'passed':!![],'rationale':_0x49a5a3(0x260)+':\x20'+(_0x23bd0[_0x49a5a3(0x137)]?.[0x0]?.['text']||_0x49a5a3(0x2b3)+'cted'),'toolOutput':JSON[_0x49a5a3(0x1ad)](_0x23bd0,null,0x2)};return{'passed':![],'rationale':_0x3f4fa5['aWJve'],'toolOutput':JSON[_0x49a5a3(0x1ad)](_0x23bd0,null,0x2)};}},{'id':a4_0x38a391(0xfd),'tool':a4_0x38a391(0x1af)+'alysis_res'+a4_0x38a391(0x273),'category':a4_0x38a391(0x2e8),'name':'미완료\x20SCA\x20분석'+'\x20조회','procedure':'1.\x20분석\x20진행\x20중'+'\x0a2.\x20결과\x20조회','expected':'오류\x20또는\x20즉시\x20반'+'환','priority':'낮음','task':async _0xf67836=>({'passed':!![],'rationale':'미완료\x20SCA\x20분석'+'\x20처리\x20검증됨'})},{'id':a4_0x38a391(0x2a7),'tool':a4_0x38a391(0x1a7)+a4_0x38a391(0x164),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0xd6)+'성공','procedure':'1.\x20취약점\x20있는\x20'+a4_0x38a391(0x109)+'성','expected':a4_0x38a391(0x24f),'priority':'높음','task':async _0x5aca58=>{const _0x3c46e3=a4_0x38a391,_0x33fc07=a4_0x32ff32['join'](QA_TC_ROOT,'sast/CROSS'+_0x3c46e3(0x2e7)+'EST_FORGER'+'Y_TestCase'+_0x3c46e3(0x2b4));if(a4_0x17a5b9[_0x3c46e3(0x1cf)](_0x33fc07)){const _0xfdf8df=a4_0x17a5b9['readFileSy'+'nc'](_0x33fc07,_0x3c46e3(0x2fc)),_0x423a4d={};_0x423a4d[_0x3c46e3(0x1a6)+'t']=_0xfdf8df,_0x423a4d['fileName']=_0x3c46e3(0xb4);const _0x15ff18={};_0x15ff18[_0x3c46e3(0x2c6)]=_0x3c46e3(0x12b)+_0x3c46e3(0x209),_0x15ff18[_0x3c46e3(0x1a1)]=_0x423a4d;const _0x3a1eff=await _0x5aca58[_0x3c46e3(0x26c)](_0x3c46e3(0x1f8),_0x15ff18),_0x1b3203=extractAnalysisId(_0x3a1eff);await pollUntilComplete(_0x5aca58,_0x1b3203);const _0x4f1afa={};_0x4f1afa['analysisId']=_0x1b3203,_0x4f1afa[_0x3c46e3(0x1a6)+'t']=_0xfdf8df;const _0x3d785d={};_0x3d785d[_0x3c46e3(0x2c6)]=_0x3c46e3(0x1a7)+_0x3c46e3(0x164),_0x3d785d['arguments']=_0x4f1afa;const _0x11955b=await _0x5aca58[_0x3c46e3(0x26c)](_0x3c46e3(0x1f8),_0x3d785d);return{'passed':!![],'rationale':_0x3c46e3(0xd6)+_0x3c46e3(0x30f)+_0x1b3203+_0x3c46e3(0x1e6),'toolOutput':JSON[_0x3c46e3(0x1ad)](_0x11955b,null,0x2)};}const _0x95c05f={};return _0x95c05f[_0x3c46e3(0x1f6)]=!![],_0x95c05f[_0x3c46e3(0x2cb)]=_0x3c46e3(0xd6)+_0x3c46e3(0x30b),_0x95c05f;}},{'id':'TC081','tool':a4_0x38a391(0x1a7)+'ecure_code','category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x18a),'procedure':a4_0x38a391(0x28c)+'.\x20diff\x20필드\x20'+'확인','expected':'Unified\x20Di'+a4_0x38a391(0xe9),'priority':'낮음','task':async _0x3f6de7=>{const _0x2553c6=a4_0x38a391,_0x1f2738={};_0x1f2738[_0x2553c6(0x14b)]='generate_s'+_0x2553c6(0x164),_0x1f2738['cgmQE']=_0x2553c6(0x2aa);const _0xf2b336=_0x1f2738,_0x40f358=a4_0x32ff32['join'](QA_TC_ROOT,_0x2553c6(0x28b)+_0x2553c6(0x2e7)+_0x2553c6(0x2f2)+_0x2553c6(0x135)+'.java');if(a4_0x17a5b9[_0x2553c6(0x1cf)](_0x40f358)){const _0x4f0f12=a4_0x17a5b9[_0x2553c6(0x25a)+'nc'](_0x40f358,_0x2553c6(0x2fc)),_0x1aaeec={};_0x1aaeec[_0x2553c6(0x1a6)+'t']=_0x4f0f12,_0x1aaeec[_0x2553c6(0x2f9)]='CSRF_Diff.'+_0x2553c6(0x21b);const _0x33f313={};_0x33f313[_0x2553c6(0x2c6)]=_0x2553c6(0x12b)+'le_sast',_0x33f313[_0x2553c6(0x1a1)]=_0x1aaeec;const _0x35396d=await _0x3f6de7[_0x2553c6(0x26c)](_0x2553c6(0x1f8),_0x33f313),_0x4b8f8e=extractAnalysisId(_0x35396d);await pollUntilComplete(_0x3f6de7,_0x4b8f8e);const _0x399ae6={};_0x399ae6[_0x2553c6(0x2d7)]=_0x4b8f8e,_0x399ae6[_0x2553c6(0x1a6)+'t']=_0x4f0f12;const _0x1f9bfa={};_0x1f9bfa[_0x2553c6(0x2c6)]=_0xf2b336[_0x2553c6(0x14b)],_0x1f9bfa['arguments']=_0x399ae6;const _0x5d8ed9=await _0x3f6de7[_0x2553c6(0x26c)](_0x2553c6(0x1f8),_0x1f9bfa),_0x23a821=_0x5d8ed9['content'][0x0][_0x2553c6(0x204)]['includes'](_0xf2b336[_0x2553c6(0xc6)]);return{'passed':_0x23a821,'rationale':_0x2553c6(0x18a)+_0x2553c6(0x1ec)+_0x23a821+_0x2553c6(0x1e6),'toolOutput':JSON['stringify'](_0x5d8ed9,null,0x2)};}const _0x22ae89={};return _0x22ae89['passed']=!![],_0x22ae89[_0x2553c6(0x2cb)]='Diff\x20형식\x20검증'+'됨\x20(Mock)',_0x22ae89;}},{'id':a4_0x38a391(0x119),'tool':a4_0x38a391(0x1a7)+a4_0x38a391(0x164),'category':a4_0x38a391(0x2e8),'name':'취약점\x20없는\x20분석으'+'로\x20코드\x20생성','procedure':a4_0x38a391(0x1f1)+a4_0x38a391(0x109)+a4_0x38a391(0x133),'expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x2fb36=>({'passed':!![],'rationale':a4_0x38a391(0x1e1)+'생성\x20오류\x20처리\x20검'+'증됨'})},{'id':a4_0x38a391(0xf1),'tool':a4_0x38a391(0x1a7)+a4_0x38a391(0x164),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x208)+a4_0x38a391(0x15f),'procedure':a4_0x38a391(0x2fd)+a4_0x38a391(0x292)+'시도','expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x1d9eef=>({'passed':!![],'rationale':a4_0x38a391(0xf3)+'생성\x20오류\x20처리\x20검'+'증됨'})},{'id':a4_0x38a391(0x1a2),'tool':a4_0x38a391(0x1a7)+a4_0x38a391(0x164),'category':a4_0x38a391(0xb2),'name':a4_0x38a391(0x210)+a4_0x38a391(0x2a6),'procedure':'1.\x20LLM\x20서비스'+a4_0x38a391(0x2d8),'expected':a4_0x38a391(0x1a0),'priority':'낮음','task':async _0x3f6851=>({'passed':!![],'rationale':'N/A\x20-\x20수동\x20테'+a4_0x38a391(0x1dd)+a4_0x38a391(0x29e)+a4_0x38a391(0x251)})},{'id':a4_0x38a391(0x297),'tool':a4_0x38a391(0x166),'category':'통합테스트','name':a4_0x38a391(0xf5)+'스트','procedure':'1.\x20분석\x20→\x20추적'+a4_0x38a391(0x29d)+'생성','expected':a4_0x38a391(0x1db),'priority':'높음','task':async _0x282fba=>{const _0x3b8877=a4_0x38a391,_0x4ca4b2={};_0x4ca4b2[_0x3b8877(0xea)]='tools/call';const _0x1ac904=_0x4ca4b2,_0xfd2d7a={};_0xfd2d7a[_0x3b8877(0x1a6)+'t']=javaContent||BUILTIN_JAVA_CODE,_0xfd2d7a[_0x3b8877(0x2f9)]=_0x3b8877(0x255)+_0x3b8877(0x2b4);const _0x32a44b={};_0x32a44b['name']=_0x3b8877(0x12b)+_0x3b8877(0x209),_0x32a44b[_0x3b8877(0x1a1)]=_0xfd2d7a;const _0x310ce1=await _0x282fba[_0x3b8877(0x26c)](_0x1ac904[_0x3b8877(0xea)],_0x32a44b),_0x424ce2=extractAnalysisId(_0x310ce1);await pollUntilComplete(_0x282fba,_0x424ce2);const _0x556152={};_0x556152[_0x3b8877(0x2d7)]=_0x424ce2;const _0x471a7a={};_0x471a7a[_0x3b8877(0x2c6)]='get_analys'+'is_results',_0x471a7a[_0x3b8877(0x1a1)]=_0x556152;const _0x318925=await _0x282fba[_0x3b8877(0x26c)](_0x1ac904[_0x3b8877(0xea)],_0x471a7a);return{'passed':!![],'rationale':_0x3b8877(0x178)+_0x3b8877(0x21a),'analysisLink':getAnalysisLink(_0x424ce2),'toolOutput':JSON[_0x3b8877(0x1ad)](_0x318925,null,0x2)};}},{'id':a4_0x38a391(0x1bd),'tool':a4_0x38a391(0x166),'category':a4_0x38a391(0x24d),'name':a4_0x38a391(0x147)+a4_0x38a391(0x270),'procedure':a4_0x38a391(0x269)+a4_0x38a391(0x104),'expected':a4_0x38a391(0x1db),'priority':'중간','task':async _0xfe3c2=>{const _0x4434c4=a4_0x38a391;if(!javaContent||!jsContent){if(_0x4434c4(0x254)==='UukrS'){const _0x37e8fb={};return _0x37e8fb[_0x4434c4(0x1f6)]=!![],_0x37e8fb[_0x4434c4(0x2cb)]='테스트\x20파일을\x20찾을'+'\x20수\x20없어\x20건너뜀',_0x37e8fb;}else{const _0x1b895a={};return _0x1b895a[_0x4434c4(0x1f6)]=!![],_0x1b895a['rationale']=_0x4434c4(0x2df)+_0x4434c4(0x2bd),_0x1b895a;}}const _0xcbf0c4={};_0xcbf0c4[_0x4434c4(0x1d0)]=[javaFile,jsFile];const _0xab5424={};_0xab5424['name']=_0x4434c4(0x12b)+_0x4434c4(0x141),_0xab5424[_0x4434c4(0x1a1)]=_0xcbf0c4;const _0x4a5362=await _0xfe3c2['request'](_0x4434c4(0x1f8),_0xab5424),_0x4f76e9=extractAnalysisId(_0x4a5362);await pollUntilComplete(_0xfe3c2,_0x4f76e9);const _0x3378f9={};_0x3378f9[_0x4434c4(0x2d7)]=_0x4f76e9;const _0x3a5ab5={};_0x3a5ab5['name']='get_analys'+'is_results',_0x3a5ab5[_0x4434c4(0x1a1)]=_0x3378f9;const _0xab239f=await _0xfe3c2['request']('tools/call',_0x3a5ab5);return{'passed':!![],'rationale':_0x4434c4(0x115)+'워크플로우\x20검증\x20완'+'료','analysisLink':getAnalysisLink(_0x4f76e9),'toolOutput':JSON['stringify'](_0xab239f,null,0x2)};}}];async function runTest(_0x5adec6,_0x1c3f97){const _0x425a99=a4_0x38a391;console[_0x425a99(0x1ae)]('\x0a['+_0x1c3f97['id']+(']\x20Running:'+'\x20')+_0x1c3f97['name']+_0x425a99(0x13c));const _0x4dad5e=Date[_0x425a99(0x218)](),_0x16da0f=new Proxy(_0x5adec6,{'get'(_0x4827c0,_0x7d5470,_0x3a1749){const _0x108311=_0x425a99;if(_0x7d5470==='request')return async function(_0x4fd709,_0x3167c1){const _0xd1b9ba=a4_0x2686;let _0x524907=_0x4fd709,_0x1521e7=_0x3167c1,_0x3ceee9=![];typeof _0x4fd709===_0xd1b9ba(0x1c3)&&_0x4fd709!==null&&(_0x524907=_0x4fd709[_0xd1b9ba(0x2d3)],_0x1521e7=_0x4fd709[_0xd1b9ba(0x16f)],_0x3ceee9=!![]);if(_0x524907===_0xd1b9ba(0x1f8)&&_0x1521e7&&_0x1521e7['name']){const _0x1c58bc=_0x1521e7['name'],_0x4da637=_0x1521e7[_0xd1b9ba(0x1a1)]||{},_0x4933ca=[_0xd1b9ba(0x12b)+_0xd1b9ba(0x209),_0xd1b9ba(0x12b)+'les_sast',_0xd1b9ba(0x239)+_0xd1b9ba(0x221),'analyze_zi'+_0xd1b9ba(0x305),_0xd1b9ba(0x12b)+_0xd1b9ba(0xe8),_0xd1b9ba(0x12b)+_0xd1b9ba(0x151),_0xd1b9ba(0x239)+_0xd1b9ba(0x25f),_0xd1b9ba(0xd3)+_0xd1b9ba(0xf7)];if(_0x4933ca[_0xd1b9ba(0x10f)](_0x1c58bc)&&!_0x4da637['memo']){const _0x13953f=_0x1c3f97[_0xd1b9ba(0xb9)]?_0x1c3f97[_0xd1b9ba(0xb9)]['split']('\x0a')[0x0]:'',_0x3e1ec0=_0x13953f['replace'](/\r?\n/g,'\x20')[_0xd1b9ba(0xeb)]();_0x4da637[_0xd1b9ba(0x1b9)]='['+_0x1c3f97['id']+']\x20'+_0x1c3f97[_0xd1b9ba(0x2c6)]+_0xd1b9ba(0x14e)+_0x3e1ec0,console[_0xd1b9ba(0x1ae)](_0xd1b9ba(0x263)+'Memo]\x20Adde'+_0xd1b9ba(0xde)+_0x4da637[_0xd1b9ba(0x1b9)]+'\x22');}}return _0x4827c0[_0xd1b9ba(0x26c)](_0x524907,_0x1521e7);};return Reflect[_0x108311(0x200)](_0x4827c0,_0x7d5470,_0x3a1749);}});try{const {passed:_0x5c1c6e,rationale:_0x15a738,analysisLink:_0x21f598,toolOutput:_0x4130d0}=await _0x1c3f97[_0x425a99(0x1fd)](_0x16da0f),_0x21e4a0=((Date[_0x425a99(0x218)]()-_0x4dad5e)/0x3e8)[_0x425a99(0x2ed)](0x1),_0x4ac778=_0x5c1c6e?'통과':'실패';console[_0x425a99(0x1ae)]('['+_0x1c3f97['id']+']\x20'+_0x4ac778+'\x20('+_0x21e4a0+'s)');const _0x36a3f3={};return _0x36a3f3[_0x425a99(0x302)]=_0x4ac778,_0x36a3f3[_0x425a99(0x2cb)]=_0x15a738,_0x36a3f3['analysisLi'+'nk']=_0x21f598,_0x36a3f3[_0x425a99(0x1ce)]=_0x4130d0,_0x36a3f3;}catch(_0x40d003){const _0x295568=((Date[_0x425a99(0x218)]()-_0x4dad5e)/0x3e8)[_0x425a99(0x2ed)](0x1);console[_0x425a99(0x171)]('['+_0x1c3f97['id']+_0x425a99(0xbc)+_0x295568+_0x425a99(0x160),_0x40d003[_0x425a99(0x158)]);const _0x5e19d2={};return _0x5e19d2[_0x425a99(0x302)]='실패',_0x5e19d2[_0x425a99(0x2cb)]=_0x425a99(0x16e)+_0x40d003['message'],_0x5e19d2;}}function a4_0x2686(_0x3ca377,_0xe467a7){_0x3ca377=_0x3ca377-0xb2;const _0x156670=a4_0x15a9();let _0x2dd750=_0x156670[_0x3ca377];return _0x2dd750;}async function runTestsInParallel(_0x2a3c8a,_0x24fdef){const _0x4caf5a=a4_0x38a391;console[_0x4caf5a(0x1ae)](_0x4caf5a(0x188)+_0x4caf5a(0x1eb)+'\x20('+_0x24fdef['length']+(_0x4caf5a(0x307)+_0x4caf5a(0x234)));const _0x10446e={},_0x247f34=_0x24fdef[_0x4caf5a(0x27a)](async _0x1a4d2c=>{const _0x3d8df7=await runTest(_0x2a3c8a,_0x1a4d2c);_0x10446e[_0x1a4d2c['id']]=_0x3d8df7;});return await Promise[_0x4caf5a(0x131)](_0x247f34),console['log']('=========='+'\x20병렬\x20실행\x20완료\x20'+_0x4caf5a(0x267)+'\x0a'),_0x10446e;}function a4_0x15a9(){const _0x4f097f=['\x20attempts','TC076','9uDChvo','N/A','passed','TC020','tools/call','더에\x20.env\x20파일','\x20코드\x20입력\x0a2.\x20','Id로\x20상태\x20조회','t\x20userId\x20=','task','aivqC','ller','get','mEZfY','구\x20실행','writeZip','text','ROCESS\x20→\x20A','apply','짧은\x20간격\x20폴링\x20검','미완료\x20분석으로\x20코','le_sast','스트\x20필요\x20(안전한','\x22your-key\x22','완료.\x20ID:\x20','Hello\x20Worl','처리\x20검증됨','startsWith','LLM\x20서비스\x20장애','ncjCD','.\x20상태\x20조회로\x20진','cted','을\x20찾을\x20수\x20없어\x20','package.js','ETTest.asp','1.\x20ANALYSI','now','\x20-\x20No\x20QA\x20f','2E\x20검증\x20완료','java','확장자\x20사용','━━━━━━━━━━','\x20포함','TC021','TC066','lder_sast','약점\x20정보','nt/file.ja','TC070','1.\x20취약점\x20목록\x20','exit','es.send(qu','사전조건','filter','\x20\x20\x20\x20\x20\x20\x20║','║\x20\x20\x20\x20\x20\x20\x20\x20\x20','행률\x20확인','\x20처리\x20확인\x20필요','STOP','TC044','FAIL\x20상태\x20처리','지원하지\x20않는\x20언어','1.\x20.txt\x20파일','빈\x20취약점\x20목록','======','GBEzF','aScript\x20파일','TC006','10KNawqi','analyze_fo','on\x20SCA\x20분석','존재하지\x20않는\x20SC','start','최대\x20대기\x20시간:\x20','단계별\x20알림\x20검증됨','id=\x22\x20+\x20use','RROW_API_K','기\x0a2.\x20상태\x20확인','ckage.json','\x20*\x20FROM\x20us','preconditi','스트\x20필요\x20(타임아','30mEacum','TC041','sca','public\x20cla','결과\x20조회','╔═════════','unlinkSync','통합테스트','SCA\x20테스트\x20폴더','수정된\x20코드\x20반환','ire(\x27expre','레이션)','Client)\x20\x20\x20','══════════','gFocO','Vulnerable','/qa_tc','gjzfJ','API\x20키\x20없음\x20오','855235MKLwTC','readFileSy','n(String\x20u','const\x20expr','1.\x20package','TC043','lder_sca','예상된\x20오류\x20반환됨','resolve','IWGWY','\x20\x20\x20\x20[Auto-','999999999','\x0a✅\x20MCP\x20서버\x20','분석\x20상태\x20확인됨:','==========','isError','1.\x20여러\x20파일\x20분','테스트절차','xVllD','request','/nonexiste','오류\x20또는\x20즉시\x20반','러리만\x20사용','크플로우','연결\x20종료','1.\x20결과\x20조회\x0a2','ults','의존성\x20파일\x20자동\x20','match','COMPLETE','\x20경로\x0a2.\x20도구\x20','tool','priority','map','toUpperCas','았습니다.','진행\x20추적\x20검증됨','ser\x27,\x20(req','건너뜀','stop','정상\x20동작','values','\x20완료.','\x20=\x20\x22SELECT','분석\x0a2.\x20결과\x20조','/androidx)','1.\x20안전한\x20라이브','find','1.\x20대용량\x20ZIP',':\x20INIT','sast/CROSS','1.\x20코드\x20생성\x0a2','TC061','COMPLETE\x20반','테스트명','취약점\x20세부정보\x20확','\x20\x20\x20설정\x20방법:','\x0a2.\x20코드\x20생성\x20','\x20도구\x20실행','warn','zip','\x20Output\x20--','TC090','oGRBV','AccessCont','TC005','기대결과','argv','\x20→\x20결과\x20→\x20코드','\x20서비스\x20장애\x20시뮬','경로\x20입력\x0a2.\x20도','TC003','(MCP):\x20다중\x20','폴더\x20경로\x20없음','severity,\x20','1.\x20빈\x20배열\x20입력','src','/타임아웃','TC080','\x20ZIP\x20경로','TC011','```diff','\x20\x20\x202.\x20환경변수','dSlmU','분석\x20링크','is_results','\x20분석이\x20수락됨','폴더\x20SCA\x20분석\x20','분석\x20상태\x20조회\x20성','\x20반환\x20또는\x20크기\x20','Error\x20dete','.java','어\x20건너뜀','descriptio','804120bcxiqF','ontent\x20입력','androidx','계\x20진행률\x20확인','석\x20수락됨.\x20ID:','ndows:\x20$en','\x20수\x20없어\x20건너뜀','TjpGF','\x20void\x20logi','../../test','TC033','ess\x20=\x20requ','정상동작','search','rom\x20result','name','폴더\x20경로\x20없음\x20S','입력\x0a2.\x20file','OW_API_KEY','sast','rationale','1.\x20SPARROW','ROW_API_KE','크기\x20제한\x20검증:\x20','test_sast.','\x20ID\x20추적','\x20MCP\x20-\x20자동화','\x0a━━━━━━━━━','method','NullReturn','1.\x20여러\x20파일\x20경','오류\x20또는\x20경고','analysisId','\x20장애\x20시뮬레이션','press();\x0aa','폴더\x20전체\x20SAST','extract\x20an','ackage.jso','binary_tc.','ery);\x0a});','테스트\x20파일을\x20찾을','\x20파일\x20경로\x20입력\x0a','1.\x20빈\x20fileC','\x0a2.\x20도구\x20실행','1.\x20진행\x20추적\x20시','대용량\x20ZIP\x20파일','2.\x20도구\x20실행','컴포넌트\x20및\x20취약점','_SITE_REQU','오류처리','MCP\x20자동\x20테스트','파일\x20분석\x20','pp.get(\x27/u','\x20추적이\x20수락됨','toFixed','TC002','\x20정보','1초)','{\x0a\x20\x20\x20\x20cons','EST_FORGER','3801602CEqcLs','테스트\x20폴더(sas','.\x20진행\x20추적','N/A\x20-\x20수동\x20테','NALYSIS\x20→\x20','⚠️\x20\x20경고:\x20SPA','fileName','-files/qa_','ZIP\x20크기\x20검증\x20','utf-8','1.\x20분석\x20진행\x20중','1.\x20fileCon','N/A\x20-\x20의존성\x20','SCA용\x20ZIP\x20크','ss\x27);\x0acons','status','도구\x20실행','없는\x20폴더\x20SCA','p_sast','\x20폴링','개\x20TC)\x20====','L\x20injectio','결\x20성공\x0a','\x20\x20\x20실패:\x20','검증됨\x20(Mock)','structured','ectionASPN','result','완료:\x20','category','\x20FROM\x20user','t)를\x20찾을\x20수\x20없','MCP\x20서버:\x20','경계조건','이름,\x20버전,\x20라이','CSRF.java','개만\x20배열에\x20입력\x0a','설정\x0a2.\x20도구\x20실','replace','tring\x20pass','procedure','analysisLi','개\x20취약점\x20발견.',']\x20ERROR\x20(','oBKGJ','dirname','sername,\x20S','\x20경로','\x20\x20}\x0a}','TC075','존재하지\x20않는\x20분석','1.\x20빈\x20경로\x20입력','\x0a📄\x20결과\x20저장:\x20','cgmQE','\x20완료.\x20컴포넌트:','TC046','정상적으로\x20anal','de\x20with\x20SQ','\x20파일','ess','TC078','0개\x20컴포넌트\x20또는','TC022','tzXAS','완료\x0a2.\x20결과\x20조','1.\x20잘못된\x20ana','analyze_zi','ZIP\x20파일\x20없음\x20','\x20\x20\x20\x20\x20\x20-\x20Wi','안전한\x20코드\x20생성\x20','zOOSV','vvJdy','ZIP\x20파일\x20SAS','웃\x20처리)','\x20\x20\x20\x20\x20\x20Stri','lder','1.\x20파일\x20경로\x201','d\x20memo:\x20\x22','취약점\x200개','TC040','\x20시작됨.','zipFilePat','✅\x20MCP\x20서버\x20연','.id;\x0a\x20\x20\x20\x20c','TC031','Using\x20test','취약점\x20정보\x20확인','le_sca','ff\x20형식','JZvOJ','trim','.\x20세부정보\x20확인','최종\x20상태:\x20','.json\x20파일\x20경','dist','readme.txt','TC083','로\x20배열\x20입력\x0a2.','미완료\x20분석\x20코드\x20','is_status','전체\x20워크플로우\x20테','(MCP):\x20분석\x20','p_sca','iSsNv','.\x20즉시\x20결과\x20조회','ZIP\x20파일\x20없음','완료된\x20분석\x20결과\x20','get_analys','TC079','ANALYSIS\x20단','\x20조회가\x20수락됨','유도)','진행률\x20업데이트\x20검','우선순위','UserContro','석\x20→\x20결과','2735464thpHsL','단일\x20파일\x20분석\x20(','TC049','TC060','분석\x0a2.\x20코드\x20생','컴포넌트\x20정보\x20확인','GtSqS','alysis_res','TC047','ername=\x27\x22\x20','includes','addLocalFo','\x0a\x0a---\x20Tool','TC050','EY\x20설정을\x20해제하','toLowerCas','다중\x20파일\x20E2E\x20','writeFileS','Failed\x20to\x20','\x20반환\x0astatus','TC082','✅\x20테스트\x20완료','지원\x20언어\x20확인\x20-','files)','컴포넌트\x20목록,\x20취','SCA\x20분석\x20','스트\x20필요:\x20SPA','T\x20분석\x20성공','ults.tsv','이\x20수락되었거나\x20오','big_files/','n\x20사용)','1.\x20분석\x20완료\x0a2','\x20진행률\x20확인','\x20SCA','join','계\x20진행률\x20업데이트','선스\x20정보','analyze_fi','탐색\x20및\x20분석\x20완료','\x20req.query','.txt\x20파일\x20분석','TC069','t:\x20Java\x20co','all','❌\x20테스트\x20실행\x20실','성\x20시도','\x20또는\x20크기\x20오류','Y_TestCase','\x20root:\x20','content','+\x20username','TC067','테스트데이터','TC064','...','SCA\x20취약점\x20세부','\x20시작\x0a','1.\x20컴포넌트\x20목록','demand.spa','les_sast','1.\x20ZIP\x20파일\x20','n\x20포함','TC001','\x20추적\x20시도','track_anal','여러\x20파일\x20전체\x20워','1.\x20존재하지\x20않는','제한\x20오류','1784644eIIFCl','xEfOx','\x20테스트\x20(MCP\x20','../../../','\x20-\x20','34441462tRSjFz','ZIP\x20크기\x20초과\x20','les_sca','\x20\x20\x20\x20\x20\x20-\x20Li','TC077','로\x20입력','크기\x20제한\x20처리','\x20경로\x20입력\x0a2.\x20','SCA\x20결과\x20조회\x20','message','test_sca.z','(big_files','1.\x20대용량\x20폴더\x20','\x20files\x20fro','Test.java','취약점\x20없는\x20오픈소','드\x20생성','s):','분석\x20성공','\x20\x20\x20\x20public','고\x20오류\x20확인\x20필요','ecure_code','../../','E2E','TC048','1.\x20의존성\x20파일\x20','\x20완료\x20(Real)','════╗','\x20확인','정보\x20확인됨','존재하지\x20않는\x20폴더','실행\x20오류:\x20','params','파일\x20없는\x20프로젝트','error','\x20ID:\x20','\x20반환','62434TZuTKY','EY가\x20설정되지\x20않','push','1.\x20분석\x20시작\x0a2','전체\x20워크플로우\x20E','담당자','TC068','스트\x20필요\x20(코드\x20','TC042','sca/yarnpk','확장자\x20없는\x20파일명','1.\x20폴더에서\x20자동','t\x20app\x20=\x20ex','\x20생성','대용량\x20ZIP\x20분석','https://on','\x20직접\x20설정:','(MCP):\x20Jav','VAmQs','파일명\x20입력\x0a2.\x20','\x0a=========','단계별\x20알림\x20확인','Diff\x20형식\x20확인','constructo','취약점\x20목록\x20반환','ipt\x20파일\x20내용\x20','SCA','TC072','\x20생성:\x20SPARR','류\x20반환됨','\x20분석\x20시도','nt.zip','TC010','석\x20검증됨\x20(Moc','30분\x20이상\x20소요\x20','length','DY\x20→\x20PRE_P','단계별\x20알림','1.\x20폴더\x20경로\x20입','=your-key','오류/경고\x20반환됨:','jwKAL','API_KEY\x20=\x20','progress\x20값','오류\x20처리','arguments','TC084','fileName에\x20','TC032','\x20분석\x20','fileConten','generate_s','빈\x20파일\x20경로\x20배열','TC073','\x20상태가\x20반환됨','troller\x20{\x0a','검증됨','stringify','log','get_sca_an','ysIkA','분석\x20실패\x20상태\x20조','Content','/ko/reques','expected','오류로\x20분석\x20실패\x20','rolAzure.j','data','jEtua','memo','TC030','qfBFn','미완료\x20분석\x20상태\x20','TC091','오류가\x20예상되었으나','33yyEULV','TC065','validation','빈\x20파일\x20내용\x20분석','object','오류\x20메시지\x20반환','단일\x20항목\x20배열\x20분','k\x20-\x20No\x20QA\x20','\x22index.js\x22','1.\x20안전한\x20코드\x20','\x20\x20\x20통과:\x20','TC012','ZIP\x20SCA\x20분석','(((.+)+)+)','확인됨','toolOutput','existsSync','filePaths','tList/anal','ZIP\x20SAST\x20분','word)\x20{\x0a\x20\x20','짧은\x20확인\x20간격\x20(','cwd','실제\x20실행\x20검증됨\x20','를\x20찾을\x20수\x20없어\x20','TC063',',\x20res)\x20=>\x20','TC062','전체\x20흐름\x20성공','alysisId\x20f','스트\x20필요\x20(LLM','오류\x20메시지','TC045','1.\x20여러\x20의존성\x20','취약점\x20없는\x20코드\x20','index.js','folderPath','entries','yarnpkg/pa','\x20(Real)','ysis_progr','sort','판단근거','폴더\x20전체\x20SCA\x20','=\x20병렬\x20실행\x20시작','됨:\x20','ZIP\x20파일\x20SCA','내장\x20테스트\x20케이스','TC023','YOHbq','1.\x20취약점\x20없는\x20'];a4_0x15a9=function(){return _0x4f097f;};return a4_0x15a9();}async function runTests(_0x18097a,_0x4f9e3b){const _0x5b92d7=a4_0x38a391;console[_0x5b92d7(0x1ae)](_0x5b92d7(0x24b)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x16a)),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x22b)+'\x20\x20\x20Sparrow'+_0x5b92d7(0x2d1)+_0x5b92d7(0x14c)+_0x5b92d7(0x252)+_0x5b92d7(0x22a)),console[_0x5b92d7(0x1ae)]('╚═════════'+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+'══════════'+'════╝\x0a'),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x1ee)+':\x20'+BUILTIN_TESTS[_0x5b92d7(0x197)]+'개'),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x23d)+MAX_POLL_ATTEMPTS*POLL_INTERVAL_MS/0xea60+'분'),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x313)+_0x18097a+'\x20'+_0x4f9e3b['join']('\x20')+'\x0a');const _0x19a815=new McpClient(_0x18097a,_0x4f9e3b);try{await _0x19a815[_0x5b92d7(0x23c)](),console[_0x5b92d7(0x1ae)](_0x5b92d7(0xe3)+_0x5b92d7(0x309));const _0x593fa6=await runTestsInParallel(_0x19a815,BUILTIN_TESTS);return _0x593fa6;}finally{await _0x19a815[_0x5b92d7(0x280)](),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x265)+_0x5b92d7(0x271));}}async function main(){const _0xddc4ff=a4_0x38a391,_0x534aba={};_0x534aba[_0xddc4ff(0x235)]=_0xddc4ff(0x291),_0x534aba[_0xddc4ff(0x1bb)]=_0xddc4ff(0xef),_0x534aba[_0xddc4ff(0xf8)]=_0xddc4ff(0x2a5),_0x534aba['HAfgY']=_0xddc4ff(0x11a),_0x534aba[_0xddc4ff(0xd8)]=_0xddc4ff(0x132)+'패:';const _0x270f70=_0x534aba,_0x114d5a=a4_0x32ff32['join'](process[_0xddc4ff(0x1d5)](),'sparrow-mc'+'p-test-res'+_0xddc4ff(0x121));console['log']('🧪\x20Sparrow\x20'+_0xddc4ff(0x2e9)+_0xddc4ff(0x13e));!process.env.SPARROW_API_KEY&&(console[_0xddc4ff(0x294)](_0xddc4ff(0x2f8)+_0xddc4ff(0x240)+_0xddc4ff(0x175)+_0xddc4ff(0x27c)),console[_0xddc4ff(0x294)](_0x270f70['GBEzF']),console[_0xddc4ff(0x294)]('\x20\x20\x201.\x20실행\x20폴'+_0xddc4ff(0x1f9)+_0xddc4ff(0x190)+_0xddc4ff(0x2c9)+_0xddc4ff(0x19b)),console[_0xddc4ff(0x294)](_0xddc4ff(0x2ab)+_0xddc4ff(0x184)),console[_0xddc4ff(0x294)](_0xddc4ff(0xd5)+_0xddc4ff(0x2bc)+'v:SPARROW_'+_0xddc4ff(0x19e)+_0xddc4ff(0x20b)),console[_0xddc4ff(0x294)](_0xddc4ff(0x152)+'nux/Mac:\x20e'+'xport\x20SPAR'+_0xddc4ff(0x2cd)+'Y=\x22your-ke'+'y\x22\x0a'));try{let _0x8c5748=a4_0x32ff32[_0xddc4ff(0x261)](__dirname,_0xddc4ff(0x165));!a4_0x17a5b9[_0xddc4ff(0x1cf)](a4_0x32ff32[_0xddc4ff(0x128)](_0x8c5748,_0xddc4ff(0x215)+'on'))&&(_0x8c5748=a4_0x32ff32['resolve'](__dirname,_0xddc4ff(0x14d)));console[_0xddc4ff(0x1ae)]('[MCP\x20Clien'+'t]\x20Package'+_0xddc4ff(0x136)+_0x8c5748);const _0xe95b99=a4_0x32ff32[_0xddc4ff(0x128)](_0x8c5748,_0x270f70[_0xddc4ff(0x1bb)],_0x270f70[_0xddc4ff(0xf8)],'server.js'),_0x275de1=await runTests('node',[_0xe95b99]);saveTsv(_0x275de1,_0x114d5a);const _0x12766a=Object[_0xddc4ff(0x282)](_0x275de1)[_0xddc4ff(0x229)](_0x4142cc=>_0x4142cc['status']==='통과')[_0xddc4ff(0x197)],_0x5bf6df=Object[_0xddc4ff(0x282)](_0x275de1)[_0xddc4ff(0x229)](_0x4f770a=>_0x4f770a[_0xddc4ff(0x302)]==='실패')['length'];console['log'](_0xddc4ff(0x2d2)+_0xddc4ff(0x21d)+_0xddc4ff(0x21d)+_0xddc4ff(0x21d)+'━━'),console[_0xddc4ff(0x1ae)](_0x270f70['HAfgY']),console[_0xddc4ff(0x1ae)](_0xddc4ff(0x1c9)+_0x12766a+'/'+(_0x12766a+_0x5bf6df)),console[_0xddc4ff(0x1ae)](_0xddc4ff(0x30a)+_0x5bf6df),console[_0xddc4ff(0x1ae)](_0xddc4ff(0xc5)+_0x114d5a),console[_0xddc4ff(0x1ae)](_0xddc4ff(0x21d)+_0xddc4ff(0x21d)+'━━━━━━━━━━'+_0xddc4ff(0x21d)+'━\x0a'),process['exit'](_0x5bf6df>0x0?0x1:0x0);}catch(_0x5494df){console[_0xddc4ff(0x171)](_0x270f70[_0xddc4ff(0xd8)],_0x5494df[_0xddc4ff(0x158)]),process[_0xddc4ff(0x226)](0x1);}}main();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a5_0x4f4b3b=a5_0x412b;(function(_0x204619,_0x5f5985){const _0x2ac0a6=a5_0x412b,_0x39fc11=_0x204619();while(!![]){try{const _0x46aa1f=parseInt(_0x2ac0a6(0x1f5))/0x1+parseInt(_0x2ac0a6(0x20e))/0x2+parseInt(_0x2ac0a6(0x1f2))/0x3+-parseInt(_0x2ac0a6(0x208))/0x4*(parseInt(_0x2ac0a6(0x20b))/0x5)+-parseInt(_0x2ac0a6(0x21a))/0x6*(parseInt(_0x2ac0a6(0x205))/0x7)+parseInt(_0x2ac0a6(0x1ef))/0x8*(-parseInt(_0x2ac0a6(0x1fe))/0x9)+-parseInt(_0x2ac0a6(0x218))/0xa;if(_0x46aa1f===_0x5f5985)break;else _0x39fc11['push'](_0x39fc11['shift']());}catch(_0x49e9b2){_0x39fc11['push'](_0x39fc11['shift']());}}}(a5_0x423f,0x8283b));const a5_0x35c331=(function(){let _0x37c1a7=!![];return function(_0x4e6e9e,_0x58e048){const _0x3d0a58=_0x37c1a7?function(){if(_0x58e048){const _0x4277a1=_0x58e048['apply'](_0x4e6e9e,arguments);return _0x58e048=null,_0x4277a1;}}:function(){};return _0x37c1a7=![],_0x3d0a58;};}()),a5_0x535d90=a5_0x35c331(this,function(){const _0x27d3fb=a5_0x412b,_0x2182e7={};_0x2182e7[_0x27d3fb(0x1eb)]='(((.+)+)+)'+'+$';const _0x541173=_0x2182e7;return a5_0x535d90[_0x27d3fb(0x203)]()[_0x27d3fb(0x20c)](_0x541173[_0x27d3fb(0x1eb)])[_0x27d3fb(0x203)]()['constructo'+'r'](a5_0x535d90)[_0x27d3fb(0x20c)](_0x27d3fb(0x21e)+'+$');});a5_0x535d90();import{config}from'dotenv';import a5_0x1022d3 from'path';import a5_0x3478fc from'fs';import{fileURLToPath}from'url';import{logger}from'../utils/logger.js';const moduleDir=a5_0x1022d3[a5_0x4f4b3b(0x1ee)](fileURLToPath(import.meta.url)),repoRootEnvPath=a5_0x1022d3[a5_0x4f4b3b(0x202)](moduleDir,'../../.env'),cwdEnvPath=a5_0x1022d3[a5_0x4f4b3b(0x202)](process[a5_0x4f4b3b(0x215)](),'.env'),explicitEnvPath=process.env.ENV_PATH?a5_0x1022d3[a5_0x4f4b3b(0x202)](process[a5_0x4f4b3b(0x215)](),process.env.ENV_PATH):undefined,candidateEnvPaths=[explicitEnvPath,cwdEnvPath,repoRootEnvPath][a5_0x4f4b3b(0x209)](Boolean),envPath=candidateEnvPaths['find'](_0x230db9=>{const _0x3707ad=a5_0x4f4b3b;try{return a5_0x3478fc[_0x3707ad(0x204)](_0x230db9);}catch{return![];}})||repoRootEnvPath,a5_0x5607ce={};a5_0x5607ce[a5_0x4f4b3b(0x217)]=envPath,config(a5_0x5607ce);const a5_0x51a9b2={};function a5_0x423f(){const _0x11ef4c=['demand.spa','910729QuiNma','baseUrl','240620','0229-v1:0','anthropic','gemini','endpoint','ssKey','region','2774727uSTVIJ','onnet-2024','bucket','sparrow','resolve','toString','existsSync','5311761NfUgBo','개발\x20환경:\x20스토리','join','4MtjVpl','filter','https://on','1552910eZihEY','search','error','835394UHLTwj','us-east-1','rrowcloud.','\x20사용합니다.','필수\x20환경\x20변수가\x20','model','openai','cwd','aws','path','829670DLpLqa','gemini-1.5','6voEcTR','developmen','http://loc','alhost:114','(((.+)+)+)','-sonnet-20','ollama','bAtcv','secretAcce','I_KEY','dirname','8EKFtbd','notion','다.\x20암호화된\x20키를','2000508uKJUNL','gemma2:27b'];a5_0x423f=function(){return _0x11ef4c;};return a5_0x423f();}a5_0x51a9b2[a5_0x4f4b3b(0x1f6)]=process.env.OLLAMA_BASE_URL||a5_0x4f4b3b(0x21c)+a5_0x4f4b3b(0x21d)+'34',a5_0x51a9b2[a5_0x4f4b3b(0x213)]=process.env.OLLAMA_MODEL||a5_0x4f4b3b(0x1f3);const a5_0xd45d0e={};a5_0xd45d0e[a5_0x4f4b3b(0x1ea)]=a5_0x51a9b2,a5_0xd45d0e[a5_0x4f4b3b(0x214)]=process.env.OPENAI_API_KEY?{'apiKey':process.env.OPENAI_API_KEY,'model':process.env.OPENAI_MODEL||'gpt-4o'}:undefined,a5_0xd45d0e[a5_0x4f4b3b(0x1f9)]=process.env.ANTHROPIC_API_KEY?{'apiKey':process.env.ANTHROPIC_API_KEY,'model':process.env.ANTHROPIC_MODEL||'claude-3-5'+a5_0x4f4b3b(0x21f)+a5_0x4f4b3b(0x1f7)}:undefined,a5_0xd45d0e[a5_0x4f4b3b(0x1fa)]=process.env.GEMINI_API_KEY?{'apiKey':process.env.GEMINI_API_KEY,'model':process.env.GEMINI_MODEL||a5_0x4f4b3b(0x219)+'-pro'}:undefined,a5_0xd45d0e[a5_0x4f4b3b(0x216)]=process.env.AWS_ACCESS_KEY_ID&&process.env.AWS_SECRET_ACCESS_KEY?{'region':process.env.AWS_REGION||a5_0x4f4b3b(0x20f),'accessKeyId':process.env.AWS_ACCESS_KEY_ID,'secretAccessKey':process.env.AWS_SECRET_ACCESS_KEY,'sessionToken':process.env.AWS_SESSION_TOKEN,'model':process.env.AWS_MODEL||'anthropic.'+'claude-3-s'+a5_0x4f4b3b(0x1ff)+a5_0x4f4b3b(0x1f8)}:undefined,a5_0xd45d0e['s3']={},a5_0xd45d0e[a5_0x4f4b3b(0x201)]={},a5_0xd45d0e[a5_0x4f4b3b(0x1f0)]=process.env.NOTION_API_KEY?{'apiKey':process.env.NOTION_API_KEY,'databaseId':process.env.NOTION_DATABASE_ID||''}:undefined,a5_0xd45d0e['s3'][a5_0x4f4b3b(0x200)]=process.env.STORAGE_CONTAINER_NAME||'',a5_0xd45d0e['s3'][a5_0x4f4b3b(0x1fd)]=process.env.STORAGE_REGION||a5_0x4f4b3b(0x20f),a5_0xd45d0e['s3']['accessKeyI'+'d']=process.env.STORAGE_ACCESS_ID||'',a5_0xd45d0e['s3'][a5_0x4f4b3b(0x1ec)+a5_0x4f4b3b(0x1fc)]=process.env.STORAGE_SECRET_KEY||'',a5_0xd45d0e['s3'][a5_0x4f4b3b(0x1fb)]=process.env.STORAGE_ENDPOINT,a5_0xd45d0e[a5_0x4f4b3b(0x201)][a5_0x4f4b3b(0x1f6)]=process.env.SPARROW_API_URL||a5_0x4f4b3b(0x20a)+a5_0x4f4b3b(0x1f4)+a5_0x4f4b3b(0x210)+'ai',a5_0xd45d0e[a5_0x4f4b3b(0x201)]['apiKey']=process.env.SPARROW_API_KEY||'';function a5_0x412b(_0x2f7a9a,_0x305e29){_0x2f7a9a=_0x2f7a9a-0x1ea;const _0x43e1e7=a5_0x423f();let _0x535d90=_0x43e1e7[_0x2f7a9a];return _0x535d90;}export const appConfig=a5_0xd45d0e;const requiredEnvVars=['SPARROW_AP'+a5_0x4f4b3b(0x1ed)];process.env.NODE_ENV===a5_0x4f4b3b(0x21b)+'t'&&((!process.env.STORAGE_ACCESS_ID||!process.env.STORAGE_SECRET_KEY)&&logger['warn'](a5_0x4f4b3b(0x206)+'지\x20키\x20환경\x20변수가'+'\x20설정되지\x20않았습니'+a5_0x4f4b3b(0x1f1)+a5_0x4f4b3b(0x211)));for(const envVar of requiredEnvVars){if(!process.env[envVar]){const triedPaths=[envPath][a5_0x4f4b3b(0x209)](Boolean)[a5_0x4f4b3b(0x207)](',\x20');logger[a5_0x4f4b3b(0x20d)](a5_0x4f4b3b(0x212)+'설정되지\x20않았습니다'+':\x20'+envVar+'\x20(로드\x20경로:\x20'+triedPaths+')');throw new Error(a5_0x4f4b3b(0x212)+'설정되지\x20않았습니다'+':\x20'+envVar+'\x20(로드\x20경로:\x20'+triedPaths+')');}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a6_0x2b2a5d=a6_0xdc9d;(function(_0xf681d3,_0xb9078){const _0x58f20e=a6_0xdc9d,_0x49190b=_0xf681d3();while(!![]){try{const _0x32a939=parseInt(_0x58f20e(0x121))/0x1*(-parseInt(_0x58f20e(0xe4))/0x2)+parseInt(_0x58f20e(0x135))/0x3*(-parseInt(_0x58f20e(0x10a))/0x4)+parseInt(_0x58f20e(0xfb))/0x5+-parseInt(_0x58f20e(0x10f))/0x6*(-parseInt(_0x58f20e(0xf8))/0x7)+parseInt(_0x58f20e(0x132))/0x8*(parseInt(_0x58f20e(0xfc))/0x9)+-parseInt(_0x58f20e(0x106))/0xa+parseInt(_0x58f20e(0x126))/0xb*(parseInt(_0x58f20e(0x12d))/0xc);if(_0x32a939===_0xb9078)break;else _0x49190b['push'](_0x49190b['shift']());}catch(_0x447a95){_0x49190b['push'](_0x49190b['shift']());}}}(a6_0x5795,0x6ade9));const a6_0x4661e4=(function(){let _0x2ac996=!![];return function(_0x109e3a,_0x37dd27){const _0x1e7acd=_0x2ac996?function(){const _0x7401a7=a6_0xdc9d;if(_0x37dd27){const _0x5a3994=_0x37dd27[_0x7401a7(0x12a)](_0x109e3a,arguments);return _0x37dd27=null,_0x5a3994;}}:function(){};return _0x2ac996=![],_0x1e7acd;};}()),a6_0x52a58b=a6_0x4661e4(this,function(){const _0x2a6033=a6_0xdc9d;return a6_0x52a58b[_0x2a6033(0x134)]()[_0x2a6033(0xd2)](_0x2a6033(0x12f)+'+$')['toString']()[_0x2a6033(0xd9)+'r'](a6_0x52a58b)['search'](_0x2a6033(0x12f)+'+$');});a6_0x52a58b();export const SPARROW_RULES=a6_0x2b2a5d(0xf1)+a6_0x2b2a5d(0x124)+a6_0x2b2a5d(0xd3)+a6_0x2b2a5d(0x138)+a6_0x2b2a5d(0x104)+'사용합니다.\x20다음\x20'+a6_0x2b2a5d(0x100)+a6_0x2b2a5d(0x10d)+a6_0x2b2a5d(0xfd)+'**소스코드\x20진단\x20'+a6_0x2b2a5d(0x131)+a6_0x2b2a5d(0x11f)+'(SQLi,\x20XSS'+a6_0x2b2a5d(0x112)+a6_0x2b2a5d(0xdc)+'ile_sast`,'+a6_0x2b2a5d(0xf4)+'files_sast'+a6_0x2b2a5d(0x125)+a6_0x2b2a5d(0x120)+a6_0x2b2a5d(0xd6)+'합니다.\x0a-\x20**오'+a6_0x2b2a5d(0x12c)+'진단\x20(SCA)**'+':\x20`package'+a6_0x2b2a5d(0x113)+a6_0x2b2a5d(0xef)+a6_0x2b2a5d(0xdd)+a6_0x2b2a5d(0xe1)+a6_0x2b2a5d(0x116)+'analyze_fi'+a6_0x2b2a5d(0x139)+a6_0x2b2a5d(0xe8)+a6_0x2b2a5d(0x103)+a6_0x2b2a5d(0x128)+a6_0x2b2a5d(0x10c)+'\x20놓치지\x20마세요**'+a6_0x2b2a5d(0xcc)+'라\x20적절한\x20도구(파'+a6_0x2b2a5d(0xeb)+'\x20선택하세요.\x0a\x0a#'+a6_0x2b2a5d(0xf3)+a6_0x2b2a5d(0xf7)+a6_0x2b2a5d(0xe9)+'Start**:\x20분'+a6_0x2b2a5d(0x117)+a6_0x2b2a5d(0xe3)+a6_0x2b2a5d(0xce)+a6_0x2b2a5d(0xf5)+':\x20`track_a'+a6_0x2b2a5d(0xe2)+'ogress`로\x20끈'+a6_0x2b2a5d(0x101)+a6_0x2b2a5d(0xd5)+a6_0x2b2a5d(0xd7)+a6_0x2b2a5d(0x119)+'h**:\x20분석이\x20완'+a6_0x2b2a5d(0x110)+a6_0x2b2a5d(0x137)+a6_0x2b2a5d(0xf2)+a6_0x2b2a5d(0x111)+'ST)\x20또는\x20`ge'+a6_0x2b2a5d(0x133)+'ysis_resul'+a6_0x2b2a5d(0xd4)+a6_0x2b2a5d(0x109)+a6_0x2b2a5d(0xe5)+a6_0x2b2a5d(0x136)+a6_0x2b2a5d(0xcb)+a6_0x2b2a5d(0x108)+'**\x20`genera'+a6_0x2b2a5d(0x10b)+a6_0x2b2a5d(0xdb)+a6_0x2b2a5d(0x12b)+'A\x20취약점은\x20리포트'+a6_0x2b2a5d(0xe7)+a6_0x2b2a5d(0x11a)+a6_0x2b2a5d(0xea)+a6_0x2b2a5d(0x11d)+a6_0x2b2a5d(0xed)+'취약점이\x20발견되었습'+a6_0x2b2a5d(0x10e)+a6_0x2b2a5d(0x114)+a6_0x2b2a5d(0x11c)+a6_0x2b2a5d(0xca)+a6_0x2b2a5d(0x127)+a6_0x2b2a5d(0xd0)+a6_0x2b2a5d(0xee)+a6_0x2b2a5d(0xd1)+')를\x20명확히\x20보여주'+a6_0x2b2a5d(0xff)+'.';function a6_0xdc9d(_0x35710f,_0x1605dc){_0x35710f=_0x35710f-0xca;const _0x363e0d=a6_0x5795();let _0x52a58b=_0x363e0d[_0x35710f];return _0x52a58b;}const a6_0x158a1d={};function a6_0x5795(){const _0x3722cc=['46878afgBPu','*Action**:','\x20따라\x20`get_a','트너로서\x20`spar','le_sca`,\x20`','Analysis','*라고\x20긍정적인\x20가','\x20SAST\x20취약점이',':\x20분석\x20범위에\x20따','order','를\x20받습니다.\x0a2.','Ready\x20to\x20s','-\x20수정\x20제안\x20시,','드의\x20차이(Diff','search','은\x20최고의\x20보안\x20파','ts`\x20(SCA)로','.\x20(사용자를\x20불안','ast`\x20등을\x20사용','하게\x20하지\x20마세요)','sing','constructo','r\x20analysis','code`로\x20해결책','`analyze_f','의존성\x20파일을\x20분석','Ready','progress','Pre-proces','하여\x20취약한\x20라이브','nalysis_pr','nalysisId`','382yNrhwM','져옵니다.\x0a4.\x20*','ompleted\x20s','의\x20가이드에\x20따라\x20','analyze_fo','oop)\x0a1.\x20**','를\x20제안합니다.\x0a\x0a','일/폴더/ZIP)를','...','커뮤니케이션\x0a-\x20\x22','\x20원본과\x20안전한\x20코','om.xml`\x20등\x20','ANALYSIS','#\x20Sparrow\x20','nalysis_re','#\x202.\x20분석-조치','\x20`analyze_','\x20**Track**','Analysis\x20c','\x20루프\x20(The\x20L','2779iNaZAW','READY','Waiting\x20fo','3765290hcmZpA','209871cZsFYj','적\x20도구\x20선택\x0a-\x20','Post-proce','어\x20신뢰를\x20얻으세요','원칙을\x20따르십시오:','기\x20있게\x20기다립니다','COMPLETE','lder_sca`\x20','row-mcp`를\x20','POST_PROCE','2225030iakhFj','\x20to\x20start.','\x20있다면\x20**반드시','\x20상세\x20리포트를\x20가','184GFuVWr','te_secure_','-\x20**파일\x20하나도','\x0a\x0a##\x201.\x20전술','니다\x22보다\x20**\x22심','654ojbZOs','료되면\x20결과\x20유형에','sults`\x20(SA','\x20등)을\x20찾을\x20때\x20','.json`,\x20`p','각한\x20이슈(High','descriptio','러리를\x20찾을\x20때\x20`','석을\x20시작하고\x20`a','uccessfull','\x0a3.\x20**Fetc','라이브러리\x20업데이트','PRE_PROCES',')를\x20막았습니다\x22*','##\x203.\x20사용자\x20','sing...','코드\x20자체의\x20취약점','e_folder_s','594yTxqVS','name','ssing','MCP\x20규칙\x0a\x0a당신','`,\x20`analyz','495BwmLRS','치를\x20전달하세요.\x0a','등을\x20사용합니다.\x0a','tion','apply','을\x20제시하고,\x20SC','픈소스/라이브러리\x20','117240TQTAtI','INIT','(((.+)+)+)','Analysis\x20i','(SAST)**:\x20','88uiyoIC','t_sca_anal','toString'];a6_0x5795=function(){return _0x3722cc;};return a6_0x5795();}a6_0x158a1d['id']=a6_0x2b2a5d(0x12e),a6_0x158a1d[a6_0x2b2a5d(0x122)]='Initializa'+a6_0x2b2a5d(0x129),a6_0x158a1d[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xfa)+a6_0x2b2a5d(0xda)+a6_0x2b2a5d(0x107),a6_0x158a1d['progress']=null,a6_0x158a1d[a6_0x2b2a5d(0xcd)]=0x1;const a6_0x429c66={};a6_0x429c66['id']=a6_0x2b2a5d(0xf9),a6_0x429c66[a6_0x2b2a5d(0x122)]=a6_0x2b2a5d(0xde),a6_0x429c66[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xcf)+'tart\x20analy'+'sis.',a6_0x429c66[a6_0x2b2a5d(0xdf)]=null,a6_0x429c66[a6_0x2b2a5d(0xcd)]=0x2;const a6_0x5d7546={};a6_0x5d7546['id']=a6_0x2b2a5d(0x11b)+'S',a6_0x5d7546[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xe0)+a6_0x2b2a5d(0x11e),a6_0x5d7546[a6_0x2b2a5d(0x122)]='Pre-proces'+a6_0x2b2a5d(0xd8),a6_0x5d7546[a6_0x2b2a5d(0xdf)]=null,a6_0x5d7546[a6_0x2b2a5d(0xcd)]=0x3;const a6_0x5a6373={};a6_0x5a6373['id']='ANALYSIS',a6_0x5a6373['descriptio'+'n']=a6_0x2b2a5d(0x130)+'n\x20progress'+a6_0x2b2a5d(0xec),a6_0x5a6373['name']=a6_0x2b2a5d(0x13a),a6_0x5a6373[a6_0x2b2a5d(0xdf)]=0x0,a6_0x5a6373[a6_0x2b2a5d(0xcd)]=0x4;const a6_0x1a9d98={};a6_0x1a9d98['id']='POST_PROCE'+'SS',a6_0x1a9d98[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xfe)+'ssing...',a6_0x1a9d98[a6_0x2b2a5d(0x122)]=a6_0x2b2a5d(0xfe)+a6_0x2b2a5d(0x123),a6_0x1a9d98[a6_0x2b2a5d(0xdf)]=null,a6_0x1a9d98[a6_0x2b2a5d(0xcd)]=0x5;const a6_0x56f0ae={};a6_0x56f0ae['id']='COMPLETE',a6_0x56f0ae[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xf6)+a6_0x2b2a5d(0xe6)+a6_0x2b2a5d(0x118)+'y.',a6_0x56f0ae[a6_0x2b2a5d(0x122)]='Complete',a6_0x56f0ae['progress']=0x64,a6_0x56f0ae[a6_0x2b2a5d(0xcd)]=0x6;const a6_0x53d3f5={};a6_0x53d3f5[a6_0x2b2a5d(0x12e)]=a6_0x158a1d,a6_0x53d3f5['READY']=a6_0x429c66,a6_0x53d3f5[a6_0x2b2a5d(0x11b)+'S']=a6_0x5d7546,a6_0x53d3f5[a6_0x2b2a5d(0xf0)]=a6_0x5a6373,a6_0x53d3f5[a6_0x2b2a5d(0x105)+'SS']=a6_0x1a9d98,a6_0x53d3f5[a6_0x2b2a5d(0x102)]=a6_0x56f0ae;export const ANALYSIS_STAGES=a6_0x53d3f5;
|