You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

18 lines
38 KiB

function cov_25j1qrcp5v(){var path="D:\\wechatapp\\SH\\SH\\test_whitebox.js";var hash="7d10ae8fd55c08a0c4637cb59d9b0b5f69e0c101";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"D:\\wechatapp\\SH\\SH\\test_whitebox.js",statementMap:{"0":{start:{line:1,column:15},end:{line:1,column:37}},"1":{start:{line:4,column:0},end:{line:144,column:3}},"2":{start:{line:6,column:4},end:{line:128,column:7}},"3":{start:{line:9,column:32},end:{line:9,column:34}},"4":{start:{line:11,column:12},end:{line:46,column:13}},"5":{start:{line:12,column:16},end:{line:45,column:17}},"6":{start:{line:14,column:20},end:{line:38,column:21}},"7":{start:{line:15,column:43},end:{line:15,column:64}},"8":{start:{line:18,column:24},end:{line:22,column:25}},"9":{start:{line:21,column:28},end:{line:21,column:68}},"10":{start:{line:24,column:24},end:{line:29,column:25}},"11":{start:{line:25,column:28},end:{line:25,column:57}},"12":{start:{line:26,column:31},end:{line:29,column:25}},"13":{start:{line:28,column:28},end:{line:28,column:59}},"14":{start:{line:32,column:24},end:{line:37,column:25}},"15":{start:{line:33,column:28},end:{line:33,column:88}},"16":{start:{line:33,column:76},end:{line:33,column:86}},"17":{start:{line:36,column:28},end:{line:36,column:63}},"18":{start:{line:39,column:23},end:{line:45,column:17}},"19":{start:{line:41,column:20},end:{line:41,column:46}},"20":{start:{line:44,column:20},end:{line:44,column:56}},"21":{start:{line:49,column:12},end:{line:56,column:58}},"22":{start:{line:51,column:20},end:{line:51,column:43}},"23":{start:{line:51,column:30},end:{line:51,column:43}},"24":{start:{line:52,column:41},end:{line:52,column:69}},"25":{start:{line:53,column:20},end:{line:53,column:101}},"26":{start:{line:56,column:28},end:{line:56,column:56}},"27":{start:{line:58,column:12},end:{line:58,column:33}},"28":{start:{line:61,column:8},end:{line:69,column:11}},"29":{start:{line:62,column:30},end:{line:62,column:95}},"30":{start:{line:63,column:27},end:{line:63,column:54}},"31":{start:{line:65,column:12},end:{line:65,column:45}},"32":{start:{line:66,column:12},end:{line:66,column:47}},"33":{start:{line:67,column:12},end:{line:67,column:72}},"34":{start:{line:68,column:12},end:{line:68,column:72}},"35":{start:{line:71,column:8},end:{line:79,column:11}},"36":{start:{line:72,column:30},end:{line:72,column:97}},"37":{start:{line:73,column:27},end:{line:73,column:54}},"38":{start:{line:75,column:12},end:{line:75,column:45}},"39":{start:{line:76,column:12},end:{line:76,column:47}},"40":{start:{line:77,column:12},end:{line:77,column:72}},"41":{start:{line:78,column:12},end:{line:78,column:72}},"42":{start:{line:81,column:8},end:{line:89,column:11}},"43":{start:{line:82,column:30},end:{line:82,column:101}},"44":{start:{line:83,column:27},end:{line:83,column:54}},"45":{start:{line:85,column:12},end:{line:85,column:45}},"46":{start:{line:86,column:12},end:{line:86,column:47}},"47":{start:{line:87,column:12},end:{line:87,column:72}},"48":{start:{line:88,column:12},end:{line:88,column:72}},"49":{start:{line:91,column:8},end:{line:99,column:11}},"50":{start:{line:92,column:30},end:{line:92,column:92}},"51":{start:{line:93,column:27},end:{line:93,column:54}},"52":{start:{line:95,column:12},end:{line:95,column:45}},"53":{start:{line:96,column:12},end:{line:96,column:47}},"54":{start:{line:97,column:12},end:{line:97,column:72}},"55":{start:{line:98,column:12},end:{line:98,column:72}},"56":{start:{line:101,column:8},end:{line:108,column:11}},"57":{start:{line:102,column:30},end:{line:102,column:61}},"58":{start:{line:103,column:27},end:{line:103,column:54}},"59":{start:{line:105,column:12},end:{line:105,column:45}},"60":{start:{line:106,column:12},end:{line:106,column:47}},"61":{start:{line:107,column:12},end:{line:107,column:72}},"62":{start:{line:110,column:8},end:{line:118,column:11}},"63":{start:{line:111,column:30},end:{line:111,column:96}},"64":{start:{line:112,column:27},end:{line:112,column:54}},"65":{start:{line:114,column:12},end:{line:114,column:45}},"66":{start:{line:115,column:12},end:{line:115,column:47}},"67":{start:{line:116,column:12},end:{line:116,column:72}},"68":{start:{line:117,column:12},end:{line:117,column:72}},"69":{start:{line:120,column:8},end:{line:127,column:11}},"70":{start:{line:121,column:30},end:{line:121,column:107}},"71":{start:{line:122,column:27},end:{line:122,column:54}},"72":{start:{line:124,column:12},end:{line:124,column:45}},"73":{start:{line:125,column:12},end:{line:125,column:47}},"74":{start:{line:126,column:12},end:{line:126,column:72}},"75":{start:{line:131,column:4},end:{line:143,column:7}},"76":{start:{line:132,column:8},end:{line:142,column:11}},"77":{start:{line:134,column:39},end:{line:136,column:13}},"78":{start:{line:135,column:16},end:{line:135,column:41}},"79":{start:{line:138,column:12},end:{line:138,column:98}},"80":{start:{line:139,column:12},end:{line:139,column:84}},"81":{start:{line:140,column:12},end:{line:140,column:86}},"82":{start:{line:141,column:12},end:{line:141,column:60}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:4,column:24},end:{line:4,column:25}},loc:{start:{line:4,column:30},end:{line:144,column:1}},line:4},"1":{name:"(anonymous_1)",decl:{start:{line:6,column:26},end:{line:6,column:27}},loc:{start:{line:6,column:32},end:{line:128,column:5}},line:6},"2":{name:"processImageUrls",decl:{start:{line:8,column:17},end:{line:8,column:33}},loc:{start:{line:8,column:45},end:{line:59,column:9}},line:8},"3":{name:"(anonymous_3)",decl:{start:{line:33,column:69},end:{line:33,column:70}},loc:{start:{line:33,column:76},end:{line:33,column:86}},line:33},"4":{name:"(anonymous_4)",decl:{start:{line:50,column:24},end:{line:50,column:25}},loc:{start:{line:50,column:31},end:{line:54,column:17}},line:50},"5":{name:"(anonymous_5)",decl:{start:{line:56,column:21},end:{line:56,column:22}},loc:{start:{line:56,column:28},end:{line:56,column:56}},line:56},"6":{name:"(anonymous_6)",decl:{start:{line:61,column:30},end:{line:61,column:31}},loc:{start:{line:61,column:36},end:{line:69,column:9}},line:61},"7":{name:"(anonymous_7)",decl:{start:{line:71,column:31},end:{line:71,column:32}},loc:{start:{line:71,column:37},end:{line:79,column:9}},line:71},"8":{name:"(anonymous_8)",decl:{start:{line:81,column:33},end:{line:81,column:34}},loc:{start:{line:81,column:39},end:{line:89,column:9}},line:81},"9":{name:"(anonymous_9)",decl:{start:{line:91,column:32},end:{line:91,column:33}},loc:{start:{line:91,column:38},end:{line:99,column:9}},line:91},"10":{name:"(anonymous_10)",decl:{start:{line:101,column:29},end:{line:101,column:30}},loc:{start:{line:101,column:35},end:{line:108,column:9}},line:101},"11":{name:"(anonymous_11)",decl:{start:{line:110,column:26},end:{line:110,column:27}},loc:{start:{line:110,column:32},end:{line:118,column:9}},line:110},"12":{name:"(anonymous_12)",decl:{start:{line:120,column:26},end:{line:120,column:27}},loc:{start:{line:120,column:32},end:{line:127,column:9}},line:120},"13":{name:"(anonymous_13)",decl:{start:{line:131,column:25},end:{line:131,column:26}},loc:{start:{line:131,column:31},end:{line:143,column:5}},line:131},"14":{name:"(anonymous_14)",decl:{start:{line:132,column:30},end:{line:132,column:31}},loc:{start:{line:132,column:36},end:{line:142,column:9}},line:132},"15":{name:"(anonymous_15)",decl:{start:{line:134,column:39},end:{line:134,column:40}},loc:{start:{line:134,column:60},end:{line:136,column:13}},line:134}},branchMap:{"0":{loc:{start:{line:11,column:12},end:{line:46,column:13}},type:"if",locations:[{start:{line:11,column:12},end:{line:46,column:13}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:11},"1":{loc:{start:{line:12,column:16},end:{line:45,column:17}},type:"if",locations:[{start:{line:12,column:16},end:{line:45,column:17}},{start:{line:39,column:23},end:{line:45,column:17}}],line:12},"2":{loc:{start:{line:18,column:24},end:{line:22,column:25}},type:"if",locations:[{start:{line:18,column:24},end:{line:22,column:25}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:18},"3":{loc:{start:{line:18,column:28},end:{line:19,column:90}},type:"binary-expr",locations:[{start:{line:18,column:28},end:{line:18,column:60}},{start:{line:19,column:29},end:{line:19,column:57}},{start:{line:19,column:61},end:{line:19,column:89}}],line:18},"4":{loc:{start:{line:24,column:24},end:{line:29,column:25}},type:"if",locations:[{start:{line:24,column:24},end:{line:29,column:25}},{start:{line:26,column:31},end:{line:29,column:25}}],line:24},"5":{loc:{start:{line:26,column:31},end:{line:29,column:25}},type:"if",locations:[{start:{line:26,column:31},end:{line:29,column:25}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:26},"6":{loc:{start:{line:32,column:24},end:{line:37,column:25}},type:"if",locations:[{start:{line:32,column:24},end:{line:37,column:25}},{start:{line:34,column:31},end:{line:37,column:25}}],line:32},"7":{loc:{start:{line:39,column:23},end:{line:45,column:17}},type:"if",locations:[{start:{line:39,column:23},end:{line:45,column:17}},{start:{line:42,column:23},end:{line:45,column:17}}],line:39},"8":{loc:{start:{line:51,column:20},end:{line:51,column:43}},type:"if",locations:[{start:{line:51,column:20},end:{line:51,column:43}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:51},"9":{loc:{start:{line:53,column:27},end:{line:53,column:100}},type:"binary-expr",locations:[{start:{line:53,column:27},end:{line:53,column:61}},{start:{line:53,column:65},end:{line:53,column:100}}],line:53},"10":{loc:{start:{line:135,column:23},end:{line:135,column:40}},type:"binary-expr",locations:[{start:{line:135,column:23},end:{line:135,column:30}},{start:{line:135,column:34},end:{line:135,column:40}}],line:135}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"7d10ae8fd55c08a0c4637cb59d9b0b5f69e0c101"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
cov_25j1qrcp5v=function(){return actualCoverage;};}return actualCoverage;}cov_25j1qrcp5v();const expect=(cov_25j1qrcp5v().s[0]++,require('chai').expect);// 从Reject.js中提取出来的关键业务逻辑函数
cov_25j1qrcp5v().s[1]++;describe('白盒测试:核心业务逻辑',()=>{cov_25j1qrcp5v().f[0]++;cov_25j1qrcp5v().s[2]++;// 测试图片URL处理逻辑
describe('图片URL处理函数',()=>{cov_25j1qrcp5v().f[1]++;// 模拟图片URL处理逻辑
function processImageUrls(imageUrls){cov_25j1qrcp5v().f[2]++;let processedUrls=(cov_25j1qrcp5v().s[3]++,[]);cov_25j1qrcp5v().s[4]++;if(imageUrls){cov_25j1qrcp5v().b[0][0]++;cov_25j1qrcp5v().s[5]++;if(typeof imageUrls==='string'){cov_25j1qrcp5v().b[1][0]++;cov_25j1qrcp5v().s[6]++;// 尝试解析为JSON数组
try{let parsedImages=(cov_25j1qrcp5v().s[7]++,JSON.parse(imageUrls));// 检查是否是JSON字符串的字符串表示(转义的JSON)
cov_25j1qrcp5v().s[8]++;if((cov_25j1qrcp5v().b[3][0]++,typeof parsedImages==='string')&&((cov_25j1qrcp5v().b[3][1]++,parsedImages.startsWith('['))||(cov_25j1qrcp5v().b[3][2]++,parsedImages.startsWith('{')))){cov_25j1qrcp5v().b[2][0]++;cov_25j1qrcp5v().s[9]++;// 进行第二次解析
parsedImages=JSON.parse(parsedImages);}else{cov_25j1qrcp5v().b[2][1]++;}cov_25j1qrcp5v().s[10]++;if(Array.isArray(parsedImages)){cov_25j1qrcp5v().b[4][0]++;cov_25j1qrcp5v().s[11]++;processedUrls=parsedImages;}else{cov_25j1qrcp5v().b[4][1]++;cov_25j1qrcp5v().s[12]++;if(typeof parsedImages==='string'){cov_25j1qrcp5v().b[5][0]++;cov_25j1qrcp5v().s[13]++;// 如果解析结果是字符串,可能是单个URL
processedUrls=[parsedImages];}else{cov_25j1qrcp5v().b[5][1]++;}}}catch(e){cov_25j1qrcp5v().s[14]++;// 解析失败,尝试按逗号分隔
if(imageUrls.includes(',')){cov_25j1qrcp5v().b[6][0]++;cov_25j1qrcp5v().s[15]++;processedUrls=imageUrls.split(',').map(url=>{cov_25j1qrcp5v().f[3]++;cov_25j1qrcp5v().s[16]++;return url.trim();});}else{cov_25j1qrcp5v().b[6][1]++;cov_25j1qrcp5v().s[17]++;// 作为单个URL处理
processedUrls=[imageUrls.trim()];}}}else{cov_25j1qrcp5v().b[1][1]++;cov_25j1qrcp5v().s[18]++;if(Array.isArray(imageUrls)){cov_25j1qrcp5v().b[7][0]++;cov_25j1qrcp5v().s[19]++;// 已经是数组,直接使用
processedUrls=imageUrls;}else{cov_25j1qrcp5v().b[7][1]++;cov_25j1qrcp5v().s[20]++;// 其他类型,转换为字符串数组
processedUrls=[String(imageUrls)];}}}else{cov_25j1qrcp5v().b[0][1]++;}// 过滤并处理无效的URL:移除反引号并验证
cov_25j1qrcp5v().s[21]++;processedUrls=processedUrls.filter(url=>{cov_25j1qrcp5v().f[4]++;cov_25j1qrcp5v().s[22]++;if(!url){cov_25j1qrcp5v().b[8][0]++;cov_25j1qrcp5v().s[23]++;return false;}else{cov_25j1qrcp5v().b[8][1]++;}const processedUrl=(cov_25j1qrcp5v().s[24]++,url.replace(/`/g,'').trim());cov_25j1qrcp5v().s[25]++;return(cov_25j1qrcp5v().b[9][0]++,processedUrl.startsWith('http://'))||(cov_25j1qrcp5v().b[9][1]++,processedUrl.startsWith('https://'));})// 对每个有效URL进行处理,移除反引号
.map(url=>{cov_25j1qrcp5v().f[5]++;cov_25j1qrcp5v().s[26]++;return url.replace(/`/g,'').trim();});cov_25j1qrcp5v().s[27]++;return processedUrls;}cov_25j1qrcp5v().s[28]++;it('应该正确处理包含反引号的URL',()=>{cov_25j1qrcp5v().f[6]++;const imageUrls=(cov_25j1qrcp5v().s[29]++,'`http://example.com/image1.jpg`,`http://example.com/image2.jpg`');const result=(cov_25j1qrcp5v().s[30]++,processImageUrls(imageUrls));cov_25j1qrcp5v().s[31]++;expect(result).to.be.an('array');cov_25j1qrcp5v().s[32]++;expect(result).to.have.lengthOf(2);cov_25j1qrcp5v().s[33]++;expect(result[0]).to.equal('http://example.com/image1.jpg');cov_25j1qrcp5v().s[34]++;expect(result[1]).to.equal('http://example.com/image2.jpg');});cov_25j1qrcp5v().s[35]++;it('应该正确处理转义的JSON字符串',()=>{cov_25j1qrcp5v().f[7]++;const imageUrls=(cov_25j1qrcp5v().s[36]++,'["http://example.com/image1.jpg","http://example.com/image2.jpg"]');const result=(cov_25j1qrcp5v().s[37]++,processImageUrls(imageUrls));cov_25j1qrcp5v().s[38]++;expect(result).to.be.an('array');cov_25j1qrcp5v().s[39]++;expect(result).to.have.lengthOf(2);cov_25j1qrcp5v().s[40]++;expect(result[0]).to.equal('http://example.com/image1.jpg');cov_25j1qrcp5v().s[41]++;expect(result[1]).to.equal('http://example.com/image2.jpg');});cov_25j1qrcp5v().s[42]++;it('应该正确处理双重转义的JSON字符串',()=>{cov_25j1qrcp5v().f[8]++;const imageUrls=(cov_25j1qrcp5v().s[43]++,'[\"http://example.com/image1.jpg\",\"http://example.com/image2.jpg\"]');const result=(cov_25j1qrcp5v().s[44]++,processImageUrls(imageUrls));cov_25j1qrcp5v().s[45]++;expect(result).to.be.an('array');cov_25j1qrcp5v().s[46]++;expect(result).to.have.lengthOf(2);cov_25j1qrcp5v().s[47]++;expect(result[0]).to.equal('http://example.com/image1.jpg');cov_25j1qrcp5v().s[48]++;expect(result[1]).to.equal('http://example.com/image2.jpg');});cov_25j1qrcp5v().s[49]++;it('应该正确处理逗号分隔的URL字符串',()=>{cov_25j1qrcp5v().f[9]++;const imageUrls=(cov_25j1qrcp5v().s[50]++,'http://example.com/image1.jpg, http://example.com/image2.jpg');const result=(cov_25j1qrcp5v().s[51]++,processImageUrls(imageUrls));cov_25j1qrcp5v().s[52]++;expect(result).to.be.an('array');cov_25j1qrcp5v().s[53]++;expect(result).to.have.lengthOf(2);cov_25j1qrcp5v().s[54]++;expect(result[0]).to.equal('http://example.com/image1.jpg');cov_25j1qrcp5v().s[55]++;expect(result[1]).to.equal('http://example.com/image2.jpg');});cov_25j1qrcp5v().s[56]++;it('应该正确处理单个URL字符串',()=>{cov_25j1qrcp5v().f[10]++;const imageUrls=(cov_25j1qrcp5v().s[57]++,'http://example.com/image1.jpg');const result=(cov_25j1qrcp5v().s[58]++,processImageUrls(imageUrls));cov_25j1qrcp5v().s[59]++;expect(result).to.be.an('array');cov_25j1qrcp5v().s[60]++;expect(result).to.have.lengthOf(1);cov_25j1qrcp5v().s[61]++;expect(result[0]).to.equal('http://example.com/image1.jpg');});cov_25j1qrcp5v().s[62]++;it('应该正确处理URL数组',()=>{cov_25j1qrcp5v().f[11]++;const imageUrls=(cov_25j1qrcp5v().s[63]++,['http://example.com/image1.jpg','http://example.com/image2.jpg']);const result=(cov_25j1qrcp5v().s[64]++,processImageUrls(imageUrls));cov_25j1qrcp5v().s[65]++;expect(result).to.be.an('array');cov_25j1qrcp5v().s[66]++;expect(result).to.have.lengthOf(2);cov_25j1qrcp5v().s[67]++;expect(result[0]).to.equal('http://example.com/image1.jpg');cov_25j1qrcp5v().s[68]++;expect(result[1]).to.equal('http://example.com/image2.jpg');});cov_25j1qrcp5v().s[69]++;it('应该过滤掉无效的URL',()=>{cov_25j1qrcp5v().f[12]++;const imageUrls=(cov_25j1qrcp5v().s[70]++,['http://example.com/image1.jpg','not-a-url','ftp://invalid.com/image.jpg']);const result=(cov_25j1qrcp5v().s[71]++,processImageUrls(imageUrls));cov_25j1qrcp5v().s[72]++;expect(result).to.be.an('array');cov_25j1qrcp5v().s[73]++;expect(result).to.have.lengthOf(1);cov_25j1qrcp5v().s[74]++;expect(result[0]).to.equal('http://example.com/image1.jpg');});});// 测试搜索参数处理逻辑
cov_25j1qrcp5v().s[75]++;describe('搜索参数处理逻辑',()=>{cov_25j1qrcp5v().f[13]++;cov_25j1qrcp5v().s[76]++;it('应该优先使用keyword参数',()=>{cov_25j1qrcp5v().f[14]++;cov_25j1qrcp5v().s[77]++;// 模拟搜索参数处理
const handleSearchParams=(search,keyword)=>{cov_25j1qrcp5v().f[15]++;cov_25j1qrcp5v().s[78]++;return(cov_25j1qrcp5v().b[10][0]++,keyword)||(cov_25j1qrcp5v().b[10][1]++,search);};cov_25j1qrcp5v().s[79]++;expect(handleSearchParams('search-value','keyword-value')).to.equal('keyword-value');cov_25j1qrcp5v().s[80]++;expect(handleSearchParams('search-value','')).to.equal('search-value');cov_25j1qrcp5v().s[81]++;expect(handleSearchParams('','keyword-value')).to.equal('keyword-value');cov_25j1qrcp5v().s[82]++;expect(handleSearchParams('','')).to.equal('');});});});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMjVqMXFyY3A1diIsImFjdHVhbENvdmVyYWdlIiwiZXhwZWN0IiwicyIsInJlcXVpcmUiLCJkZXNjcmliZSIsImYiLCJwcm9jZXNzSW1hZ2VVcmxzIiwiaW1hZ2VVcmxzIiwicHJvY2Vzc2VkVXJscyIsImIiLCJwYXJzZWRJbWFnZXMiLCJKU09OIiwicGFyc2UiLCJzdGFydHNXaXRoIiwiQXJyYXkiLCJpc0FycmF5IiwiZSIsImluY2x1ZGVzIiwic3BsaXQiLCJtYXAiLCJ1cmwiLCJ0cmltIiwiU3RyaW5nIiwiZmlsdGVyIiwicHJvY2Vzc2VkVXJsIiwicmVwbGFjZSIsIml0IiwicmVzdWx0IiwidG8iLCJiZSIsImFuIiwiaGF2ZSIsImxlbmd0aE9mIiwiZXF1YWwiLCJoYW5kbGVTZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJrZXl3b3JkIl0sInNvdXJjZXMiOlsidGVzdF93aGl0ZWJveC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHBlY3QgPSByZXF1aXJlKCdjaGFpJykuZXhwZWN0O1xuXG4vLyDku45SZWplY3QuanPkuK3mj5Dlj5blh7rmnaXnmoTlhbPplK7kuJrliqHpgLvovpHlh73mlbBcbmRlc2NyaWJlKCfnmb3nm5LmtYvor5XvvJrmoLjlv4PkuJrliqHpgLvovpEnLCAoKSA9PiB7XG4gICAgLy8g5rWL6K+V5Zu+54mHVVJM5aSE55CG6YC76L6RXG4gICAgZGVzY3JpYmUoJ+WbvueJh1VSTOWkhOeQhuWHveaVsCcsICgpID0+IHtcbiAgICAgICAgLy8g5qih5ouf5Zu+54mHVVJM5aSE55CG6YC76L6RXG4gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NJbWFnZVVybHMoaW1hZ2VVcmxzKSB7XG4gICAgICAgICAgICBsZXQgcHJvY2Vzc2VkVXJscyA9IFtdO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoaW1hZ2VVcmxzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpbWFnZVVybHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWwneivleino+aekOS4ukpTT07mlbDnu4RcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJzZWRJbWFnZXMgPSBKU09OLnBhcnNlKGltYWdlVXJscyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOajgOafpeaYr+WQpuaYr0pTT07lrZfnrKbkuLLnmoTlrZfnrKbkuLLooajnpLrvvIjovazkuYnnmoRKU09O77yJXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBhcnNlZEltYWdlcyA9PT0gJ3N0cmluZycgJiYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcnNlZEltYWdlcy5zdGFydHNXaXRoKCdbJykgfHwgcGFyc2VkSW1hZ2VzLnN0YXJ0c1dpdGgoJ3snKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDov5vooYznrKzkuozmrKHop6PmnpBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRJbWFnZXMgPSBKU09OLnBhcnNlKHBhcnNlZEltYWdlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhcnNlZEltYWdlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRVcmxzID0gcGFyc2VkSW1hZ2VzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcGFyc2VkSW1hZ2VzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOino+aekOe7k+aenOaYr+Wtl+espuS4su+8jOWPr+iDveaYr+WNleS4qlVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZFVybHMgPSBbcGFyc2VkSW1hZ2VzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6Kej5p6Q5aSx6LSl77yM5bCd6K+V5oyJ6YCX5Y+35YiG6ZqUXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2VVcmxzLmluY2x1ZGVzKCcsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRVcmxzID0gaW1hZ2VVcmxzLnNwbGl0KCcsJykubWFwKHVybCA9PiB1cmwudHJpbSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L2c5Li65Y2V5LiqVVJM5aSE55CGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkVXJscyA9IFtpbWFnZVVybHMudHJpbSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpbWFnZVVybHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOW3sue7j+aYr+aVsOe7hO+8jOebtOaOpeS9v+eUqFxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRVcmxzID0gaW1hZ2VVcmxzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWFtuS7luexu+Wei++8jOi9rOaNouS4uuWtl+espuS4suaVsOe7hFxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRVcmxzID0gW1N0cmluZyhpbWFnZVVybHMpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIOi/h+a7pOW5tuWkhOeQhuaXoOaViOeahFVSTO+8muenu+mZpOWPjeW8leWPt+W5tumqjOivgVxuICAgICAgICAgICAgcHJvY2Vzc2VkVXJscyA9IHByb2Nlc3NlZFVybHNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKHVybCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdXJsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZFVybCA9IHVybC5yZXBsYWNlKC9gL2csICcnKS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzZWRVcmwuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHByb2Nlc3NlZFVybC5zdGFydHNXaXRoKCdodHRwczovLycpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLy8g5a+55q+P5Liq5pyJ5pWIVVJM6L+b6KGM5aSE55CG77yM56e76Zmk5Y+N5byV5Y+3XG4gICAgICAgICAgICAgICAgLm1hcCh1cmwgPT4gdXJsLnJlcGxhY2UoL2AvZywgJycpLnRyaW0oKSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiBwcm9jZXNzZWRVcmxzO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpdCgn5bqU6K+l5q2j56Gu5aSE55CG5YyF5ZCr5Y+N5byV5Y+355qEVVJMJywgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VVcmxzID0gJ2BodHRwOi8vZXhhbXBsZS5jb20vaW1hZ2UxLmpwZ2AsYGh0dHA6Ly9leGFtcGxlLmNvbS9pbWFnZTIuanBnYCc7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzSW1hZ2VVcmxzKGltYWdlVXJscyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvLmJlLmFuKCdhcnJheScpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG8uaGF2ZS5sZW5ndGhPZigyKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHRbMF0pLnRvLmVxdWFsKCdodHRwOi8vZXhhbXBsZS5jb20vaW1hZ2UxLmpwZycpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdFsxXSkudG8uZXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbS9pbWFnZTIuanBnJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgaXQoJ+W6lOivpeato+ehruWkhOeQhui9rOS5ieeahEpTT07lrZfnrKbkuLInLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbWFnZVVybHMgPSAnW1wiaHR0cDovL2V4YW1wbGUuY29tL2ltYWdlMS5qcGdcIixcImh0dHA6Ly9leGFtcGxlLmNvbS9pbWFnZTIuanBnXCJdJztcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb2Nlc3NJbWFnZVVybHMoaW1hZ2VVcmxzKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG8uYmUuYW4oJ2FycmF5Jyk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50by5oYXZlLmxlbmd0aE9mKDIpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdFswXSkudG8uZXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbS9pbWFnZTEuanBnJyk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0WzFdKS50by5lcXVhbCgnaHR0cDovL2V4YW1wbGUuY29tL2ltYWdlMi5qcGcnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICBpdCgn5bqU6K+l5q2j56Gu5aSE55CG5Y+M6YeN6L2s5LmJ55qESlNPTuWtl+espuS4sicsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlVXJscyA9ICdbXFxcImh0dHA6Ly9leGFtcGxlLmNvbS9pbWFnZTEuanBnXFxcIixcXFwiaHR0cDovL2V4YW1wbGUuY29tL2ltYWdlMi5qcGdcXFwiXSc7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzSW1hZ2VVcmxzKGltYWdlVXJscyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvLmJlLmFuKCdhcnJheScpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG8uaGF2ZS5sZW5ndGhPZigyKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHRbMF0pLnRvLmVxdWFsKCdodHRwOi8vZXhhbXBsZS5jb20vaW1hZ2UxLmpwZycpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdFsxXSkudG8uZXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbS9pbWFnZTIuanBnJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgaXQoJ+W6lOivpeato+ehruWkhOeQhumAl+WPt+WIhumalOeahFVSTOWtl+espuS4sicsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlVXJscyA9ICdodHRwOi8vZXhhbXBsZS5jb20vaW1hZ2UxLmpwZywgaHR0cDovL2V4YW1wbGUuY29tL2ltYWdlMi5qcGcnO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcHJvY2Vzc0ltYWdlVXJscyhpbWFnZVVybHMpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50by5iZS5hbignYXJyYXknKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvLmhhdmUubGVuZ3RoT2YoMik7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0WzBdKS50by5lcXVhbCgnaHR0cDovL2V4YW1wbGUuY29tL2ltYWdlMS5qcGcnKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHRbMV0pLnRvLmVxdWFsKCdodHRwOi8vZXhhbXBsZS5jb20vaW1hZ2UyLmpwZycpO1xuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIGl0KCflupTor6XmraPnoa7lpITnkIbljZXkuKpVUkzlrZfnrKbkuLInLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbWFnZVVybHMgPSAnaHR0cDovL2V4YW1wbGUuY29tL2ltYWdlMS5qcGcnO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcHJvY2Vzc0ltYWdlVXJscyhpbWFnZVVybHMpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50by5iZS5hbignYXJyYXknKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvLmhhdmUubGVuZ3RoT2YoMSk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0WzBdKS50by5lcXVhbCgnaHR0cDovL2V4YW1wbGUuY29tL2ltYWdlMS5qcGcnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICBpdCgn5bqU6K+l5q2j56Gu5aSE55CGVVJM5pWw57uEJywgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VVcmxzID0gWydodHRwOi8vZXhhbXBsZS5jb20vaW1hZ2UxLmpwZycsICdodHRwOi8vZXhhbXBsZS5jb20vaW1hZ2UyLmpwZyddO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcHJvY2Vzc0ltYWdlVXJscyhpbWFnZVVybHMpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50by5iZS5hbignYXJyYXknKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvLmhhdmUubGVuZ3RoT2YoMik7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0WzBdKS50by5lcXVhbCgnaHR0cDovL2V4YW1wbGUuY29tL2ltYWdlMS5qcGcnKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHRbMV0pLnRvLmVxdWFsKCdodHRwOi8vZXhhbXBsZS5jb20vaW1hZ2UyLmpwZycpO1xuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIGl0KCflupTor6Xov4fmu6Tmjonml6DmlYjnmoRVUkwnLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbWFnZVVybHMgPSBbJ2h0dHA6Ly9leGFtcGxlLmNvbS9pbWFnZTEuanBnJywgJ25vdC1hLXVybCcsICdmdHA6Ly9pbnZhbGlkLmNvbS9pbWFnZS5qcGcnXTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb2Nlc3NJbWFnZVVybHMoaW1hZ2VVcmxzKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG8uYmUuYW4oJ2FycmF5Jyk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50by5oYXZlLmxlbmd0aE9mKDEpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdFswXSkudG8uZXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbS9pbWFnZTEuanBnJyk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIOa1i+ivleaQnOe0ouWPguaVsOWkhOeQhumAu+i+kVxuICAgIGRlc2NyaWJlKCfmkJzntKLlj4LmlbDlpITnkIbpgLvovpEnLCAoKSA9PiB7XG4gICAgICAgIGl0KCflupTor6XkvJjlhYjkvb/nlKhrZXl3b3Jk5Y+C5pWwJywgKCkgPT4ge1xuICAgICAgICAgICAgLy8g5qih5ouf5pCc57Si5Y+C5pWw5aSE55CGXG4gICAgICAgICAgICBjb25zdCBoYW5kbGVTZWFyY2hQYXJhbXMgPSAoc2VhcmNoLCBrZXl3b3JkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgfHwgc2VhcmNoO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgZXhwZWN0KGhhbmRsZVNlYXJjaFBhcmFtcygnc2VhcmNoLXZhbHVlJywgJ2tleXdvcmQtdmFsdWUnKSkudG8uZXF1YWwoJ2tleXdvcmQtdmFsdWUnKTtcbiAgICAgICAgICAgIGV4cGVjdChoYW5kbGVTZWFyY2hQYXJhbXMoJ3NlYXJjaC12YWx1ZScsICcnKSkudG8uZXF1YWwoJ3NlYXJjaC12YWx1ZScpO1xuICAgICAgICAgICAgZXhwZWN0KGhhbmRsZVNlYXJjaFBhcmFtcygnJywgJ2tleXdvcmQtdmFsdWUnKSkudG8uZXF1YWwoJ2tleXdvcmQtdmFsdWUnKTtcbiAgICAgICAgICAgIGV4cGVjdChoYW5kbGVTZWFyY2hQYXJhbXMoJycsICcnKSkudG8uZXF1YWwoJycpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn0pOyJdLCJtYXBwaW5ncyI6IjhtVkFlWTtBQUFBQSxjQUFBLFNBQUFBLENBQUEsU0FBQUMsY0FBQSxXQUFBQSxjQUFBLEVBQUFELGNBQUEsR0FmWixLQUFNLENBQUFFLE1BQU0sRUFBQUYsY0FBQSxHQUFBRyxDQUFBLE1BQUdDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQ0YsTUFBTSxFQUVyQztBQUFBRixjQUFBLEdBQUFHLENBQUEsTUFDQUUsUUFBUSxDQUFDLGFBQWEsQ0FBRSxJQUFNLENBQUFMLGNBQUEsR0FBQU0sQ0FBQSxNQUFBTixjQUFBLEdBQUFHLENBQUEsTUFDMUI7QUFDQUUsUUFBUSxDQUFDLFdBQVcsQ0FBRSxJQUFNLENBQUFMLGNBQUEsR0FBQU0sQ0FBQSxNQUN4QjtBQUNBLFFBQVMsQ0FBQUMsZ0JBQWdCQSxDQUFDQyxTQUFTLENBQUUsQ0FBQVIsY0FBQSxHQUFBTSxDQUFBLE1BQ2pDLEdBQUksQ0FBQUcsYUFBYSxFQUFBVCxjQUFBLEdBQUFHLENBQUEsTUFBRyxFQUFFLEVBQUNILGNBQUEsR0FBQUcsQ0FBQSxNQUV2QixHQUFJSyxTQUFTLENBQUUsQ0FBQVIsY0FBQSxHQUFBVSxDQUFBLFNBQUFWLGNBQUEsR0FBQUcsQ0FBQSxNQUNYLEdBQUksTUFBTyxDQUFBSyxTQUFTLEdBQUssUUFBUSxDQUFFLENBQUFSLGNBQUEsR0FBQVUsQ0FBQSxTQUFBVixjQUFBLEdBQUFHLENBQUEsTUFDL0I7QUFDQSxHQUFJLENBQ0EsR0FBSSxDQUFBUSxZQUFZLEVBQUFYLGNBQUEsR0FBQUcsQ0FBQSxNQUFHUyxJQUFJLENBQUNDLEtBQUssQ0FBQ0wsU0FBUyxDQUFDLEVBRXhDO0FBQUFSLGNBQUEsR0FBQUcsQ0FBQSxNQUNBLEdBQUksQ0FBQUgsY0FBQSxHQUFBVSxDQUFBLGVBQU8sQ0FBQUMsWUFBWSxHQUFLLFFBQVEsSUFDL0IsQ0FBQVgsY0FBQSxHQUFBVSxDQUFBLFNBQUFD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