mihari 5.5.0 → 5.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/docs/analyzers/binaryedge.md +1 -1
  3. data/docs/analyzers/censys.md +1 -1
  4. data/docs/analyzers/circl.md +1 -1
  5. data/docs/analyzers/crtsh.md +1 -1
  6. data/docs/analyzers/dnstwister.md +1 -1
  7. data/docs/analyzers/greynoise.md +1 -1
  8. data/docs/analyzers/hunterhow.md +1 -1
  9. data/docs/analyzers/index.md +29 -15
  10. data/docs/analyzers/onyphe.md +1 -1
  11. data/docs/analyzers/otx.md +2 -2
  12. data/docs/analyzers/passivetotal.md +6 -2
  13. data/docs/analyzers/pulsedive.md +2 -2
  14. data/docs/analyzers/securitytrails.md +6 -2
  15. data/docs/analyzers/shodan.md +1 -1
  16. data/docs/analyzers/urlscan.md +3 -3
  17. data/docs/analyzers/virustotal.md +6 -2
  18. data/docs/analyzers/virustotal_intelligence.md +8 -4
  19. data/docs/analyzers/zoomeye.md +5 -0
  20. data/docs/emitters/hive.md +1 -1
  21. data/docs/emitters/slack.md +0 -5
  22. data/docs/enrichers/google_public_dns.md +1 -1
  23. data/docs/enrichers/ipinfo.md +2 -2
  24. data/docs/enrichers/shodan.md +4 -4
  25. data/docs/enrichers/whois.md +1 -1
  26. data/docs/rule.md +1 -4
  27. data/docs/usage.md +5 -2
  28. data/frontend/package-lock.json +3 -3
  29. data/frontend/src/components/ErrorMessage.vue +0 -1
  30. data/frontend/src/components/alert/Alerts.vue +0 -1
  31. data/frontend/src/components/alert/AlertsWithPagination.vue +0 -1
  32. data/frontend/src/components/alert/AlertsWrapper.vue +0 -6
  33. data/frontend/src/components/alert/Form.vue +1 -3
  34. data/frontend/src/components/artifact/Artifact.vue +0 -17
  35. data/frontend/src/components/artifact/ArtifactWrapper.vue +0 -2
  36. data/frontend/src/components/artifact/WhoisRecord.vue +0 -3
  37. data/frontend/src/components/config/ConfigsWrapper.vue +0 -2
  38. data/frontend/src/components/rule/EditRule.vue +0 -3
  39. data/frontend/src/components/rule/EditRuleWrapper.vue +0 -2
  40. data/frontend/src/components/rule/Form.vue +1 -3
  41. data/frontend/src/components/rule/NewRule.vue +0 -3
  42. data/frontend/src/components/rule/Rule.vue +1 -7
  43. data/frontend/src/components/rule/RuleWrapper.vue +0 -2
  44. data/frontend/src/components/rule/RulesWrapper.vue +0 -6
  45. data/frontend/src/swagger.yaml +254 -254
  46. data/lib/mihari/analyzers/base.rb +4 -41
  47. data/lib/mihari/analyzers/circl.rb +1 -1
  48. data/lib/mihari/analyzers/crtsh.rb +1 -1
  49. data/lib/mihari/analyzers/dnstwister.rb +1 -1
  50. data/lib/mihari/analyzers/otx.rb +1 -1
  51. data/lib/mihari/analyzers/passivetotal.rb +10 -1
  52. data/lib/mihari/analyzers/pulsedive.rb +2 -2
  53. data/lib/mihari/analyzers/rule.rb +24 -59
  54. data/lib/mihari/analyzers/securitytrails.rb +10 -1
  55. data/lib/mihari/analyzers/virustotal.rb +11 -2
  56. data/lib/mihari/analyzers/virustotal_intelligence.rb +16 -0
  57. data/lib/mihari/analyzers/zoomeye.rb +2 -2
  58. data/lib/mihari/base.rb +69 -0
  59. data/lib/mihari/cli/main.rb +36 -0
  60. data/lib/mihari/clients/base.rb +2 -2
  61. data/lib/mihari/clients/binaryedge.rb +3 -5
  62. data/lib/mihari/clients/censys.rb +3 -3
  63. data/lib/mihari/clients/circl.rb +5 -4
  64. data/lib/mihari/clients/crtsh.rb +3 -2
  65. data/lib/mihari/clients/dnstwister.rb +3 -2
  66. data/lib/mihari/clients/greynoise.rb +2 -2
  67. data/lib/mihari/clients/hunterhow.rb +2 -2
  68. data/lib/mihari/clients/misp.rb +1 -1
  69. data/lib/mihari/clients/onyphe.rb +2 -2
  70. data/lib/mihari/clients/otx.rb +4 -3
  71. data/lib/mihari/clients/passivetotal.rb +5 -4
  72. data/lib/mihari/clients/publsedive.rb +4 -3
  73. data/lib/mihari/clients/securitytrails.rb +5 -3
  74. data/lib/mihari/clients/shodan.rb +2 -2
  75. data/lib/mihari/clients/the_hive.rb +1 -1
  76. data/lib/mihari/clients/urlscan.rb +4 -4
  77. data/lib/mihari/clients/virustotal.rb +2 -2
  78. data/lib/mihari/clients/zoomeye.rb +2 -2
  79. data/lib/mihari/commands/alert.rb +6 -33
  80. data/lib/mihari/commands/rule.rb +7 -12
  81. data/lib/mihari/commands/search.rb +10 -38
  82. data/lib/mihari/constants.rb +3 -3
  83. data/lib/mihari/emitters/base.rb +3 -33
  84. data/lib/mihari/emitters/database.rb +1 -1
  85. data/lib/mihari/enrichers/base.rb +2 -33
  86. data/lib/mihari/enrichers/google_public_dns.rb +9 -0
  87. data/lib/mihari/schemas/analyzer.rb +24 -24
  88. data/lib/mihari/schemas/emitter.rb +6 -13
  89. data/lib/mihari/schemas/enricher.rb +4 -11
  90. data/lib/mihari/schemas/options.rb +27 -0
  91. data/lib/mihari/schemas/rule.rb +2 -2
  92. data/lib/mihari/services/alert_runner.rb +1 -1
  93. data/lib/mihari/services/rule_runner.rb +1 -11
  94. data/lib/mihari/types.rb +1 -14
  95. data/lib/mihari/version.rb +1 -1
  96. data/lib/mihari/web/public/assets/{index-33165282.css → index-56fc2187.css} +1 -1
  97. data/lib/mihari/web/public/assets/{index-b5d817a3.js → index-9cc489e6.js} +2 -2
  98. data/lib/mihari/web/public/index.html +2 -2
  99. data/lib/mihari.rb +67 -37
  100. data/mihari.gemspec +1 -0
  101. data/mkdocs.yml +0 -3
  102. metadata +20 -4
@@ -775,7 +775,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
775
775
  * @author Chen, Yi-Cyuan [emn178@gmail.com]
776
776
  * @copyright Chen, Yi-Cyuan 2014-2023
777
777
  * @license MIT
778
- */(function(e){(function(){var t="input is invalid type",n=typeof window=="object",i=n?window:{};i.JS_SHA256_NO_WINDOW&&(n=!1);var p=!n&&typeof self=="object",u=!i.JS_SHA256_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;u?i=Fn:p&&(i=self);var d=!i.JS_SHA256_NO_COMMON_JS&&!0&&e.exports,g=!i.JS_SHA256_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",s="0123456789abcdef".split(""),h=[-2147483648,8388608,32768,128],o=[24,16,8,0],r=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],l=["hex","array","digest","arrayBuffer"],c=[];(i.JS_SHA256_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function($){return Object.prototype.toString.call($)==="[object Array]"}),g&&(i.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function($){return typeof $=="object"&&$.buffer&&$.buffer.constructor===ArrayBuffer});var a=function($,L){return function(x){return new R(L,!0).update(x)[$]()}},f=function($){var L=a("hex",$);u&&(L=m(L,$)),L.create=function(){return new R($)},L.update=function(M){return L.create().update(M)};for(var x=0;x<l.length;++x){var k=l[x];L[k]=a(k,$)}return L},m=function($,L){var x=$u,k=$u.Buffer,M=L?"sha224":"sha256",w;k.from&&!i.JS_SHA256_NO_BUFFER_FROM?w=k.from:w=function(_){return new k(_)};var A=function(_){if(typeof _=="string")return x.createHash(M).update(_,"utf8").digest("hex");if(_==null)throw new Error(t);return _.constructor===ArrayBuffer&&(_=new Uint8Array(_)),Array.isArray(_)||ArrayBuffer.isView(_)||_.constructor===k?x.createHash(M).update(w(_)).digest("hex"):$(_)};return A},v=function($,L){return function(x,k){return new C(x,L,!0).update(k)[$]()}},y=function($){var L=v("hex",$);L.create=function(M){return new C(M,$)},L.update=function(M,w){return L.create(M).update(w)};for(var x=0;x<l.length;++x){var k=l[x];L[k]=v(k,$)}return L};function R($,L){L?(c[0]=c[16]=c[1]=c[2]=c[3]=c[4]=c[5]=c[6]=c[7]=c[8]=c[9]=c[10]=c[11]=c[12]=c[13]=c[14]=c[15]=0,this.blocks=c):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],$?(this.h0=3238371032,this.h1=914150663,this.h2=812702999,this.h3=4144912697,this.h4=4290775857,this.h5=1750603025,this.h6=1694076839,this.h7=3204075428):(this.h0=1779033703,this.h1=3144134277,this.h2=1013904242,this.h3=2773480762,this.h4=1359893119,this.h5=2600822924,this.h6=528734635,this.h7=1541459225),this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0,this.is224=$}R.prototype.update=function($){if(!this.finalized){var L,x=typeof $;if(x!=="string"){if(x==="object"){if($===null)throw new Error(t);if(g&&$.constructor===ArrayBuffer)$=new Uint8Array($);else if(!Array.isArray($)&&(!g||!ArrayBuffer.isView($)))throw new Error(t)}else throw new Error(t);L=!0}for(var k,M=0,w,A=$.length,_=this.blocks;M<A;){if(this.hashed&&(this.hashed=!1,_[0]=this.block,_[16]=_[1]=_[2]=_[3]=_[4]=_[5]=_[6]=_[7]=_[8]=_[9]=_[10]=_[11]=_[12]=_[13]=_[14]=_[15]=0),L)for(w=this.start;M<A&&w<64;++M)_[w>>2]|=$[M]<<o[w++&3];else for(w=this.start;M<A&&w<64;++M)k=$.charCodeAt(M),k<128?_[w>>2]|=k<<o[w++&3]:k<2048?(_[w>>2]|=(192|k>>6)<<o[w++&3],_[w>>2]|=(128|k&63)<<o[w++&3]):k<55296||k>=57344?(_[w>>2]|=(224|k>>12)<<o[w++&3],_[w>>2]|=(128|k>>6&63)<<o[w++&3],_[w>>2]|=(128|k&63)<<o[w++&3]):(k=65536+((k&1023)<<10|$.charCodeAt(++M)&1023),_[w>>2]|=(240|k>>18)<<o[w++&3],_[w>>2]|=(128|k>>12&63)<<o[w++&3],_[w>>2]|=(128|k>>6&63)<<o[w++&3],_[w>>2]|=(128|k&63)<<o[w++&3]);this.lastByteIndex=w,this.bytes+=w-this.start,w>=64?(this.block=_[16],this.start=w-64,this.hash(),this.hashed=!0):this.start=w}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},R.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var $=this.blocks,L=this.lastByteIndex;$[16]=this.block,$[L>>2]|=h[L&3],this.block=$[16],L>=56&&(this.hashed||this.hash(),$[0]=this.block,$[16]=$[1]=$[2]=$[3]=$[4]=$[5]=$[6]=$[7]=$[8]=$[9]=$[10]=$[11]=$[12]=$[13]=$[14]=$[15]=0),$[14]=this.hBytes<<3|this.bytes>>>29,$[15]=this.bytes<<3,this.hash()}},R.prototype.hash=function(){var $=this.h0,L=this.h1,x=this.h2,k=this.h3,M=this.h4,w=this.h5,A=this.h6,_=this.h7,b=this.blocks,E,T,O,I,F,D,W,j,H,U,K;for(E=16;E<64;++E)F=b[E-15],T=(F>>>7|F<<25)^(F>>>18|F<<14)^F>>>3,F=b[E-2],O=(F>>>17|F<<15)^(F>>>19|F<<13)^F>>>10,b[E]=b[E-16]+T+b[E-7]+O<<0;for(K=L&x,E=0;E<64;E+=4)this.first?(this.is224?(j=300032,F=b[0]-1413257819,_=F-150054599<<0,k=F+24177077<<0):(j=704751109,F=b[0]-210244248,_=F-1521486534<<0,k=F+143694565<<0),this.first=!1):(T=($>>>2|$<<30)^($>>>13|$<<19)^($>>>22|$<<10),O=(M>>>6|M<<26)^(M>>>11|M<<21)^(M>>>25|M<<7),j=$&L,I=j^$&x^K,W=M&w^~M&A,F=_+O+W+r[E]+b[E],D=T+I,_=k+F<<0,k=F+D<<0),T=(k>>>2|k<<30)^(k>>>13|k<<19)^(k>>>22|k<<10),O=(_>>>6|_<<26)^(_>>>11|_<<21)^(_>>>25|_<<7),H=k&$,I=H^k&L^j,W=_&M^~_&w,F=A+O+W+r[E+1]+b[E+1],D=T+I,A=x+F<<0,x=F+D<<0,T=(x>>>2|x<<30)^(x>>>13|x<<19)^(x>>>22|x<<10),O=(A>>>6|A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7),U=x&k,I=U^x&$^H,W=A&_^~A&M,F=w+O+W+r[E+2]+b[E+2],D=T+I,w=L+F<<0,L=F+D<<0,T=(L>>>2|L<<30)^(L>>>13|L<<19)^(L>>>22|L<<10),O=(w>>>6|w<<26)^(w>>>11|w<<21)^(w>>>25|w<<7),K=L&x,I=K^L&k^U,W=w&A^~w&_,F=M+O+W+r[E+3]+b[E+3],D=T+I,M=$+F<<0,$=F+D<<0,this.chromeBugWorkAround=!0;this.h0=this.h0+$<<0,this.h1=this.h1+L<<0,this.h2=this.h2+x<<0,this.h3=this.h3+k<<0,this.h4=this.h4+M<<0,this.h5=this.h5+w<<0,this.h6=this.h6+A<<0,this.h7=this.h7+_<<0},R.prototype.hex=function(){this.finalize();var $=this.h0,L=this.h1,x=this.h2,k=this.h3,M=this.h4,w=this.h5,A=this.h6,_=this.h7,b=s[$>>28&15]+s[$>>24&15]+s[$>>20&15]+s[$>>16&15]+s[$>>12&15]+s[$>>8&15]+s[$>>4&15]+s[$&15]+s[L>>28&15]+s[L>>24&15]+s[L>>20&15]+s[L>>16&15]+s[L>>12&15]+s[L>>8&15]+s[L>>4&15]+s[L&15]+s[x>>28&15]+s[x>>24&15]+s[x>>20&15]+s[x>>16&15]+s[x>>12&15]+s[x>>8&15]+s[x>>4&15]+s[x&15]+s[k>>28&15]+s[k>>24&15]+s[k>>20&15]+s[k>>16&15]+s[k>>12&15]+s[k>>8&15]+s[k>>4&15]+s[k&15]+s[M>>28&15]+s[M>>24&15]+s[M>>20&15]+s[M>>16&15]+s[M>>12&15]+s[M>>8&15]+s[M>>4&15]+s[M&15]+s[w>>28&15]+s[w>>24&15]+s[w>>20&15]+s[w>>16&15]+s[w>>12&15]+s[w>>8&15]+s[w>>4&15]+s[w&15]+s[A>>28&15]+s[A>>24&15]+s[A>>20&15]+s[A>>16&15]+s[A>>12&15]+s[A>>8&15]+s[A>>4&15]+s[A&15];return this.is224||(b+=s[_>>28&15]+s[_>>24&15]+s[_>>20&15]+s[_>>16&15]+s[_>>12&15]+s[_>>8&15]+s[_>>4&15]+s[_&15]),b},R.prototype.toString=R.prototype.hex,R.prototype.digest=function(){this.finalize();var $=this.h0,L=this.h1,x=this.h2,k=this.h3,M=this.h4,w=this.h5,A=this.h6,_=this.h7,b=[$>>24&255,$>>16&255,$>>8&255,$&255,L>>24&255,L>>16&255,L>>8&255,L&255,x>>24&255,x>>16&255,x>>8&255,x&255,k>>24&255,k>>16&255,k>>8&255,k&255,M>>24&255,M>>16&255,M>>8&255,M&255,w>>24&255,w>>16&255,w>>8&255,w&255,A>>24&255,A>>16&255,A>>8&255,A&255];return this.is224||b.push(_>>24&255,_>>16&255,_>>8&255,_&255),b},R.prototype.array=R.prototype.digest,R.prototype.arrayBuffer=function(){this.finalize();var $=new ArrayBuffer(this.is224?28:32),L=new DataView($);return L.setUint32(0,this.h0),L.setUint32(4,this.h1),L.setUint32(8,this.h2),L.setUint32(12,this.h3),L.setUint32(16,this.h4),L.setUint32(20,this.h5),L.setUint32(24,this.h6),this.is224||L.setUint32(28,this.h7),$};function C($,L,x){var k,M=typeof $;if(M==="string"){var w=[],A=$.length,_=0,b;for(k=0;k<A;++k)b=$.charCodeAt(k),b<128?w[_++]=b:b<2048?(w[_++]=192|b>>6,w[_++]=128|b&63):b<55296||b>=57344?(w[_++]=224|b>>12,w[_++]=128|b>>6&63,w[_++]=128|b&63):(b=65536+((b&1023)<<10|$.charCodeAt(++k)&1023),w[_++]=240|b>>18,w[_++]=128|b>>12&63,w[_++]=128|b>>6&63,w[_++]=128|b&63);$=w}else if(M==="object"){if($===null)throw new Error(t);if(g&&$.constructor===ArrayBuffer)$=new Uint8Array($);else if(!Array.isArray($)&&(!g||!ArrayBuffer.isView($)))throw new Error(t)}else throw new Error(t);$.length>64&&($=new R(L,!0).update($).array());var E=[],T=[];for(k=0;k<64;++k){var O=$[k]||0;E[k]=92^O,T[k]=54^O}R.call(this,L,x),this.update(T),this.oKeyPad=E,this.inner=!0,this.sharedMemory=x}C.prototype=new R,C.prototype.finalize=function(){if(R.prototype.finalize.call(this),this.inner){this.inner=!1;var $=this.array();R.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update($),R.prototype.finalize.call(this)}};var S=f();S.sha256=S,S.sha224=f(!0),S.sha256.hmac=y(),S.sha224.hmac=y(!0),d?e.exports=S:(i.sha256=S.sha256,i.sha224=S.sha224)})()})(Jd);var FS=Jd.exports,NS=function(t,n){if(n=n.split(":")[0],t=+t,!t)return!1;switch(n){case"http":case"ws":return t!==80;case"https":case"wss":return t!==443;case"ftp":return t!==21;case"gopher":return t!==70;case"file":return!1}return t!==0},kl={},PS=Object.prototype.hasOwnProperty,DS;function _u(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch{return null}}function Cu(e){try{return encodeURIComponent(e)}catch{return null}}function BS(e){for(var t=/([^=?#&]+)=?([^&]*)/g,n={},i;i=t.exec(e);){var p=_u(i[1]),u=_u(i[2]);p===null||u===null||p in n||(n[p]=u)}return n}function WS(e,t){t=t||"";var n=[],i,p;typeof t!="string"&&(t="?");for(p in e)if(PS.call(e,p)){if(i=e[p],!i&&(i===null||i===DS||isNaN(i))&&(i=""),p=Cu(p),i=Cu(i),p===null||i===null)continue;n.push(p+"="+i)}return n.length?t+n.join("&"):""}kl.stringify=WS;kl.parse=BS;var qd=NS,cs=kl,HS=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,ep=/[\n\r\t]/g,US=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,tp=/:\d+$/,zS=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,VS=/^[a-zA-Z]:/;function El(e){return(e||"").toString().replace(HS,"")}var wa=[["#","hash"],["?","query"],function(t,n){return zt(n.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],Su={hash:1,query:1};function np(e){var t;typeof window<"u"?t=window:typeof Fn<"u"?t=Fn:typeof self<"u"?t=self:t={};var n=t.location||{};e=e||n;var i={},p=typeof e,u;if(e.protocol==="blob:")i=new Gt(unescape(e.pathname),{});else if(p==="string"){i=new Gt(e,{});for(u in Su)delete i[u]}else if(p==="object"){for(u in e)u in Su||(i[u]=e[u]);i.slashes===void 0&&(i.slashes=US.test(e.href))}return i}function zt(e){return e==="file:"||e==="ftp:"||e==="http:"||e==="https:"||e==="ws:"||e==="wss:"}function ip(e,t){e=El(e),e=e.replace(ep,""),t=t||{};var n=zS.exec(e),i=n[1]?n[1].toLowerCase():"",p=!!n[2],u=!!n[3],d=0,g;return p?u?(g=n[2]+n[3]+n[4],d=n[2].length+n[3].length):(g=n[2]+n[4],d=n[2].length):u?(g=n[3]+n[4],d=n[3].length):g=n[4],i==="file:"?d>=2&&(g=g.slice(2)):zt(i)?g=n[4]:i?p&&(g=g.slice(2)):d>=2&&zt(t.protocol)&&(g=n[4]),{protocol:i,slashes:p||zt(i),slashesCount:d,rest:g}}function jS(e,t){if(e==="")return t;for(var n=(t||"/").split("/").slice(0,-1).concat(e.split("/")),i=n.length,p=n[i-1],u=!1,d=0;i--;)n[i]==="."?n.splice(i,1):n[i]===".."?(n.splice(i,1),d++):d&&(i===0&&(u=!0),n.splice(i,1),d--);return u&&n.unshift(""),(p==="."||p==="..")&&n.push(""),n.join("/")}function Gt(e,t,n){if(e=El(e),e=e.replace(ep,""),!(this instanceof Gt))return new Gt(e,t,n);var i,p,u,d,g,s,h=wa.slice(),o=typeof t,r=this,l=0;for(o!=="object"&&o!=="string"&&(n=t,t=null),n&&typeof n!="function"&&(n=cs.parse),t=np(t),p=ip(e||"",t),i=!p.protocol&&!p.slashes,r.slashes=p.slashes||i&&t.slashes,r.protocol=p.protocol||t.protocol||"",e=p.rest,(p.protocol==="file:"&&(p.slashesCount!==2||VS.test(e))||!p.slashes&&(p.protocol||p.slashesCount<2||!zt(r.protocol)))&&(h[3]=[/(.*)/,"pathname"]);l<h.length;l++){if(d=h[l],typeof d=="function"){e=d(e,r);continue}u=d[0],s=d[1],u!==u?r[s]=e:typeof u=="string"?(g=u==="@"?e.lastIndexOf(u):e.indexOf(u),~g&&(typeof d[2]=="number"?(r[s]=e.slice(0,g),e=e.slice(g+d[2])):(r[s]=e.slice(g),e=e.slice(0,g)))):(g=u.exec(e))&&(r[s]=g[1],e=e.slice(0,g.index)),r[s]=r[s]||i&&d[3]&&t[s]||"",d[4]&&(r[s]=r[s].toLowerCase())}n&&(r.query=n(r.query)),i&&t.slashes&&r.pathname.charAt(0)!=="/"&&(r.pathname!==""||t.pathname!=="")&&(r.pathname=jS(r.pathname,t.pathname)),r.pathname.charAt(0)!=="/"&&zt(r.protocol)&&(r.pathname="/"+r.pathname),qd(r.port,r.protocol)||(r.host=r.hostname,r.port=""),r.username=r.password="",r.auth&&(g=r.auth.indexOf(":"),~g?(r.username=r.auth.slice(0,g),r.username=encodeURIComponent(decodeURIComponent(r.username)),r.password=r.auth.slice(g+1),r.password=encodeURIComponent(decodeURIComponent(r.password))):r.username=encodeURIComponent(decodeURIComponent(r.auth)),r.auth=r.password?r.username+":"+r.password:r.username),r.origin=r.protocol!=="file:"&&zt(r.protocol)&&r.host?r.protocol+"//"+r.host:"null",r.href=r.toString()}function GS(e,t,n){var i=this;switch(e){case"query":typeof t=="string"&&t.length&&(t=(n||cs.parse)(t)),i[e]=t;break;case"port":i[e]=t,qd(t,i.protocol)?t&&(i.host=i.hostname+":"+t):(i.host=i.hostname,i[e]="");break;case"hostname":i[e]=t,i.port&&(t+=":"+i.port),i.host=t;break;case"host":i[e]=t,tp.test(t)?(t=t.split(":"),i.port=t.pop(),i.hostname=t.join(":")):(i.hostname=t,i.port="");break;case"protocol":i.protocol=t.toLowerCase(),i.slashes=!n;break;case"pathname":case"hash":if(t){var p=e==="pathname"?"/":"#";i[e]=t.charAt(0)!==p?p+t:t}else i[e]=t;break;case"username":case"password":i[e]=encodeURIComponent(t);break;case"auth":var u=t.indexOf(":");~u?(i.username=t.slice(0,u),i.username=encodeURIComponent(decodeURIComponent(i.username)),i.password=t.slice(u+1),i.password=encodeURIComponent(decodeURIComponent(i.password))):i.username=encodeURIComponent(decodeURIComponent(t))}for(var d=0;d<wa.length;d++){var g=wa[d];g[4]&&(i[g[1]]=i[g[1]].toLowerCase())}return i.auth=i.password?i.username+":"+i.password:i.username,i.origin=i.protocol!=="file:"&&zt(i.protocol)&&i.host?i.protocol+"//"+i.host:"null",i.href=i.toString(),i}function KS(e){(!e||typeof e!="function")&&(e=cs.stringify);var t,n=this,i=n.host,p=n.protocol;p&&p.charAt(p.length-1)!==":"&&(p+=":");var u=p+(n.protocol&&n.slashes||zt(n.protocol)?"//":"");return n.username?(u+=n.username,n.password&&(u+=":"+n.password),u+="@"):n.password?(u+=":"+n.password,u+="@"):n.protocol!=="file:"&&zt(n.protocol)&&!i&&n.pathname!=="/"&&(u+="@"),(i[i.length-1]===":"||tp.test(n.hostname)&&!n.port)&&(i+=":"),u+=i+n.pathname,t=typeof n.query=="object"?e(n.query):n.query,t&&(u+=t.charAt(0)!=="?"?"?"+t:t),n.hash&&(u+=n.hash),u}Gt.prototype={set:GS,toString:KS};Gt.extractProtocol=ip;Gt.location=np;Gt.trimLeft=El;Gt.qs=cs;var YS=Gt;const XS=un(YS);class us extends Lt{constructor(){super();Le(this,"baseURL");Le(this,"name");Le(this,"type");this.name="VirusTotal",this.baseURL="https://www.virustotal.com",this.type="domain"}}class ZS extends us{constructor(){super(),this.type="domain"}href(t){return this.baseURL+`/gui/domain/${t}/detection`}}class QS extends us{constructor(){super(),this.type="ip"}href(t){return this.baseURL+`/gui/ip-address/${t}/details`}}class JS extends us{constructor(){super(),this.type="url"}href(t){const n=FS.sha256(this.normalizeURL(t));return this.baseURL+`/gui/url/${n}/details`}normalizeURL(t){return new XS(t).pathname==="/"&&!t.endsWith("/")?`${t}/`:t}}class qS extends us{constructor(){super(),this.type="hash"}href(t){return this.baseURL+`/gui/file/${t}/details`}}const eA=[new bS,new wS,new $S,new CS,new _S,new SS,new AS,new xS,new Zd,new kS,new ES,new RS,new LS,new TS,new MS,new ZS,new qS,new QS,new JS],tA=$e({name:"LinksItem",components:{LinkComponent:yS},props:{data:{type:String,required:!0},type:{type:String,required:!0}},setup(e){const t=eA;return{selectedLinks:Ee(()=>e.type===void 0?t:t.filter(i=>i.type===e.type))}}}),nA={class:"tags are-medium"};function iA(e,t,n,i,p,u){const d=ue("LinkComponent");return q(),oe("div",nA,[(q(!0),oe(Se,null,ct(e.selectedLinks,g=>(q(),Me(d,{data:e.data,link:g,key:g.name},null,8,["data","link"]))),128))])}const rA=xe(tA,[["render",iA]]),oA=$e({name:"ArtifactItem",props:{artifact:{type:Object,required:!0}},components:{Alerts:Yd,AS:CC,DnsRecords:FC,Links:rA,Loading:fn,ReverseDnsNames:zC,Tags:KC,VueJsonPretty:Kd,WhoisRecord:dS,CPEs:kC,Ports:BC},emits:["refresh"],setup(e,t){const n=Te(void 0),i=Te(void 0),p=Te(!1),u=Oi(),d=Ee(()=>{if(e.artifact.dataType==="domain")return`https://urlscan.io/liveshot/?url=${`http://${e.artifact.data}`}`;if(e.artifact.dataType==="url")return`https://urlscan.io/liveshot/?url=${e.artifact.data}`}),g=f=>{if(f!==void 0)return`https://maps.google.co.jp/maps?output=embed&q=${f.lat},${f.long}&z=3`},s=z1(),h=Al(),o=Nd(),r=H1(),l=async()=>{window.confirm(`Are you sure you want to delete ${e.artifact.data}?`)&&(await o.perform(e.artifact.id),u.push("/"))},c=async()=>{await r.perform(e.artifact.id),t.emit("refresh")};return nt(async()=>{if(e.artifact.dataType==="ip"){let f;if(e.artifact.geolocation===null){const m=await s.perform(e.artifact.data);f=$$(m),i.value=m.countryCode}else f=zd(e.artifact.geolocation.countryCode);n.value=g(f)}}),{countryCode:i,enrichArtifactTask:r,getAlertsTask:h,googleMapSrc:n,showMetadata:p,urlscanLiveshotSrc:d,deleteArtifact:l,enrichArtifact:c,flipShowMetadata:()=>{p.value=!p.value}}}});const Ze=e=>(Qa("data-v-3bbfb14d"),e=e(),Ja(),e),sA={class:"column"},aA={key:0},lA=Ze(()=>P("hr",null,null,-1)),cA=Ze(()=>P("h2",{class:"is-size-2 mb-4"},"Artifact",-1)),uA={class:"columns"},hA={key:0,class:"column is-half"},fA={key:0},dA={class:"is-size-4 mb-2"},pA={class:"has-text-grey"},gA=["src"],mA={key:1},vA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},[et(" Live screenshot "),P("span",{class:"has-text-grey"},"Hover to expand")],-1)),yA=["src"],bA={class:"column"},wA={class:"block"},$A=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"Information",-1)),_A={class:"table is-fullwidth is-completely-borderless"},CA=Ze(()=>P("th",null,"ID",-1)),SA={class:"buttons is-pulled-right"},AA=Ze(()=>P("span",null,"Enrich",-1)),xA={class:"icon is-small"},kA=Ze(()=>P("span",null,"Metadata",-1)),EA={class:"icon is-small"},RA=Ze(()=>P("span",null,"Delete",-1)),LA={class:"icon is-small"},TA=Ze(()=>P("th",null,"Data type",-1)),MA=Ze(()=>P("th",null,"Data",-1)),OA=Ze(()=>P("th",null,"Source",-1)),IA={key:0},FA=Ze(()=>P("th",null,"Tags",-1)),NA={key:0},PA={class:"modal is-active"},DA={class:"modal-card"},BA={class:"modal-card-head"},WA=Ze(()=>P("p",{class:"modal-card-title"},"Metadata",-1)),HA={class:"modal-card-body"},UA={key:1,class:"block"},zA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"AS",-1)),VA={key:2,class:"block"},jA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"Reverse DNS",-1)),GA={key:3,class:"block"},KA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"DNS records",-1)),YA={key:4,class:"block"},XA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"CPEs",-1)),ZA={key:5,class:"block"},QA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"Ports",-1)),JA={key:6,class:"block"},qA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"Whois record",-1)),e2={class:"block"},t2=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"Links",-1)),n2=Ze(()=>P("hr",null,null,-1)),i2={class:"column"},r2=Ze(()=>P("h2",{class:"is-size-2 mb-4"},"Related alerts",-1));function o2(e,t,n,i,p,u){var y;const d=ue("Loading"),g=ue("font-awesome-icon"),s=ue("Tags"),h=ue("VueJsonPretty"),o=ue("AS"),r=ue("ReverseDnsNames"),l=ue("DnsRecords"),c=ue("CPEs"),a=ue("Ports"),f=ue("WhoisRecord"),m=ue("Links"),v=ue("Alerts");return q(),oe(Se,null,[P("div",sA,[e.enrichArtifactTask.isRunning?(q(),oe("div",aA,[he(d),lA])):we("",!0),cA,P("div",uA,[e.googleMapSrc!==void 0||e.urlscanLiveshotSrc!==void 0?(q(),oe("div",hA,[e.googleMapSrc?(q(),oe("div",fA,[P("h4",dA,[et(" Geolocation "),P("span",pA,Ae(e.countryCode||((y=e.artifact.geolocation)==null?void 0:y.countryCode)),1)]),P("iframe",{class:"mb-4",src:e.googleMapSrc,width:"100%",height:"240px"},null,8,gA)])):we("",!0),e.urlscanLiveshotSrc?(q(),oe("div",mA,[vA,P("img",{src:e.urlscanLiveshotSrc,class:"liveshot",alt:"liveshot"},null,8,yA)])):we("",!0)])):we("",!0),P("div",bA,[P("div",wA,[$A,P("table",_A,[P("tr",null,[CA,P("td",null,[et(Ae(e.artifact.id)+" ",1),P("span",SA,[P("button",{class:"button is-primary is-light is-small",onClick:t[0]||(t[0]=(...R)=>e.enrichArtifact&&e.enrichArtifact(...R))},[AA,P("span",xA,[he(g,{icon:"lightbulb"})])]),e.artifact.metadata?(q(),oe("button",{key:0,class:"button is-info is-light is-small",onClick:t[1]||(t[1]=(...R)=>e.flipShowMetadata&&e.flipShowMetadata(...R))},[kA,P("span",EA,[he(g,{icon:"info-circle"})])])):we("",!0),P("button",{class:"button is-light is-small",onClick:t[2]||(t[2]=(...R)=>e.deleteArtifact&&e.deleteArtifact(...R))},[RA,P("span",LA,[he(g,{icon:"times"})])])])])]),P("tr",null,[TA,P("td",null,Ae(e.artifact.dataType),1)]),P("tr",null,[MA,P("td",null,Ae(e.artifact.data),1)]),P("tr",null,[OA,P("td",null,Ae(e.artifact.source),1)]),e.artifact.tags.length>0?(q(),oe("tr",IA,[FA,P("td",null,[he(s,{tags:e.artifact.tags},null,8,["tags"])])])):we("",!0)])]),e.artifact.metadata&&e.showMetadata?(q(),oe("div",NA,[P("div",PA,[P("div",{class:"modal-background",onClick:t[3]||(t[3]=(...R)=>e.flipShowMetadata&&e.flipShowMetadata(...R))}),P("div",DA,[P("header",BA,[WA,P("button",{class:"delete","aria-label":"close",onClick:t[4]||(t[4]=(...R)=>e.flipShowMetadata&&e.flipShowMetadata(...R))})]),P("section",HA,[he(h,{data:e.artifact.metadata},null,8,["data"])])])])])):we("",!0)])]),e.artifact.autonomousSystem?(q(),oe("div",UA,[zA,he(o,{autonomousSystem:e.artifact.autonomousSystem},null,8,["autonomousSystem"])])):we("",!0),e.artifact.reverseDnsNames?(q(),oe("div",VA,[jA,he(r,{reverseDnsNames:e.artifact.reverseDnsNames},null,8,["reverseDnsNames"])])):we("",!0),e.artifact.dnsRecords?(q(),oe("div",GA,[KA,he(l,{dnsRecords:e.artifact.dnsRecords},null,8,["dnsRecords"])])):we("",!0),e.artifact.cpes?(q(),oe("div",YA,[XA,he(c,{cpes:e.artifact.cpes},null,8,["cpes"])])):we("",!0),e.artifact.ports?(q(),oe("div",ZA,[QA,he(a,{ports:e.artifact.ports},null,8,["ports"])])):we("",!0),e.artifact.whoisRecord?(q(),oe("div",JA,[qA,he(f,{whoisRecord:e.artifact.whoisRecord},null,8,["whoisRecord"])])):we("",!0),P("div",e2,[t2,he(m,{data:e.artifact.data,type:e.artifact.dataType},null,8,["data","type"])])]),n2,P("div",i2,[r2,he(v,{artifact:e.artifact.data},null,8,["artifact"])])],64)}const s2=xe(oA,[["render",o2],["__scopeId","data-v-3bbfb14d"]]),a2=$e({name:"ArtifactWrapper",components:{ArtifactComponent:s2,Loading:fn,ErrorMessage:hn},props:{id:{type:String,required:!0}},setup(e){const t=W1(),n=async()=>{await t.perform(e.id)},i=async()=>{await n()};return nt(async()=>{await n()}),Ye(e,async()=>{await n()}),{getArtifactTask:t,refresh:i}}});function l2(e,t,n,i,p,u){var h,o;const d=ue("Loading"),g=ue("ErrorMessage"),s=ue("ArtifactComponent");return q(),oe(Se,null,[e.getArtifactTask.isRunning?(q(),Me(d,{key:0})):we("",!0),e.getArtifactTask.isError?(q(),Me(g,{key:1,error:(h=e.getArtifactTask.last)==null?void 0:h.error},null,8,["error"])):we("",!0),(o=e.getArtifactTask.last)!=null&&o.value?(q(),Me(s,{key:2,artifact:e.getArtifactTask.last.value,onRefresh:e.refresh},null,8,["artifact","onRefresh"])):we("",!0)],64)}const c2=xe(a2,[["render",l2]]),u2=$e({name:"ArtifactView",components:{Artifact:c2},props:{id:{type:String,required:!0}},setup(e){const t=()=>{ii(`Artifact:${e.id} - Mihari`)};nt(()=>{t()}),Ye(()=>e.id,()=>{t()})}});function h2(e,t,n,i,p,u){const d=ue("Artifact",!0);return q(),Me(d,{id:e.id},null,8,["id"])}const f2=xe(u2,[["render",h2]]),d2=$e({name:"ConfigsItem",props:{configs:{type:Array,required:!0}}}),p2={class:"box"},g2={class:"table-container"},m2={class:"table is-fullwidth"},v2=P("thead",null,[P("tr",null,[P("th",null,"Name"),P("th",null,"Type"),P("th",null,"Configured"),P("th",null,"Key-value(s)")])],-1),y2={key:0,class:"button is-success is-small ml-1"},b2={class:"icon is-small"},w2=P("span",null,"Yes",-1),$2={key:1,class:"button is-warning is-small ml-1"},_2={class:"icon is-small"},C2=P("span",null,"No",-1),S2={key:0},A2={key:1};function x2(e,t,n,i,p,u){const d=ue("font-awesome-icon");return q(),oe("div",p2,[P("div",g2,[P("table",m2,[v2,P("tbody",null,[(q(!0),oe(Se,null,ct(e.configs,g=>(q(),oe("tr",{key:g.name},[P("td",null,Ae(g.name),1),P("td",null,Ae(g.type),1),P("td",null,[g.isConfigured?(q(),oe("button",y2,[P("span",b2,[he(d,{icon:"check"})]),w2])):(q(),oe("button",$2,[P("span",_2,[he(d,{icon:"exclamation"})]),C2]))]),P("td",null,[P("ul",null,[(q(!0),oe(Se,null,ct(g.values,(s,h)=>(q(),oe("li",{key:h},[P("strong",null,Ae(s.key),1),et(": "),s.value?(q(),oe("code",S2,Ae(s.value),1)):(q(),oe("span",A2,"N/A"))]))),128))])])]))),128))])])])])}const k2=xe(d2,[["render",x2]]),E2=$e({name:"ConfigsWrapper",components:{Configs:k2,Loading:fn,ErrorMessage:hn},setup(){const e=U1();return nt(async()=>{await e.perform()}),{getConfigsTask:e}}});function R2(e,t,n,i,p,u){var h,o;const d=ue("Loading"),g=ue("ErrorMessage"),s=ue("Configs");return q(),oe(Se,null,[e.getConfigsTask.isRunning?(q(),Me(d,{key:0})):we("",!0),e.getConfigsTask.isError?(q(),Me(g,{key:1,error:(h=e.getConfigsTask.last)==null?void 0:h.error},null,8,["error"])):we("",!0),(o=e.getConfigsTask.last)!=null&&o.value?(q(),Me(s,{key:2,configs:e.getConfigsTask.last.value},null,8,["configs"])):we("",!0)],64)}const L2=xe(E2,[["render",R2]]),T2=$e({name:"ConfigView",components:{Configs:L2},setup(){ii("Config - Mihari")}});function M2(e,t,n,i,p,u){const d=ue("Configs",!0);return q(),Me(d)}const O2=xe(T2,[["render",M2]]);var rp={exports:{}};(function(e,t){(function(){var n="ace",i=function(){return this}();!i&&typeof window<"u"&&(i=window);var p=function(o,r,l){if(typeof o!="string"){p.original?p.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(l=r),p.modules[o]||(p.payloads[o]=l,p.modules[o]=null)};p.modules={},p.payloads={};var u=function(o,r,l){if(typeof r=="string"){var c=s(o,r);if(c!=null)return l&&l(),c}else if(Object.prototype.toString.call(r)==="[object Array]"){for(var a=[],f=0,m=r.length;f<m;++f){var v=s(o,r[f]);if(v==null&&d.original)return;a.push(v)}return l&&l.apply(null,a)||!0}},d=function(o,r){var l=u("",o,r);return l==null&&d.original?d.original.apply(this,arguments):l},g=function(o,r){if(r.indexOf("!")!==-1){var l=r.split("!");return g(o,l[0])+"!"+g(o,l[1])}if(r.charAt(0)=="."){var c=o.split("/").slice(0,-1).join("/");for(r=c+"/"+r;r.indexOf(".")!==-1&&a!=r;){var a=r;r=r.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return r},s=function(o,r){r=g(o,r);var l=p.modules[r];if(!l){if(l=p.payloads[r],typeof l=="function"){var c={},a={id:r,uri:"",exports:c,packaged:!0},f=function(v,y){return u(r,v,y)},m=l(f,c,a);c=m||a.exports,p.modules[r]=c,delete p.payloads[r]}l=p.modules[r]=c||l}return l};function h(o){var r=i;o&&(i[o]||(i[o]={}),r=i[o]),(!r.define||!r.define.packaged)&&(p.original=r.define,r.define=p,r.define.packaged=!0),(!r.require||!r.require.packaged)&&(d.original=r.require,r.require=d,r.require.packaged=!0)}h(n)})(),ace.define("ace/lib/es6-shim",["require","exports","module"],function(n,i,p){function u(d,g,s){Object.defineProperty(d,g,{value:s,enumerable:!1,writable:!0,configurable:!0})}String.prototype.startsWith||u(String.prototype,"startsWith",function(d,g){return g=g||0,this.lastIndexOf(d,g)===g}),String.prototype.endsWith||u(String.prototype,"endsWith",function(d,g){var s=this;(g===void 0||g>s.length)&&(g=s.length),g-=d.length;var h=s.indexOf(d,g);return h!==-1&&h===g}),String.prototype.repeat||u(String.prototype,"repeat",function(d){for(var g="",s=this;d>0;)d&1&&(g+=s),(d>>=1)&&(s+=s);return g}),String.prototype.includes||u(String.prototype,"includes",function(d,g){return this.indexOf(d,g)!=-1}),Object.assign||(Object.assign=function(d){if(d==null)throw new TypeError("Cannot convert undefined or null to object");for(var g=Object(d),s=1;s<arguments.length;s++){var h=arguments[s];h!=null&&Object.keys(h).forEach(function(o){g[o]=h[o]})}return g}),Object.values||(Object.values=function(d){return Object.keys(d).map(function(g){return d[g]})}),Array.prototype.find||u(Array.prototype,"find",function(d){for(var g=this.length,s=arguments[1],h=0;h<g;h++){var o=this[h];if(d.call(s,o,h,this))return o}}),Array.prototype.findIndex||u(Array.prototype,"findIndex",function(d){for(var g=this.length,s=arguments[1],h=0;h<g;h++){var o=this[h];if(d.call(s,o,h,this))return h}}),Array.prototype.includes||u(Array.prototype,"includes",function(d,g){return this.indexOf(d,g)!=-1}),Array.prototype.fill||u(Array.prototype,"fill",function(d){for(var g=this,s=g.length>>>0,h=arguments[1],o=h>>0,r=o<0?Math.max(s+o,0):Math.min(o,s),l=arguments[2],c=l===void 0?s:l>>0,a=c<0?Math.max(s+c,0):Math.min(c,s);r<a;)g[r]=d,r++;return g}),Array.of||u(Array,"of",function(){return Array.prototype.slice.call(arguments)})}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/es6-shim"],function(n,i,p){n("./es6-shim")}),ace.define("ace/lib/deep_copy",["require","exports","module"],function(n,i,p){i.deepCopy=function u(d){if(typeof d!="object"||!d)return d;var g;if(Array.isArray(d)){g=[];for(var s=0;s<d.length;s++)g[s]=u(d[s]);return g}if(Object.prototype.toString.call(d)!=="[object Object]")return d;g={};for(var s in d)g[s]=u(d[s]);return g}}),ace.define("ace/lib/lang",["require","exports","module","ace/lib/deep_copy"],function(n,i,p){i.last=function(g){return g[g.length-1]},i.stringReverse=function(g){return g.split("").reverse().join("")},i.stringRepeat=function(g,s){for(var h="";s>0;)s&1&&(h+=g),(s>>=1)&&(g+=g);return h};var u=/^\s\s*/,d=/\s\s*$/;i.stringTrimLeft=function(g){return g.replace(u,"")},i.stringTrimRight=function(g){return g.replace(d,"")},i.copyObject=function(g){var s={};for(var h in g)s[h]=g[h];return s},i.copyArray=function(g){for(var s=[],h=0,o=g.length;h<o;h++)g[h]&&typeof g[h]=="object"?s[h]=this.copyObject(g[h]):s[h]=g[h];return s},i.deepCopy=n("./deep_copy").deepCopy,i.arrayToMap=function(g){for(var s={},h=0;h<g.length;h++)s[g[h]]=1;return s},i.createMap=function(g){var s=Object.create(null);for(var h in g)s[h]=g[h];return s},i.arrayRemove=function(g,s){for(var h=0;h<=g.length;h++)s===g[h]&&g.splice(h,1)},i.escapeRegExp=function(g){return g.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},i.escapeHTML=function(g){return(""+g).replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},i.getMatchOffsets=function(g,s){var h=[];return g.replace(s,function(o){h.push({offset:arguments[arguments.length-2],length:o.length})}),h},i.deferredCall=function(g){var s=null,h=function(){s=null,g()},o=function(r){return o.cancel(),s=setTimeout(h,r||0),o};return o.schedule=o,o.call=function(){return this.cancel(),g(),o},o.cancel=function(){return clearTimeout(s),s=null,o},o.isPending=function(){return s},o},i.delayedCall=function(g,s){var h=null,o=function(){h=null,g()},r=function(l){h==null&&(h=setTimeout(o,l||s))};return r.delay=function(l){h&&clearTimeout(h),h=setTimeout(o,l||s)},r.schedule=r,r.call=function(){this.cancel(),g()},r.cancel=function(){h&&clearTimeout(h),h=null},r.isPending=function(){return h},r},i.supportsLookbehind=function(){try{new RegExp("(?<=.)")}catch{return!1}return!0},i.supportsUnicodeFlag=function(){try{new RegExp("^.$","u")}catch{return!1}return!0}}),ace.define("ace/lib/useragent",["require","exports","module"],function(n,i,p){i.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},i.getOS=function(){return i.isMac?i.OS.MAC:i.isLinux?i.OS.LINUX:i.OS.WINDOWS};var u=typeof navigator=="object"?navigator:{},d=(/mac|win|linux/i.exec(u.platform)||["other"])[0].toLowerCase(),g=u.userAgent||"",s=u.appName||"";i.isWin=d=="win",i.isMac=d=="mac",i.isLinux=d=="linux",i.isIE=s=="Microsoft Internet Explorer"||s.indexOf("MSAppHost")>=0?parseFloat((g.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((g.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),i.isOldIE=i.isIE&&i.isIE<9,i.isGecko=i.isMozilla=g.match(/ Gecko\/\d+/),i.isOpera=typeof opera=="object"&&Object.prototype.toString.call(window.opera)=="[object Opera]",i.isWebKit=parseFloat(g.split("WebKit/")[1])||void 0,i.isChrome=parseFloat(g.split(" Chrome/")[1])||void 0,i.isEdge=parseFloat(g.split(" Edge/")[1])||void 0,i.isAIR=g.indexOf("AdobeAIR")>=0,i.isAndroid=g.indexOf("Android")>=0,i.isChromeOS=g.indexOf(" CrOS ")>=0,i.isIOS=/iPad|iPhone|iPod/.test(g)&&!window.MSStream,i.isIOS&&(i.isMac=!0),i.isMobile=i.isIOS||i.isAndroid}),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(n,i,p){var u=n("./useragent"),d="http://www.w3.org/1999/xhtml";i.buildDom=function l(c,a,f){if(typeof c=="string"&&c){var m=document.createTextNode(c);return a&&a.appendChild(m),m}if(!Array.isArray(c))return c&&c.appendChild&&a&&a.appendChild(c),c;if(typeof c[0]!="string"||!c[0]){for(var v=[],y=0;y<c.length;y++){var R=l(c[y],a,f);R&&v.push(R)}return v}var C=document.createElement(c[0]),S=c[1],$=1;S&&typeof S=="object"&&!Array.isArray(S)&&($=2);for(var y=$;y<c.length;y++)l(c[y],C,f);return $==2&&Object.keys(S).forEach(function(L){var x=S[L];L==="class"?C.className=Array.isArray(x)?x.join(" "):x:typeof x=="function"||L=="value"||L[0]=="$"?C[L]=x:L==="ref"?f&&(f[x]=C):L==="style"?typeof x=="string"&&(C.style.cssText=x):x!=null&&C.setAttribute(L,x)}),a&&a.appendChild(C),C},i.getDocumentHead=function(l){return l||(l=document),l.head||l.getElementsByTagName("head")[0]||l.documentElement},i.createElement=function(l,c){return document.createElementNS?document.createElementNS(c||d,l):document.createElement(l)},i.removeChildren=function(l){l.innerHTML=""},i.createTextNode=function(l,c){var a=c?c.ownerDocument:document;return a.createTextNode(l)},i.createFragment=function(l){var c=l?l.ownerDocument:document;return c.createDocumentFragment()},i.hasCssClass=function(l,c){var a=(l.className+"").split(/\s+/g);return a.indexOf(c)!==-1},i.addCssClass=function(l,c){i.hasCssClass(l,c)||(l.className+=" "+c)},i.removeCssClass=function(l,c){for(var a=l.className.split(/\s+/g);;){var f=a.indexOf(c);if(f==-1)break;a.splice(f,1)}l.className=a.join(" ")},i.toggleCssClass=function(l,c){for(var a=l.className.split(/\s+/g),f=!0;;){var m=a.indexOf(c);if(m==-1)break;f=!1,a.splice(m,1)}return f&&a.push(c),l.className=a.join(" "),f},i.setCssClass=function(l,c,a){a?i.addCssClass(l,c):i.removeCssClass(l,c)},i.hasCssString=function(l,c){var a=0,f;if(c=c||document,f=c.querySelectorAll("style")){for(;a<f.length;)if(f[a++].id===l)return!0}},i.removeElementById=function(l,c){c=c||document,c.getElementById(l)&&c.getElementById(l).remove()};var g,s=[];i.useStrictCSP=function(l){g=l,l==!1?h():s||(s=[])};function h(){var l=s;s=null,l&&l.forEach(function(c){o(c[0],c[1])})}function o(l,c,a){if(!(typeof document>"u")){if(s){if(a)h();else if(a===!1)return s.push([l,c])}if(!g){var f=a;!a||!a.getRootNode?f=document:(f=a.getRootNode(),(!f||f==a)&&(f=document));var m=f.ownerDocument||f;if(c&&i.hasCssString(c,f))return null;c&&(l+=`
778
+ */(function(e){(function(){var t="input is invalid type",n=typeof window=="object",i=n?window:{};i.JS_SHA256_NO_WINDOW&&(n=!1);var p=!n&&typeof self=="object",u=!i.JS_SHA256_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;u?i=Fn:p&&(i=self);var d=!i.JS_SHA256_NO_COMMON_JS&&!0&&e.exports,g=!i.JS_SHA256_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",s="0123456789abcdef".split(""),h=[-2147483648,8388608,32768,128],o=[24,16,8,0],r=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],l=["hex","array","digest","arrayBuffer"],c=[];(i.JS_SHA256_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function($){return Object.prototype.toString.call($)==="[object Array]"}),g&&(i.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function($){return typeof $=="object"&&$.buffer&&$.buffer.constructor===ArrayBuffer});var a=function($,L){return function(x){return new R(L,!0).update(x)[$]()}},f=function($){var L=a("hex",$);u&&(L=m(L,$)),L.create=function(){return new R($)},L.update=function(M){return L.create().update(M)};for(var x=0;x<l.length;++x){var k=l[x];L[k]=a(k,$)}return L},m=function($,L){var x=$u,k=$u.Buffer,M=L?"sha224":"sha256",w;k.from&&!i.JS_SHA256_NO_BUFFER_FROM?w=k.from:w=function(_){return new k(_)};var A=function(_){if(typeof _=="string")return x.createHash(M).update(_,"utf8").digest("hex");if(_==null)throw new Error(t);return _.constructor===ArrayBuffer&&(_=new Uint8Array(_)),Array.isArray(_)||ArrayBuffer.isView(_)||_.constructor===k?x.createHash(M).update(w(_)).digest("hex"):$(_)};return A},v=function($,L){return function(x,k){return new C(x,L,!0).update(k)[$]()}},y=function($){var L=v("hex",$);L.create=function(M){return new C(M,$)},L.update=function(M,w){return L.create(M).update(w)};for(var x=0;x<l.length;++x){var k=l[x];L[k]=v(k,$)}return L};function R($,L){L?(c[0]=c[16]=c[1]=c[2]=c[3]=c[4]=c[5]=c[6]=c[7]=c[8]=c[9]=c[10]=c[11]=c[12]=c[13]=c[14]=c[15]=0,this.blocks=c):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],$?(this.h0=3238371032,this.h1=914150663,this.h2=812702999,this.h3=4144912697,this.h4=4290775857,this.h5=1750603025,this.h6=1694076839,this.h7=3204075428):(this.h0=1779033703,this.h1=3144134277,this.h2=1013904242,this.h3=2773480762,this.h4=1359893119,this.h5=2600822924,this.h6=528734635,this.h7=1541459225),this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0,this.is224=$}R.prototype.update=function($){if(!this.finalized){var L,x=typeof $;if(x!=="string"){if(x==="object"){if($===null)throw new Error(t);if(g&&$.constructor===ArrayBuffer)$=new Uint8Array($);else if(!Array.isArray($)&&(!g||!ArrayBuffer.isView($)))throw new Error(t)}else throw new Error(t);L=!0}for(var k,M=0,w,A=$.length,_=this.blocks;M<A;){if(this.hashed&&(this.hashed=!1,_[0]=this.block,_[16]=_[1]=_[2]=_[3]=_[4]=_[5]=_[6]=_[7]=_[8]=_[9]=_[10]=_[11]=_[12]=_[13]=_[14]=_[15]=0),L)for(w=this.start;M<A&&w<64;++M)_[w>>2]|=$[M]<<o[w++&3];else for(w=this.start;M<A&&w<64;++M)k=$.charCodeAt(M),k<128?_[w>>2]|=k<<o[w++&3]:k<2048?(_[w>>2]|=(192|k>>6)<<o[w++&3],_[w>>2]|=(128|k&63)<<o[w++&3]):k<55296||k>=57344?(_[w>>2]|=(224|k>>12)<<o[w++&3],_[w>>2]|=(128|k>>6&63)<<o[w++&3],_[w>>2]|=(128|k&63)<<o[w++&3]):(k=65536+((k&1023)<<10|$.charCodeAt(++M)&1023),_[w>>2]|=(240|k>>18)<<o[w++&3],_[w>>2]|=(128|k>>12&63)<<o[w++&3],_[w>>2]|=(128|k>>6&63)<<o[w++&3],_[w>>2]|=(128|k&63)<<o[w++&3]);this.lastByteIndex=w,this.bytes+=w-this.start,w>=64?(this.block=_[16],this.start=w-64,this.hash(),this.hashed=!0):this.start=w}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},R.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var $=this.blocks,L=this.lastByteIndex;$[16]=this.block,$[L>>2]|=h[L&3],this.block=$[16],L>=56&&(this.hashed||this.hash(),$[0]=this.block,$[16]=$[1]=$[2]=$[3]=$[4]=$[5]=$[6]=$[7]=$[8]=$[9]=$[10]=$[11]=$[12]=$[13]=$[14]=$[15]=0),$[14]=this.hBytes<<3|this.bytes>>>29,$[15]=this.bytes<<3,this.hash()}},R.prototype.hash=function(){var $=this.h0,L=this.h1,x=this.h2,k=this.h3,M=this.h4,w=this.h5,A=this.h6,_=this.h7,b=this.blocks,E,T,O,I,F,D,W,j,H,U,K;for(E=16;E<64;++E)F=b[E-15],T=(F>>>7|F<<25)^(F>>>18|F<<14)^F>>>3,F=b[E-2],O=(F>>>17|F<<15)^(F>>>19|F<<13)^F>>>10,b[E]=b[E-16]+T+b[E-7]+O<<0;for(K=L&x,E=0;E<64;E+=4)this.first?(this.is224?(j=300032,F=b[0]-1413257819,_=F-150054599<<0,k=F+24177077<<0):(j=704751109,F=b[0]-210244248,_=F-1521486534<<0,k=F+143694565<<0),this.first=!1):(T=($>>>2|$<<30)^($>>>13|$<<19)^($>>>22|$<<10),O=(M>>>6|M<<26)^(M>>>11|M<<21)^(M>>>25|M<<7),j=$&L,I=j^$&x^K,W=M&w^~M&A,F=_+O+W+r[E]+b[E],D=T+I,_=k+F<<0,k=F+D<<0),T=(k>>>2|k<<30)^(k>>>13|k<<19)^(k>>>22|k<<10),O=(_>>>6|_<<26)^(_>>>11|_<<21)^(_>>>25|_<<7),H=k&$,I=H^k&L^j,W=_&M^~_&w,F=A+O+W+r[E+1]+b[E+1],D=T+I,A=x+F<<0,x=F+D<<0,T=(x>>>2|x<<30)^(x>>>13|x<<19)^(x>>>22|x<<10),O=(A>>>6|A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7),U=x&k,I=U^x&$^H,W=A&_^~A&M,F=w+O+W+r[E+2]+b[E+2],D=T+I,w=L+F<<0,L=F+D<<0,T=(L>>>2|L<<30)^(L>>>13|L<<19)^(L>>>22|L<<10),O=(w>>>6|w<<26)^(w>>>11|w<<21)^(w>>>25|w<<7),K=L&x,I=K^L&k^U,W=w&A^~w&_,F=M+O+W+r[E+3]+b[E+3],D=T+I,M=$+F<<0,$=F+D<<0,this.chromeBugWorkAround=!0;this.h0=this.h0+$<<0,this.h1=this.h1+L<<0,this.h2=this.h2+x<<0,this.h3=this.h3+k<<0,this.h4=this.h4+M<<0,this.h5=this.h5+w<<0,this.h6=this.h6+A<<0,this.h7=this.h7+_<<0},R.prototype.hex=function(){this.finalize();var $=this.h0,L=this.h1,x=this.h2,k=this.h3,M=this.h4,w=this.h5,A=this.h6,_=this.h7,b=s[$>>28&15]+s[$>>24&15]+s[$>>20&15]+s[$>>16&15]+s[$>>12&15]+s[$>>8&15]+s[$>>4&15]+s[$&15]+s[L>>28&15]+s[L>>24&15]+s[L>>20&15]+s[L>>16&15]+s[L>>12&15]+s[L>>8&15]+s[L>>4&15]+s[L&15]+s[x>>28&15]+s[x>>24&15]+s[x>>20&15]+s[x>>16&15]+s[x>>12&15]+s[x>>8&15]+s[x>>4&15]+s[x&15]+s[k>>28&15]+s[k>>24&15]+s[k>>20&15]+s[k>>16&15]+s[k>>12&15]+s[k>>8&15]+s[k>>4&15]+s[k&15]+s[M>>28&15]+s[M>>24&15]+s[M>>20&15]+s[M>>16&15]+s[M>>12&15]+s[M>>8&15]+s[M>>4&15]+s[M&15]+s[w>>28&15]+s[w>>24&15]+s[w>>20&15]+s[w>>16&15]+s[w>>12&15]+s[w>>8&15]+s[w>>4&15]+s[w&15]+s[A>>28&15]+s[A>>24&15]+s[A>>20&15]+s[A>>16&15]+s[A>>12&15]+s[A>>8&15]+s[A>>4&15]+s[A&15];return this.is224||(b+=s[_>>28&15]+s[_>>24&15]+s[_>>20&15]+s[_>>16&15]+s[_>>12&15]+s[_>>8&15]+s[_>>4&15]+s[_&15]),b},R.prototype.toString=R.prototype.hex,R.prototype.digest=function(){this.finalize();var $=this.h0,L=this.h1,x=this.h2,k=this.h3,M=this.h4,w=this.h5,A=this.h6,_=this.h7,b=[$>>24&255,$>>16&255,$>>8&255,$&255,L>>24&255,L>>16&255,L>>8&255,L&255,x>>24&255,x>>16&255,x>>8&255,x&255,k>>24&255,k>>16&255,k>>8&255,k&255,M>>24&255,M>>16&255,M>>8&255,M&255,w>>24&255,w>>16&255,w>>8&255,w&255,A>>24&255,A>>16&255,A>>8&255,A&255];return this.is224||b.push(_>>24&255,_>>16&255,_>>8&255,_&255),b},R.prototype.array=R.prototype.digest,R.prototype.arrayBuffer=function(){this.finalize();var $=new ArrayBuffer(this.is224?28:32),L=new DataView($);return L.setUint32(0,this.h0),L.setUint32(4,this.h1),L.setUint32(8,this.h2),L.setUint32(12,this.h3),L.setUint32(16,this.h4),L.setUint32(20,this.h5),L.setUint32(24,this.h6),this.is224||L.setUint32(28,this.h7),$};function C($,L,x){var k,M=typeof $;if(M==="string"){var w=[],A=$.length,_=0,b;for(k=0;k<A;++k)b=$.charCodeAt(k),b<128?w[_++]=b:b<2048?(w[_++]=192|b>>6,w[_++]=128|b&63):b<55296||b>=57344?(w[_++]=224|b>>12,w[_++]=128|b>>6&63,w[_++]=128|b&63):(b=65536+((b&1023)<<10|$.charCodeAt(++k)&1023),w[_++]=240|b>>18,w[_++]=128|b>>12&63,w[_++]=128|b>>6&63,w[_++]=128|b&63);$=w}else if(M==="object"){if($===null)throw new Error(t);if(g&&$.constructor===ArrayBuffer)$=new Uint8Array($);else if(!Array.isArray($)&&(!g||!ArrayBuffer.isView($)))throw new Error(t)}else throw new Error(t);$.length>64&&($=new R(L,!0).update($).array());var E=[],T=[];for(k=0;k<64;++k){var O=$[k]||0;E[k]=92^O,T[k]=54^O}R.call(this,L,x),this.update(T),this.oKeyPad=E,this.inner=!0,this.sharedMemory=x}C.prototype=new R,C.prototype.finalize=function(){if(R.prototype.finalize.call(this),this.inner){this.inner=!1;var $=this.array();R.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update($),R.prototype.finalize.call(this)}};var S=f();S.sha256=S,S.sha224=f(!0),S.sha256.hmac=y(),S.sha224.hmac=y(!0),d?e.exports=S:(i.sha256=S.sha256,i.sha224=S.sha224)})()})(Jd);var FS=Jd.exports,NS=function(t,n){if(n=n.split(":")[0],t=+t,!t)return!1;switch(n){case"http":case"ws":return t!==80;case"https":case"wss":return t!==443;case"ftp":return t!==21;case"gopher":return t!==70;case"file":return!1}return t!==0},kl={},PS=Object.prototype.hasOwnProperty,DS;function _u(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch{return null}}function Cu(e){try{return encodeURIComponent(e)}catch{return null}}function BS(e){for(var t=/([^=?#&]+)=?([^&]*)/g,n={},i;i=t.exec(e);){var p=_u(i[1]),u=_u(i[2]);p===null||u===null||p in n||(n[p]=u)}return n}function WS(e,t){t=t||"";var n=[],i,p;typeof t!="string"&&(t="?");for(p in e)if(PS.call(e,p)){if(i=e[p],!i&&(i===null||i===DS||isNaN(i))&&(i=""),p=Cu(p),i=Cu(i),p===null||i===null)continue;n.push(p+"="+i)}return n.length?t+n.join("&"):""}kl.stringify=WS;kl.parse=BS;var qd=NS,cs=kl,HS=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,ep=/[\n\r\t]/g,US=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,tp=/:\d+$/,zS=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,VS=/^[a-zA-Z]:/;function El(e){return(e||"").toString().replace(HS,"")}var wa=[["#","hash"],["?","query"],function(t,n){return zt(n.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],Su={hash:1,query:1};function np(e){var t;typeof window<"u"?t=window:typeof Fn<"u"?t=Fn:typeof self<"u"?t=self:t={};var n=t.location||{};e=e||n;var i={},p=typeof e,u;if(e.protocol==="blob:")i=new Gt(unescape(e.pathname),{});else if(p==="string"){i=new Gt(e,{});for(u in Su)delete i[u]}else if(p==="object"){for(u in e)u in Su||(i[u]=e[u]);i.slashes===void 0&&(i.slashes=US.test(e.href))}return i}function zt(e){return e==="file:"||e==="ftp:"||e==="http:"||e==="https:"||e==="ws:"||e==="wss:"}function ip(e,t){e=El(e),e=e.replace(ep,""),t=t||{};var n=zS.exec(e),i=n[1]?n[1].toLowerCase():"",p=!!n[2],u=!!n[3],d=0,g;return p?u?(g=n[2]+n[3]+n[4],d=n[2].length+n[3].length):(g=n[2]+n[4],d=n[2].length):u?(g=n[3]+n[4],d=n[3].length):g=n[4],i==="file:"?d>=2&&(g=g.slice(2)):zt(i)?g=n[4]:i?p&&(g=g.slice(2)):d>=2&&zt(t.protocol)&&(g=n[4]),{protocol:i,slashes:p||zt(i),slashesCount:d,rest:g}}function jS(e,t){if(e==="")return t;for(var n=(t||"/").split("/").slice(0,-1).concat(e.split("/")),i=n.length,p=n[i-1],u=!1,d=0;i--;)n[i]==="."?n.splice(i,1):n[i]===".."?(n.splice(i,1),d++):d&&(i===0&&(u=!0),n.splice(i,1),d--);return u&&n.unshift(""),(p==="."||p==="..")&&n.push(""),n.join("/")}function Gt(e,t,n){if(e=El(e),e=e.replace(ep,""),!(this instanceof Gt))return new Gt(e,t,n);var i,p,u,d,g,s,h=wa.slice(),o=typeof t,r=this,l=0;for(o!=="object"&&o!=="string"&&(n=t,t=null),n&&typeof n!="function"&&(n=cs.parse),t=np(t),p=ip(e||"",t),i=!p.protocol&&!p.slashes,r.slashes=p.slashes||i&&t.slashes,r.protocol=p.protocol||t.protocol||"",e=p.rest,(p.protocol==="file:"&&(p.slashesCount!==2||VS.test(e))||!p.slashes&&(p.protocol||p.slashesCount<2||!zt(r.protocol)))&&(h[3]=[/(.*)/,"pathname"]);l<h.length;l++){if(d=h[l],typeof d=="function"){e=d(e,r);continue}u=d[0],s=d[1],u!==u?r[s]=e:typeof u=="string"?(g=u==="@"?e.lastIndexOf(u):e.indexOf(u),~g&&(typeof d[2]=="number"?(r[s]=e.slice(0,g),e=e.slice(g+d[2])):(r[s]=e.slice(g),e=e.slice(0,g)))):(g=u.exec(e))&&(r[s]=g[1],e=e.slice(0,g.index)),r[s]=r[s]||i&&d[3]&&t[s]||"",d[4]&&(r[s]=r[s].toLowerCase())}n&&(r.query=n(r.query)),i&&t.slashes&&r.pathname.charAt(0)!=="/"&&(r.pathname!==""||t.pathname!=="")&&(r.pathname=jS(r.pathname,t.pathname)),r.pathname.charAt(0)!=="/"&&zt(r.protocol)&&(r.pathname="/"+r.pathname),qd(r.port,r.protocol)||(r.host=r.hostname,r.port=""),r.username=r.password="",r.auth&&(g=r.auth.indexOf(":"),~g?(r.username=r.auth.slice(0,g),r.username=encodeURIComponent(decodeURIComponent(r.username)),r.password=r.auth.slice(g+1),r.password=encodeURIComponent(decodeURIComponent(r.password))):r.username=encodeURIComponent(decodeURIComponent(r.auth)),r.auth=r.password?r.username+":"+r.password:r.username),r.origin=r.protocol!=="file:"&&zt(r.protocol)&&r.host?r.protocol+"//"+r.host:"null",r.href=r.toString()}function GS(e,t,n){var i=this;switch(e){case"query":typeof t=="string"&&t.length&&(t=(n||cs.parse)(t)),i[e]=t;break;case"port":i[e]=t,qd(t,i.protocol)?t&&(i.host=i.hostname+":"+t):(i.host=i.hostname,i[e]="");break;case"hostname":i[e]=t,i.port&&(t+=":"+i.port),i.host=t;break;case"host":i[e]=t,tp.test(t)?(t=t.split(":"),i.port=t.pop(),i.hostname=t.join(":")):(i.hostname=t,i.port="");break;case"protocol":i.protocol=t.toLowerCase(),i.slashes=!n;break;case"pathname":case"hash":if(t){var p=e==="pathname"?"/":"#";i[e]=t.charAt(0)!==p?p+t:t}else i[e]=t;break;case"username":case"password":i[e]=encodeURIComponent(t);break;case"auth":var u=t.indexOf(":");~u?(i.username=t.slice(0,u),i.username=encodeURIComponent(decodeURIComponent(i.username)),i.password=t.slice(u+1),i.password=encodeURIComponent(decodeURIComponent(i.password))):i.username=encodeURIComponent(decodeURIComponent(t))}for(var d=0;d<wa.length;d++){var g=wa[d];g[4]&&(i[g[1]]=i[g[1]].toLowerCase())}return i.auth=i.password?i.username+":"+i.password:i.username,i.origin=i.protocol!=="file:"&&zt(i.protocol)&&i.host?i.protocol+"//"+i.host:"null",i.href=i.toString(),i}function KS(e){(!e||typeof e!="function")&&(e=cs.stringify);var t,n=this,i=n.host,p=n.protocol;p&&p.charAt(p.length-1)!==":"&&(p+=":");var u=p+(n.protocol&&n.slashes||zt(n.protocol)?"//":"");return n.username?(u+=n.username,n.password&&(u+=":"+n.password),u+="@"):n.password?(u+=":"+n.password,u+="@"):n.protocol!=="file:"&&zt(n.protocol)&&!i&&n.pathname!=="/"&&(u+="@"),(i[i.length-1]===":"||tp.test(n.hostname)&&!n.port)&&(i+=":"),u+=i+n.pathname,t=typeof n.query=="object"?e(n.query):n.query,t&&(u+=t.charAt(0)!=="?"?"?"+t:t),n.hash&&(u+=n.hash),u}Gt.prototype={set:GS,toString:KS};Gt.extractProtocol=ip;Gt.location=np;Gt.trimLeft=El;Gt.qs=cs;var YS=Gt;const XS=un(YS);class us extends Lt{constructor(){super();Le(this,"baseURL");Le(this,"name");Le(this,"type");this.name="VirusTotal",this.baseURL="https://www.virustotal.com",this.type="domain"}}class ZS extends us{constructor(){super(),this.type="domain"}href(t){return this.baseURL+`/gui/domain/${t}/detection`}}class QS extends us{constructor(){super(),this.type="ip"}href(t){return this.baseURL+`/gui/ip-address/${t}/details`}}class JS extends us{constructor(){super(),this.type="url"}href(t){const n=FS.sha256(this.normalizeURL(t));return this.baseURL+`/gui/url/${n}/details`}normalizeURL(t){return new XS(t).pathname==="/"&&!t.endsWith("/")?`${t}/`:t}}class qS extends us{constructor(){super(),this.type="hash"}href(t){return this.baseURL+`/gui/file/${t}/details`}}const eA=[new bS,new wS,new $S,new CS,new _S,new SS,new AS,new xS,new Zd,new kS,new ES,new RS,new LS,new TS,new MS,new ZS,new qS,new QS,new JS],tA=$e({name:"LinksItem",components:{LinkComponent:yS},props:{data:{type:String,required:!0},type:{type:String,required:!0}},setup(e){const t=eA;return{selectedLinks:Ee(()=>e.type===void 0?t:t.filter(i=>i.type===e.type))}}}),nA={class:"tags are-medium"};function iA(e,t,n,i,p,u){const d=ue("LinkComponent");return q(),oe("div",nA,[(q(!0),oe(Se,null,ct(e.selectedLinks,g=>(q(),Me(d,{data:e.data,link:g,key:g.name},null,8,["data","link"]))),128))])}const rA=xe(tA,[["render",iA]]),oA=$e({name:"ArtifactItem",props:{artifact:{type:Object,required:!0}},components:{Alerts:Yd,AS:CC,DnsRecords:FC,Links:rA,Loading:fn,ReverseDnsNames:zC,Tags:KC,VueJsonPretty:Kd,WhoisRecord:dS,CPEs:kC,Ports:BC},emits:["refresh"],setup(e,t){const n=Te(void 0),i=Te(void 0),p=Te(!1),u=Oi(),d=Ee(()=>{if(e.artifact.dataType==="domain")return`https://urlscan.io/liveshot/?url=${`http://${e.artifact.data}`}`;if(e.artifact.dataType==="url")return`https://urlscan.io/liveshot/?url=${e.artifact.data}`}),g=f=>{if(f!==void 0)return`https://maps.google.co.jp/maps?output=embed&q=${f.lat},${f.long}&z=3`},s=z1(),h=Al(),o=Nd(),r=H1(),l=async()=>{window.confirm(`Are you sure you want to delete ${e.artifact.data}?`)&&(await o.perform(e.artifact.id),u.push("/"))},c=async()=>{await r.perform(e.artifact.id),t.emit("refresh")};return nt(async()=>{if(e.artifact.dataType==="ip"){let f;if(e.artifact.geolocation===null){const m=await s.perform(e.artifact.data);f=$$(m),i.value=m.countryCode}else f=zd(e.artifact.geolocation.countryCode);n.value=g(f)}}),{countryCode:i,enrichArtifactTask:r,getAlertsTask:h,googleMapSrc:n,showMetadata:p,urlscanLiveshotSrc:d,deleteArtifact:l,enrichArtifact:c,flipShowMetadata:()=>{p.value=!p.value}}}});const Ze=e=>(Qa("data-v-1a7db503"),e=e(),Ja(),e),sA={class:"column"},aA={key:0},lA=Ze(()=>P("hr",null,null,-1)),cA=Ze(()=>P("h2",{class:"is-size-2 mb-4"},"Artifact",-1)),uA={class:"columns"},hA={key:0,class:"column is-half"},fA={key:0},dA={class:"is-size-4 mb-2"},pA={class:"has-text-grey"},gA=["src"],mA={key:1},vA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},[et(" Live screenshot "),P("span",{class:"has-text-grey"},"Hover to expand")],-1)),yA=["src"],bA={class:"column"},wA={class:"block"},$A=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"Information",-1)),_A={class:"table is-fullwidth is-completely-borderless"},CA=Ze(()=>P("th",null,"ID",-1)),SA={class:"buttons is-pulled-right"},AA=Ze(()=>P("span",null,"Enrich",-1)),xA={class:"icon is-small"},kA=Ze(()=>P("span",null,"Metadata",-1)),EA={class:"icon is-small"},RA=Ze(()=>P("span",null,"Delete",-1)),LA={class:"icon is-small"},TA=Ze(()=>P("th",null,"Data type",-1)),MA=Ze(()=>P("th",null,"Data",-1)),OA=Ze(()=>P("th",null,"Source",-1)),IA={key:0},FA=Ze(()=>P("th",null,"Tags",-1)),NA={key:0},PA={class:"modal is-active"},DA={class:"modal-card"},BA={class:"modal-card-head"},WA=Ze(()=>P("p",{class:"modal-card-title"},"Metadata",-1)),HA={class:"modal-card-body"},UA={key:1,class:"block"},zA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"AS",-1)),VA={key:2,class:"block"},jA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"Reverse DNS",-1)),GA={key:3,class:"block"},KA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"DNS records",-1)),YA={key:4,class:"block"},XA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"CPEs",-1)),ZA={key:5,class:"block"},QA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"Ports",-1)),JA={key:6,class:"block"},qA=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"Whois record",-1)),e2={class:"block"},t2=Ze(()=>P("h4",{class:"is-size-4 mb-2"},"Links",-1)),n2=Ze(()=>P("hr",null,null,-1)),i2={class:"column"},r2=Ze(()=>P("h2",{class:"is-size-2 mb-4"},"Related alerts",-1));function o2(e,t,n,i,p,u){var y;const d=ue("Loading"),g=ue("font-awesome-icon"),s=ue("Tags"),h=ue("VueJsonPretty"),o=ue("AS"),r=ue("ReverseDnsNames"),l=ue("DnsRecords"),c=ue("CPEs"),a=ue("Ports"),f=ue("WhoisRecord"),m=ue("Links"),v=ue("Alerts");return q(),oe(Se,null,[P("div",sA,[e.enrichArtifactTask.isRunning?(q(),oe("div",aA,[he(d),lA])):we("",!0),cA,P("div",uA,[e.googleMapSrc!==void 0||e.urlscanLiveshotSrc!==void 0?(q(),oe("div",hA,[e.googleMapSrc?(q(),oe("div",fA,[P("h4",dA,[et(" Geolocation "),P("span",pA,Ae(e.countryCode||((y=e.artifact.geolocation)==null?void 0:y.countryCode)),1)]),P("iframe",{class:"mb-4",src:e.googleMapSrc,width:"100%",height:"240px"},null,8,gA)])):we("",!0),e.urlscanLiveshotSrc?(q(),oe("div",mA,[vA,P("img",{src:e.urlscanLiveshotSrc,class:"liveshot",alt:"liveshot"},null,8,yA)])):we("",!0)])):we("",!0),P("div",bA,[P("div",wA,[$A,P("table",_A,[P("tr",null,[CA,P("td",null,[et(Ae(e.artifact.id)+" ",1),P("span",SA,[P("button",{class:"button is-primary is-light is-small",onClick:t[0]||(t[0]=(...R)=>e.enrichArtifact&&e.enrichArtifact(...R))},[AA,P("span",xA,[he(g,{icon:"lightbulb"})])]),e.artifact.metadata?(q(),oe("button",{key:0,class:"button is-info is-light is-small",onClick:t[1]||(t[1]=(...R)=>e.flipShowMetadata&&e.flipShowMetadata(...R))},[kA,P("span",EA,[he(g,{icon:"info-circle"})])])):we("",!0),P("button",{class:"button is-light is-small",onClick:t[2]||(t[2]=(...R)=>e.deleteArtifact&&e.deleteArtifact(...R))},[RA,P("span",LA,[he(g,{icon:"times"})])])])])]),P("tr",null,[TA,P("td",null,Ae(e.artifact.dataType),1)]),P("tr",null,[MA,P("td",null,Ae(e.artifact.data),1)]),P("tr",null,[OA,P("td",null,Ae(e.artifact.source),1)]),e.artifact.tags.length>0?(q(),oe("tr",IA,[FA,P("td",null,[he(s,{tags:e.artifact.tags},null,8,["tags"])])])):we("",!0)])]),e.artifact.metadata&&e.showMetadata?(q(),oe("div",NA,[P("div",PA,[P("div",{class:"modal-background",onClick:t[3]||(t[3]=(...R)=>e.flipShowMetadata&&e.flipShowMetadata(...R))}),P("div",DA,[P("header",BA,[WA,P("button",{class:"delete","aria-label":"close",onClick:t[4]||(t[4]=(...R)=>e.flipShowMetadata&&e.flipShowMetadata(...R))})]),P("section",HA,[he(h,{data:e.artifact.metadata},null,8,["data"])])])])])):we("",!0)])]),e.artifact.autonomousSystem?(q(),oe("div",UA,[zA,he(o,{autonomousSystem:e.artifact.autonomousSystem},null,8,["autonomousSystem"])])):we("",!0),e.artifact.reverseDnsNames?(q(),oe("div",VA,[jA,he(r,{reverseDnsNames:e.artifact.reverseDnsNames},null,8,["reverseDnsNames"])])):we("",!0),e.artifact.dnsRecords?(q(),oe("div",GA,[KA,he(l,{dnsRecords:e.artifact.dnsRecords},null,8,["dnsRecords"])])):we("",!0),e.artifact.cpes?(q(),oe("div",YA,[XA,he(c,{cpes:e.artifact.cpes},null,8,["cpes"])])):we("",!0),e.artifact.ports?(q(),oe("div",ZA,[QA,he(a,{ports:e.artifact.ports},null,8,["ports"])])):we("",!0),e.artifact.whoisRecord?(q(),oe("div",JA,[qA,he(f,{whoisRecord:e.artifact.whoisRecord},null,8,["whoisRecord"])])):we("",!0),P("div",e2,[t2,he(m,{data:e.artifact.data,type:e.artifact.dataType},null,8,["data","type"])])]),n2,P("div",i2,[r2,he(v,{artifact:e.artifact.data},null,8,["artifact"])])],64)}const s2=xe(oA,[["render",o2],["__scopeId","data-v-1a7db503"]]),a2=$e({name:"ArtifactWrapper",components:{ArtifactComponent:s2,Loading:fn,ErrorMessage:hn},props:{id:{type:String,required:!0}},setup(e){const t=W1(),n=async()=>{await t.perform(e.id)},i=async()=>{await n()};return nt(async()=>{await n()}),Ye(e,async()=>{await n()}),{getArtifactTask:t,refresh:i}}});function l2(e,t,n,i,p,u){var h,o;const d=ue("Loading"),g=ue("ErrorMessage"),s=ue("ArtifactComponent");return q(),oe(Se,null,[e.getArtifactTask.isRunning?(q(),Me(d,{key:0})):we("",!0),e.getArtifactTask.isError?(q(),Me(g,{key:1,error:(h=e.getArtifactTask.last)==null?void 0:h.error},null,8,["error"])):we("",!0),(o=e.getArtifactTask.last)!=null&&o.value?(q(),Me(s,{key:2,artifact:e.getArtifactTask.last.value,onRefresh:e.refresh},null,8,["artifact","onRefresh"])):we("",!0)],64)}const c2=xe(a2,[["render",l2]]),u2=$e({name:"ArtifactView",components:{Artifact:c2},props:{id:{type:String,required:!0}},setup(e){const t=()=>{ii(`Artifact:${e.id} - Mihari`)};nt(()=>{t()}),Ye(()=>e.id,()=>{t()})}});function h2(e,t,n,i,p,u){const d=ue("Artifact",!0);return q(),Me(d,{id:e.id},null,8,["id"])}const f2=xe(u2,[["render",h2]]),d2=$e({name:"ConfigsItem",props:{configs:{type:Array,required:!0}}}),p2={class:"box"},g2={class:"table-container"},m2={class:"table is-fullwidth"},v2=P("thead",null,[P("tr",null,[P("th",null,"Name"),P("th",null,"Type"),P("th",null,"Configured"),P("th",null,"Key-value(s)")])],-1),y2={key:0,class:"button is-success is-small ml-1"},b2={class:"icon is-small"},w2=P("span",null,"Yes",-1),$2={key:1,class:"button is-warning is-small ml-1"},_2={class:"icon is-small"},C2=P("span",null,"No",-1),S2={key:0},A2={key:1};function x2(e,t,n,i,p,u){const d=ue("font-awesome-icon");return q(),oe("div",p2,[P("div",g2,[P("table",m2,[v2,P("tbody",null,[(q(!0),oe(Se,null,ct(e.configs,g=>(q(),oe("tr",{key:g.name},[P("td",null,Ae(g.name),1),P("td",null,Ae(g.type),1),P("td",null,[g.isConfigured?(q(),oe("button",y2,[P("span",b2,[he(d,{icon:"check"})]),w2])):(q(),oe("button",$2,[P("span",_2,[he(d,{icon:"exclamation"})]),C2]))]),P("td",null,[P("ul",null,[(q(!0),oe(Se,null,ct(g.values,(s,h)=>(q(),oe("li",{key:h},[P("strong",null,Ae(s.key),1),et(": "),s.value?(q(),oe("code",S2,Ae(s.value),1)):(q(),oe("span",A2,"N/A"))]))),128))])])]))),128))])])])])}const k2=xe(d2,[["render",x2]]),E2=$e({name:"ConfigsWrapper",components:{Configs:k2,Loading:fn,ErrorMessage:hn},setup(){const e=U1();return nt(async()=>{await e.perform()}),{getConfigsTask:e}}});function R2(e,t,n,i,p,u){var h,o;const d=ue("Loading"),g=ue("ErrorMessage"),s=ue("Configs");return q(),oe(Se,null,[e.getConfigsTask.isRunning?(q(),Me(d,{key:0})):we("",!0),e.getConfigsTask.isError?(q(),Me(g,{key:1,error:(h=e.getConfigsTask.last)==null?void 0:h.error},null,8,["error"])):we("",!0),(o=e.getConfigsTask.last)!=null&&o.value?(q(),Me(s,{key:2,configs:e.getConfigsTask.last.value},null,8,["configs"])):we("",!0)],64)}const L2=xe(E2,[["render",R2]]),T2=$e({name:"ConfigView",components:{Configs:L2},setup(){ii("Config - Mihari")}});function M2(e,t,n,i,p,u){const d=ue("Configs",!0);return q(),Me(d)}const O2=xe(T2,[["render",M2]]);var rp={exports:{}};(function(e,t){(function(){var n="ace",i=function(){return this}();!i&&typeof window<"u"&&(i=window);var p=function(o,r,l){if(typeof o!="string"){p.original?p.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(l=r),p.modules[o]||(p.payloads[o]=l,p.modules[o]=null)};p.modules={},p.payloads={};var u=function(o,r,l){if(typeof r=="string"){var c=s(o,r);if(c!=null)return l&&l(),c}else if(Object.prototype.toString.call(r)==="[object Array]"){for(var a=[],f=0,m=r.length;f<m;++f){var v=s(o,r[f]);if(v==null&&d.original)return;a.push(v)}return l&&l.apply(null,a)||!0}},d=function(o,r){var l=u("",o,r);return l==null&&d.original?d.original.apply(this,arguments):l},g=function(o,r){if(r.indexOf("!")!==-1){var l=r.split("!");return g(o,l[0])+"!"+g(o,l[1])}if(r.charAt(0)=="."){var c=o.split("/").slice(0,-1).join("/");for(r=c+"/"+r;r.indexOf(".")!==-1&&a!=r;){var a=r;r=r.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return r},s=function(o,r){r=g(o,r);var l=p.modules[r];if(!l){if(l=p.payloads[r],typeof l=="function"){var c={},a={id:r,uri:"",exports:c,packaged:!0},f=function(v,y){return u(r,v,y)},m=l(f,c,a);c=m||a.exports,p.modules[r]=c,delete p.payloads[r]}l=p.modules[r]=c||l}return l};function h(o){var r=i;o&&(i[o]||(i[o]={}),r=i[o]),(!r.define||!r.define.packaged)&&(p.original=r.define,r.define=p,r.define.packaged=!0),(!r.require||!r.require.packaged)&&(d.original=r.require,r.require=d,r.require.packaged=!0)}h(n)})(),ace.define("ace/lib/es6-shim",["require","exports","module"],function(n,i,p){function u(d,g,s){Object.defineProperty(d,g,{value:s,enumerable:!1,writable:!0,configurable:!0})}String.prototype.startsWith||u(String.prototype,"startsWith",function(d,g){return g=g||0,this.lastIndexOf(d,g)===g}),String.prototype.endsWith||u(String.prototype,"endsWith",function(d,g){var s=this;(g===void 0||g>s.length)&&(g=s.length),g-=d.length;var h=s.indexOf(d,g);return h!==-1&&h===g}),String.prototype.repeat||u(String.prototype,"repeat",function(d){for(var g="",s=this;d>0;)d&1&&(g+=s),(d>>=1)&&(s+=s);return g}),String.prototype.includes||u(String.prototype,"includes",function(d,g){return this.indexOf(d,g)!=-1}),Object.assign||(Object.assign=function(d){if(d==null)throw new TypeError("Cannot convert undefined or null to object");for(var g=Object(d),s=1;s<arguments.length;s++){var h=arguments[s];h!=null&&Object.keys(h).forEach(function(o){g[o]=h[o]})}return g}),Object.values||(Object.values=function(d){return Object.keys(d).map(function(g){return d[g]})}),Array.prototype.find||u(Array.prototype,"find",function(d){for(var g=this.length,s=arguments[1],h=0;h<g;h++){var o=this[h];if(d.call(s,o,h,this))return o}}),Array.prototype.findIndex||u(Array.prototype,"findIndex",function(d){for(var g=this.length,s=arguments[1],h=0;h<g;h++){var o=this[h];if(d.call(s,o,h,this))return h}}),Array.prototype.includes||u(Array.prototype,"includes",function(d,g){return this.indexOf(d,g)!=-1}),Array.prototype.fill||u(Array.prototype,"fill",function(d){for(var g=this,s=g.length>>>0,h=arguments[1],o=h>>0,r=o<0?Math.max(s+o,0):Math.min(o,s),l=arguments[2],c=l===void 0?s:l>>0,a=c<0?Math.max(s+c,0):Math.min(c,s);r<a;)g[r]=d,r++;return g}),Array.of||u(Array,"of",function(){return Array.prototype.slice.call(arguments)})}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/es6-shim"],function(n,i,p){n("./es6-shim")}),ace.define("ace/lib/deep_copy",["require","exports","module"],function(n,i,p){i.deepCopy=function u(d){if(typeof d!="object"||!d)return d;var g;if(Array.isArray(d)){g=[];for(var s=0;s<d.length;s++)g[s]=u(d[s]);return g}if(Object.prototype.toString.call(d)!=="[object Object]")return d;g={};for(var s in d)g[s]=u(d[s]);return g}}),ace.define("ace/lib/lang",["require","exports","module","ace/lib/deep_copy"],function(n,i,p){i.last=function(g){return g[g.length-1]},i.stringReverse=function(g){return g.split("").reverse().join("")},i.stringRepeat=function(g,s){for(var h="";s>0;)s&1&&(h+=g),(s>>=1)&&(g+=g);return h};var u=/^\s\s*/,d=/\s\s*$/;i.stringTrimLeft=function(g){return g.replace(u,"")},i.stringTrimRight=function(g){return g.replace(d,"")},i.copyObject=function(g){var s={};for(var h in g)s[h]=g[h];return s},i.copyArray=function(g){for(var s=[],h=0,o=g.length;h<o;h++)g[h]&&typeof g[h]=="object"?s[h]=this.copyObject(g[h]):s[h]=g[h];return s},i.deepCopy=n("./deep_copy").deepCopy,i.arrayToMap=function(g){for(var s={},h=0;h<g.length;h++)s[g[h]]=1;return s},i.createMap=function(g){var s=Object.create(null);for(var h in g)s[h]=g[h];return s},i.arrayRemove=function(g,s){for(var h=0;h<=g.length;h++)s===g[h]&&g.splice(h,1)},i.escapeRegExp=function(g){return g.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},i.escapeHTML=function(g){return(""+g).replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},i.getMatchOffsets=function(g,s){var h=[];return g.replace(s,function(o){h.push({offset:arguments[arguments.length-2],length:o.length})}),h},i.deferredCall=function(g){var s=null,h=function(){s=null,g()},o=function(r){return o.cancel(),s=setTimeout(h,r||0),o};return o.schedule=o,o.call=function(){return this.cancel(),g(),o},o.cancel=function(){return clearTimeout(s),s=null,o},o.isPending=function(){return s},o},i.delayedCall=function(g,s){var h=null,o=function(){h=null,g()},r=function(l){h==null&&(h=setTimeout(o,l||s))};return r.delay=function(l){h&&clearTimeout(h),h=setTimeout(o,l||s)},r.schedule=r,r.call=function(){this.cancel(),g()},r.cancel=function(){h&&clearTimeout(h),h=null},r.isPending=function(){return h},r},i.supportsLookbehind=function(){try{new RegExp("(?<=.)")}catch{return!1}return!0},i.supportsUnicodeFlag=function(){try{new RegExp("^.$","u")}catch{return!1}return!0}}),ace.define("ace/lib/useragent",["require","exports","module"],function(n,i,p){i.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},i.getOS=function(){return i.isMac?i.OS.MAC:i.isLinux?i.OS.LINUX:i.OS.WINDOWS};var u=typeof navigator=="object"?navigator:{},d=(/mac|win|linux/i.exec(u.platform)||["other"])[0].toLowerCase(),g=u.userAgent||"",s=u.appName||"";i.isWin=d=="win",i.isMac=d=="mac",i.isLinux=d=="linux",i.isIE=s=="Microsoft Internet Explorer"||s.indexOf("MSAppHost")>=0?parseFloat((g.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((g.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),i.isOldIE=i.isIE&&i.isIE<9,i.isGecko=i.isMozilla=g.match(/ Gecko\/\d+/),i.isOpera=typeof opera=="object"&&Object.prototype.toString.call(window.opera)=="[object Opera]",i.isWebKit=parseFloat(g.split("WebKit/")[1])||void 0,i.isChrome=parseFloat(g.split(" Chrome/")[1])||void 0,i.isEdge=parseFloat(g.split(" Edge/")[1])||void 0,i.isAIR=g.indexOf("AdobeAIR")>=0,i.isAndroid=g.indexOf("Android")>=0,i.isChromeOS=g.indexOf(" CrOS ")>=0,i.isIOS=/iPad|iPhone|iPod/.test(g)&&!window.MSStream,i.isIOS&&(i.isMac=!0),i.isMobile=i.isIOS||i.isAndroid}),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(n,i,p){var u=n("./useragent"),d="http://www.w3.org/1999/xhtml";i.buildDom=function l(c,a,f){if(typeof c=="string"&&c){var m=document.createTextNode(c);return a&&a.appendChild(m),m}if(!Array.isArray(c))return c&&c.appendChild&&a&&a.appendChild(c),c;if(typeof c[0]!="string"||!c[0]){for(var v=[],y=0;y<c.length;y++){var R=l(c[y],a,f);R&&v.push(R)}return v}var C=document.createElement(c[0]),S=c[1],$=1;S&&typeof S=="object"&&!Array.isArray(S)&&($=2);for(var y=$;y<c.length;y++)l(c[y],C,f);return $==2&&Object.keys(S).forEach(function(L){var x=S[L];L==="class"?C.className=Array.isArray(x)?x.join(" "):x:typeof x=="function"||L=="value"||L[0]=="$"?C[L]=x:L==="ref"?f&&(f[x]=C):L==="style"?typeof x=="string"&&(C.style.cssText=x):x!=null&&C.setAttribute(L,x)}),a&&a.appendChild(C),C},i.getDocumentHead=function(l){return l||(l=document),l.head||l.getElementsByTagName("head")[0]||l.documentElement},i.createElement=function(l,c){return document.createElementNS?document.createElementNS(c||d,l):document.createElement(l)},i.removeChildren=function(l){l.innerHTML=""},i.createTextNode=function(l,c){var a=c?c.ownerDocument:document;return a.createTextNode(l)},i.createFragment=function(l){var c=l?l.ownerDocument:document;return c.createDocumentFragment()},i.hasCssClass=function(l,c){var a=(l.className+"").split(/\s+/g);return a.indexOf(c)!==-1},i.addCssClass=function(l,c){i.hasCssClass(l,c)||(l.className+=" "+c)},i.removeCssClass=function(l,c){for(var a=l.className.split(/\s+/g);;){var f=a.indexOf(c);if(f==-1)break;a.splice(f,1)}l.className=a.join(" ")},i.toggleCssClass=function(l,c){for(var a=l.className.split(/\s+/g),f=!0;;){var m=a.indexOf(c);if(m==-1)break;f=!1,a.splice(m,1)}return f&&a.push(c),l.className=a.join(" "),f},i.setCssClass=function(l,c,a){a?i.addCssClass(l,c):i.removeCssClass(l,c)},i.hasCssString=function(l,c){var a=0,f;if(c=c||document,f=c.querySelectorAll("style")){for(;a<f.length;)if(f[a++].id===l)return!0}},i.removeElementById=function(l,c){c=c||document,c.getElementById(l)&&c.getElementById(l).remove()};var g,s=[];i.useStrictCSP=function(l){g=l,l==!1?h():s||(s=[])};function h(){var l=s;s=null,l&&l.forEach(function(c){o(c[0],c[1])})}function o(l,c,a){if(!(typeof document>"u")){if(s){if(a)h();else if(a===!1)return s.push([l,c])}if(!g){var f=a;!a||!a.getRootNode?f=document:(f=a.getRootNode(),(!f||f==a)&&(f=document));var m=f.ownerDocument||f;if(c&&i.hasCssString(c,f))return null;c&&(l+=`
779
779
  /*# sourceURL=ace/css/`+c+" */");var v=i.createElement("style");v.appendChild(m.createTextNode(l)),c&&(v.id=c),f==m&&(f=i.getDocumentHead(m)),f.insertBefore(v,f.firstChild)}}}if(i.importCssString=o,i.importCssStylsheet=function(l,c){i.buildDom(["link",{rel:"stylesheet",href:l}],i.getDocumentHead(c))},i.scrollbarWidth=function(l){var c=i.createElement("ace_inner");c.style.width="100%",c.style.minWidth="0px",c.style.height="200px",c.style.display="block";var a=i.createElement("ace_outer"),f=a.style;f.position="absolute",f.left="-10000px",f.overflow="hidden",f.width="200px",f.minWidth="0px",f.height="150px",f.display="block",a.appendChild(c);var m=l&&l.documentElement||document&&document.documentElement;if(!m)return 0;m.appendChild(a);var v=c.offsetWidth;f.overflow="scroll";var y=c.offsetWidth;return v===y&&(y=a.clientWidth),m.removeChild(a),v-y},i.computedStyle=function(l,c){return window.getComputedStyle(l,"")||{}},i.setStyle=function(l,c,a){l[c]!==a&&(l[c]=a)},i.HAS_CSS_ANIMATION=!1,i.HAS_CSS_TRANSFORMS=!1,i.HI_DPI=u.isWin?typeof window<"u"&&window.devicePixelRatio>=1.5:!0,u.isChromeOS&&(i.HI_DPI=!1),typeof document<"u"){var r=document.createElement("div");i.HI_DPI&&r.style.transform!==void 0&&(i.HAS_CSS_TRANSFORMS=!0),!u.isEdge&&typeof r.style.animationName<"u"&&(i.HAS_CSS_ANIMATION=!0),r=null}i.HAS_CSS_TRANSFORMS?i.translate=function(l,c,a){l.style.transform="translate("+Math.round(c)+"px, "+Math.round(a)+"px)"}:i.translate=function(l,c,a){l.style.top=Math.round(a)+"px",l.style.left=Math.round(c)+"px"}}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(n,i,p){/*
780
780
  * based on code from:
781
781
  *
@@ -1746,4 +1746,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
1746
1746
  title: Title goes here
1747
1747
  description: Description goes here
1748
1748
  created_on: ${t.format("YYYY-MM-DD")}
1749
- queries: []`}const Rx=$e({name:"NewRule",components:{InputForm:hp,ErrorMessage:hn},setup(){const e=Oi(),t=Te(Ex()),n=K1();return{yaml:t,create:async()=>{const u=await n.perform({yaml:t.value});e.push({name:"Rule",params:{id:u.id}})},updateYAML:u=>{t.value=u},createRuleTask:n}}}),Lx={class:"column"},Tx=P("h2",{class:"is-size-2 mb-4"},"New rule",-1),Mx={class:"field is-grouped is-grouped-centered"},Ox={class:"control"},Ix={class:"icon is-small"},Fx=P("span",null,"Create",-1),Nx={key:0},Px=P("hr",null,null,-1);function Dx(e,t,n,i,p,u){var h,o;const d=ue("InputForm"),g=ue("font-awesome-icon"),s=ue("ErrorMessage");return q(),oe("div",Lx,[Tx,he(d,{yaml:e.yaml,"onUpdate:yaml":t[0]||(t[0]=r=>e.yaml=r),onUpdateYaml:e.updateYAML},null,8,["yaml","onUpdateYaml"]),P("div",Mx,[P("p",Ox,[P("a",{class:"button is-primary",onClick:t[1]||(t[1]=(...r)=>e.create&&e.create(...r))},[P("span",Ix,[he(g,{icon:"plus"})]),Fx])])]),(h=e.createRuleTask.last)!=null&&h.error?(q(),oe("div",Nx,[Px,he(s,{error:(o=e.createRuleTask.last)==null?void 0:o.error},null,8,["error"])])):we("",!0)])}const Bx=xe(Rx,[["render",Dx]]),Wx=$e({name:"NewRuleView",components:{NewRule:Bx},setup(){const e=()=>{ii("New rule - Mihari")};nt(()=>{e()})}});function Hx(e,t,n,i,p,u){const d=ue("NewRule",!0);return q(),Me(d)}const Ux=xe(Wx,[["render",Hx]]),zx=$e({name:"YAML",components:{VAceEditor:up},props:{yaml:{type:String,required:!0}},setup(){}}),Vx={class:"block"};function jx(e,t,n,i,p,u){const d=ue("VAceEditor");return q(),oe("div",Vx,[he(d,{class:"vue-ace-editor",value:e.yaml,lang:"yaml",theme:"monokai",options:{readOnly:!0,fontSize:16,maxLines:1e4,minLines:6}},null,8,["value"])])}const Gx=xe(zx,[["render",jx]]),Kx=$e({name:"RuleItem",props:{rule:{type:Object,required:!0}},components:{YAML:Gx,Alerts:Yd,Loading:fn,ErrorMessage:hn},emits:["refresh"],setup(e,t){const n=Oi(),i=j1(),p=G1();return{deleteRule:async()=>{window.confirm(`Are you sure you want to delete ${e.rule.id}?`)&&(await i.perform(e.rule.id),n.push("/"))},runRule:async()=>{await p.perform(e.rule.id),t.emit("refresh")},runRuleTask:p}}}),Yx={class:"column"},Xx={key:0},Zx=P("hr",null,null,-1),Qx={key:1},Jx=P("hr",null,null,-1),qx=P("h2",{class:"is-size-2 mb-4"},"Rule",-1),ek={class:"is-clearfix"},tk={class:"buttons is-pulled-right"},nk=P("span",null,"Run",-1),ik={class:"icon is-small"},rk=P("span",null,"Edit",-1),ok={class:"icon is-small"},sk=P("span",null,"Delete",-1),ak={class:"icon is-small"},lk=P("hr",null,null,-1),ck={class:"column"},uk=P("h2",{class:"is-size-2 mb-4"},"Related alerts",-1);function hk(e,t,n,i,p,u){var l;const d=ue("Loading"),g=ue("ErrorMessage"),s=ue("font-awesome-icon"),h=ue("router-link"),o=ue("YAML"),r=ue("Alerts");return q(),oe(Se,null,[P("div",Yx,[e.runRuleTask.isRunning?(q(),oe("div",Xx,[he(d),Zx])):we("",!0),(l=e.runRuleTask.last)!=null&&l.error?(q(),oe("div",Qx,[he(g,{error:e.runRuleTask.last.error},null,8,["error"]),Jx])):we("",!0),qx,P("p",ek,[P("span",tk,[P("button",{class:"button is-primary is-light is-small",onClick:t[0]||(t[0]=(...c)=>e.runRule&&e.runRule(...c))},[nk,P("span",ik,[he(s,{icon:"arrow-right"})])]),he(h,{class:"button is-info is-light is-small",to:{name:"EditRule",params:{id:e.rule.id}}},{default:dt(()=>[rk,P("span",ok,[he(s,{icon:"edit"})])]),_:1},8,["to"]),P("button",{class:"button is-light is-small",onClick:t[1]||(t[1]=(...c)=>e.deleteRule&&e.deleteRule(...c))},[sk,P("span",ak,[he(s,{icon:"times"})])])])]),he(o,{yaml:e.rule.yaml},null,8,["yaml"])]),lk,P("div",ck,[uk,he(r,{ruleId:e.rule.id},null,8,["ruleId"])])],64)}const fk=xe(Kx,[["render",hk]]),dk=$e({name:"RuleWrapper",components:{Rule:fk,Loading:fn,ErrorMessage:hn},props:{id:{type:String,required:!0}},setup(e){const t=Pd(),n=async()=>{await t.perform(e.id)},i=async()=>{await n()};return nt(async()=>{await n()}),Ye(e,async()=>{await n()}),{getRuleTask:t,refresh:i}}});function pk(e,t,n,i,p,u){var h,o;const d=ue("Loading"),g=ue("ErrorMessage"),s=ue("Rule");return q(),oe(Se,null,[e.getRuleTask.isRunning?(q(),Me(d,{key:0})):we("",!0),e.getRuleTask.isError?(q(),Me(g,{key:1,error:(h=e.getRuleTask.last)==null?void 0:h.error},null,8,["error"])):we("",!0),(o=e.getRuleTask.last)!=null&&o.value?(q(),Me(s,{key:2,rule:e.getRuleTask.last.value,onRefresh:e.refresh},null,8,["rule","onRefresh"])):we("",!0)],64)}const gk=xe(dk,[["render",pk]]),mk=$e({name:"RuleView",components:{Rule:gk},props:{id:{type:String,required:!0}},setup(e){const t=()=>{ii(`Rule:${e.id} - Mihari`)};nt(()=>{t()}),Ye(()=>e.id,()=>{t()})}});function vk(e,t,n,i,p,u){const d=ue("Rule",!0);return q(),Me(d,{id:e.id},null,8,["id"])}const yk=xe(mk,[["render",vk]]),bk=$e({name:"RulesForm",props:{tags:{type:Array,required:!0},page:{type:Number,required:!0},tag:{type:String,required:!1}},setup(e){const t=ts(),n=Te(void 0),i=Te(void 0),p=Qn(e,"tag"),u=Te(void 0),d=Te(void 0),g=()=>{const h=t.query.tag;p.value===void 0&&(p.value=Gi(h))},s=()=>(g(),{description:n.value===""?void 0:n.value,page:e.page,tag:p.value===""?void 0:p.value,title:u.value===""?void 0:u.value,toAt:d.value===""?void 0:d.value,fromAt:i.value===""?void 0:i.value});return Ye(()=>e.tag,()=>{p.value=e.tag}),{description:n,fromAt:i,getSearchParams:s,title:u,toAt:d,tagInput:p}}}),wk={class:"columns"},$k={class:"column"},_k={class:"field is-horizontal"},Ck=P("div",{class:"field-label is-normal"},[P("label",{class:"label"},"Title")],-1),Sk={class:"field-body"},Ak={class:"field"},xk={class:"control"},kk={class:"column"},Ek={class:"field is-horizontal"},Rk=P("div",{class:"field-label is-normal"},[P("label",{class:"label"},"Description")],-1),Lk={class:"field-body"},Tk={class:"field"},Mk={class:"control"},Ok={class:"columns"},Ik={class:"column"},Fk={class:"field is-horizontal"},Nk=P("div",{class:"field-label is-normal"},[P("label",{class:"label"},"Tag")],-1),Pk={class:"field-body"},Dk={class:"field"},Bk={class:"control"},Wk={class:"select"},Hk=P("option",null,null,-1),Uk=P("div",{class:"column"},null,-1),zk={class:"columns"},Vk={class:"column"},jk={class:"field is-horizontal"},Gk=P("div",{class:"field-label is-normal"},[P("label",{class:"label"},"From")],-1),Kk={class:"field-body"},Yk={class:"field"},Xk={class:"control"},Zk={class:"column"},Qk={class:"field is-horizontal"},Jk=P("div",{class:"field-label is-normal"},[P("label",{class:"label"},"To")],-1),qk={class:"field-body"},eE={class:"field"},tE={class:"control"};function nE(e,t,n,i,p,u){return q(),oe(Se,null,[P("div",wk,[P("div",$k,[P("div",_k,[Ck,P("div",Sk,[P("div",Ak,[P("p",xk,[Mt(P("input",{class:"input",type:"text","onUpdate:modelValue":t[0]||(t[0]=d=>e.title=d)},null,512),[[Ft,e.title]])])])])])]),P("div",kk,[P("div",Ek,[Rk,P("div",Lk,[P("div",Tk,[P("p",Mk,[Mt(P("input",{class:"input",type:"text","onUpdate:modelValue":t[1]||(t[1]=d=>e.description=d)},null,512),[[Ft,e.description]])])])])])])]),P("div",Ok,[P("div",Ik,[P("div",Fk,[Nk,P("div",Pk,[P("div",Dk,[P("div",Bk,[P("div",Wk,[Mt(P("select",{"onUpdate:modelValue":t[2]||(t[2]=d=>e.tagInput=d)},[Hk,(q(!0),oe(Se,null,ct(e.tags,d=>(q(),oe("option",{key:d},Ae(d),1))),128))],512),[[yr,e.tagInput]])])])])])])]),Uk]),P("div",zk,[P("div",Vk,[P("div",jk,[Gk,P("div",Kk,[P("div",Yk,[P("p",Xk,[Mt(P("input",{class:"input",type:"date","onUpdate:modelValue":t[3]||(t[3]=d=>e.fromAt=d)},null,512),[[Ft,e.fromAt]])])])])])]),P("div",Zk,[P("div",Qk,[Jk,P("div",qk,[P("div",eE,[P("p",tE,[Mt(P("input",{class:"input",type:"date","onUpdate:modelValue":t[4]||(t[4]=d=>e.toAt=d)},null,512),[[Ft,e.toAt]])])])])])])])],64)}const iE=xe(bk,[["render",nE]]),rE=$e({name:"RulesItem",props:{rules:{type:Object,required:!0}},components:{Pagination:Vd,Tags:Dd},emits:["update-page","refresh-page","update-tag"],setup(e,t){const n=()=>{window.scrollTo({top:0})},i=g=>{n(),t.emit("update-page",g)},p=()=>{n(),t.emit("refresh-page")},u=g=>{n(),t.emit("update-tag",g)},d=Ee(()=>e.rules.rules.length>0);return{updatePage:i,refreshPage:p,updateTag:u,hasRules:d}}}),oE={key:0},sE={class:"table is-fullwidth"},aE=P("tr",null,[P("th",null,"ID"),P("th",null,"Title"),P("th",null,"Description"),P("th",null,"Tags")],-1),lE={class:"help"};function cE(e,t,n,i,p,u){const d=ue("router-link"),g=ue("Tags"),s=ue("Pagination");return q(),oe(Se,null,[e.hasRules?(q(),oe("div",oE,[P("table",sE,[aE,(q(!0),oe(Se,null,ct(e.rules.rules,h=>(q(),oe("tr",{key:h.id},[P("td",null,[he(d,{to:{name:"Rule",params:{id:h.id}}},{default:dt(()=>[et(Ae(h.id),1)]),_:2},1032,["to"])]),P("td",null,Ae(h.title),1),P("td",null,Ae(h.description),1),P("td",null,[he(g,{tags:h.tags,onUpdateTag:e.updateTag},null,8,["tags","onUpdateTag"])])]))),128))])])):we("",!0),he(s,{currentPage:e.rules.currentPage,total:e.rules.total,pageSize:e.rules.pageSize,onUpdatePage:e.updatePage},null,8,["currentPage","total","pageSize","onUpdatePage"]),P("p",lE,"("+Ae(e.rules.total)+" results in total, "+Ae(e.rules.rules.length)+" shown)",1)],64)}const uE=xe(rE,[["render",cE]]),hE=$e({name:"RulesWrapper",components:{Rules:uE,Loading:fn,FormComponent:iE,ErrorMessage:hn},setup(){const e=Te(1),t=Te(void 0),n=Te(),i=V1(),p=Fd(),u=async()=>{var l;const r=(l=n.value)==null?void 0:l.getSearchParams();return await i.perform(r)},d=r=>{e.value=r},g=()=>{e.value=1},s=async()=>{g(),await u()},h=r=>{t.value===r?t.value=void 0:t.value=r,Vt(async()=>await s())},o=async()=>{await s()};return nt(async()=>{p.perform(),await u()}),Ye([e,t],async()=>{Vt(async()=>await u())}),{form:n,getRulesTask:i,getTagsTask:p,page:e,tag:t,refreshPage:o,search:s,updatePage:d,updateTag:h}}}),fE={class:"box mb-6"},dE=P("hr",null,null,-1),pE={class:"column"},gE={class:"field is-grouped is-grouped-centered"},mE={class:"control"},vE={class:"icon is-small"},yE=P("span",null,"Search",-1),bE={key:0},wE=P("hr",null,null,-1);function $E(e,t,n,i,p,u){var r,l,c;const d=ue("FormComponent"),g=ue("font-awesome-icon"),s=ue("Loading"),h=ue("ErrorMessage"),o=ue("Rules");return q(),oe(Se,null,[P("div",fE,[he(d,{ref:"form",tags:((r=e.getTagsTask.last)==null?void 0:r.value)||[],page:e.page,tag:e.tag},null,8,["tags","page","tag"]),dE,P("div",pE,[P("div",gE,[P("p",mE,[P("a",{class:"button is-primary",onClick:t[0]||(t[0]=(...a)=>e.search&&e.search(...a))},[P("span",vE,[he(g,{icon:"search"})]),yE])])])])]),e.getRulesTask.performCount>0?(q(),oe("div",bE,[wE,e.getRulesTask.isRunning?(q(),Me(s,{key:0})):we("",!0),e.getRulesTask.isError?(q(),Me(h,{key:1,error:(l=e.getRulesTask.last)==null?void 0:l.error},null,8,["error"])):we("",!0),(c=e.getRulesTask.last)!=null&&c.value?(q(),Me(o,{key:2,rules:e.getRulesTask.last.value,onRefreshPage:e.refreshPage,onUpdatePage:e.updatePage,onUpdateTag:e.updateTag},null,8,["rules","onRefreshPage","onUpdatePage","onUpdateTag"])):we("",!0)])):we("",!0)],64)}const _E=xe(hE,[["render",$E]]),CE=$e({name:"RulesView",components:{Rules:_E},setup(){ii("Rules - Mihari")}});function SE(e,t,n,i,p,u){const d=ue("Rules",!0);return q(),Me(d)}const AE=xe(CE,[["render",SE]]),xE=[{path:"/",name:"Alerts",component:vC},{path:"/configs",name:"Configs",component:O2},{path:"/artifacts/:id",name:"Artifact",component:f2,props:!0},{path:"/rules",name:"Rules",component:AE},{path:"/rules/new",name:"NewRule",component:Ux},{path:"/rules/:id",name:"Rule",component:yk,props:!0},{path:"/rules/:id/edit",name:"EditRule",component:wx,props:!0}],kE=Yb({history:ub(),routes:xE});Kg.add(Jg,am,Qg,lm,em,Xg,im,nm,sm,om);const fp=If(j0);fp.component("font-awesome-icon",L0);fp.use(kE).mount("#app");
1749
+ queries: []`}const Rx=$e({name:"NewRule",components:{InputForm:hp,ErrorMessage:hn},setup(){const e=Oi(),t=Te(Ex()),n=K1();return{yaml:t,create:async()=>{const u=await n.perform({yaml:t.value});e.push({name:"Rule",params:{id:u.id}})},updateYAML:u=>{t.value=u},createRuleTask:n}}}),Lx={class:"column"},Tx=P("h2",{class:"is-size-2 mb-4"},"New rule",-1),Mx={class:"field is-grouped is-grouped-centered"},Ox={class:"control"},Ix={class:"icon is-small"},Fx=P("span",null,"Create",-1),Nx={key:0},Px=P("hr",null,null,-1);function Dx(e,t,n,i,p,u){var h,o;const d=ue("InputForm"),g=ue("font-awesome-icon"),s=ue("ErrorMessage");return q(),oe("div",Lx,[Tx,he(d,{yaml:e.yaml,"onUpdate:yaml":t[0]||(t[0]=r=>e.yaml=r),onUpdateYaml:e.updateYAML},null,8,["yaml","onUpdateYaml"]),P("div",Mx,[P("p",Ox,[P("a",{class:"button is-primary",onClick:t[1]||(t[1]=(...r)=>e.create&&e.create(...r))},[P("span",Ix,[he(g,{icon:"plus"})]),Fx])])]),(h=e.createRuleTask.last)!=null&&h.error?(q(),oe("div",Nx,[Px,he(s,{error:(o=e.createRuleTask.last)==null?void 0:o.error},null,8,["error"])])):we("",!0)])}const Bx=xe(Rx,[["render",Dx]]),Wx=$e({name:"NewRuleView",components:{NewRule:Bx},setup(){const e=()=>{ii("New rule - Mihari")};nt(()=>{e()})}});function Hx(e,t,n,i,p,u){const d=ue("NewRule",!0);return q(),Me(d)}const Ux=xe(Wx,[["render",Hx]]),zx=$e({name:"YAML",components:{VAceEditor:up},props:{yaml:{type:String,required:!0}},setup(){}}),Vx={class:"block"};function jx(e,t,n,i,p,u){const d=ue("VAceEditor");return q(),oe("div",Vx,[he(d,{class:"vue-ace-editor",value:e.yaml,lang:"yaml",theme:"monokai",options:{readOnly:!0,fontSize:16,maxLines:1e4,minLines:6}},null,8,["value"])])}const Gx=xe(zx,[["render",jx]]),Kx=$e({name:"RuleItem",props:{rule:{type:Object,required:!0}},components:{YAML:Gx,Alerts:Yd,Loading:fn,ErrorMessage:hn},emits:["refresh"],setup(e,t){const n=Oi(),i=j1(),p=G1();return{deleteRule:async()=>{window.confirm(`Are you sure you want to delete ${e.rule.id}?`)&&(await i.perform(e.rule.id),n.push("/"))},runRule:async()=>{await p.perform(e.rule.id),t.emit("refresh")},runRuleTask:p}}}),Yx={class:"column"},Xx={key:0},Zx=P("hr",null,null,-1),Qx={key:1},Jx=P("hr",null,null,-1),qx=P("h2",{class:"is-size-2 mb-4"},"Rule",-1),ek={class:"block is-clearfix"},tk={class:"buttons is-pulled-right"},nk=P("span",null,"Run",-1),ik={class:"icon is-small"},rk=P("span",null,"Edit",-1),ok={class:"icon is-small"},sk=P("span",null,"Delete",-1),ak={class:"icon is-small"},lk=P("hr",null,null,-1),ck={class:"column"},uk=P("h2",{class:"is-size-2 mb-4"},"Related alerts",-1);function hk(e,t,n,i,p,u){var l;const d=ue("Loading"),g=ue("ErrorMessage"),s=ue("font-awesome-icon"),h=ue("router-link"),o=ue("YAML"),r=ue("Alerts");return q(),oe(Se,null,[P("div",Yx,[e.runRuleTask.isRunning?(q(),oe("div",Xx,[he(d),Zx])):we("",!0),(l=e.runRuleTask.last)!=null&&l.error?(q(),oe("div",Qx,[he(g,{error:e.runRuleTask.last.error},null,8,["error"]),Jx])):we("",!0),qx,P("p",ek,[P("span",tk,[P("button",{class:"button is-primary is-light is-small",onClick:t[0]||(t[0]=(...c)=>e.runRule&&e.runRule(...c))},[nk,P("span",ik,[he(s,{icon:"arrow-right"})])]),he(h,{class:"button is-info is-light is-small",to:{name:"EditRule",params:{id:e.rule.id}}},{default:dt(()=>[rk,P("span",ok,[he(s,{icon:"edit"})])]),_:1},8,["to"]),P("button",{class:"button is-light is-small",onClick:t[1]||(t[1]=(...c)=>e.deleteRule&&e.deleteRule(...c))},[sk,P("span",ak,[he(s,{icon:"times"})])])])]),he(o,{yaml:e.rule.yaml},null,8,["yaml"])]),lk,P("div",ck,[uk,he(r,{ruleId:e.rule.id},null,8,["ruleId"])])],64)}const fk=xe(Kx,[["render",hk]]),dk=$e({name:"RuleWrapper",components:{Rule:fk,Loading:fn,ErrorMessage:hn},props:{id:{type:String,required:!0}},setup(e){const t=Pd(),n=async()=>{await t.perform(e.id)},i=async()=>{await n()};return nt(async()=>{await n()}),Ye(e,async()=>{await n()}),{getRuleTask:t,refresh:i}}});function pk(e,t,n,i,p,u){var h,o;const d=ue("Loading"),g=ue("ErrorMessage"),s=ue("Rule");return q(),oe(Se,null,[e.getRuleTask.isRunning?(q(),Me(d,{key:0})):we("",!0),e.getRuleTask.isError?(q(),Me(g,{key:1,error:(h=e.getRuleTask.last)==null?void 0:h.error},null,8,["error"])):we("",!0),(o=e.getRuleTask.last)!=null&&o.value?(q(),Me(s,{key:2,rule:e.getRuleTask.last.value,onRefresh:e.refresh},null,8,["rule","onRefresh"])):we("",!0)],64)}const gk=xe(dk,[["render",pk]]),mk=$e({name:"RuleView",components:{Rule:gk},props:{id:{type:String,required:!0}},setup(e){const t=()=>{ii(`Rule:${e.id} - Mihari`)};nt(()=>{t()}),Ye(()=>e.id,()=>{t()})}});function vk(e,t,n,i,p,u){const d=ue("Rule",!0);return q(),Me(d,{id:e.id},null,8,["id"])}const yk=xe(mk,[["render",vk]]),bk=$e({name:"RulesForm",props:{tags:{type:Array,required:!0},page:{type:Number,required:!0},tag:{type:String,required:!1}},setup(e){const t=ts(),n=Te(void 0),i=Te(void 0),p=Qn(e,"tag"),u=Te(void 0),d=Te(void 0),g=()=>{const h=t.query.tag;p.value===void 0&&(p.value=Gi(h))},s=()=>(g(),{description:n.value===""?void 0:n.value,page:e.page,tag:p.value===""?void 0:p.value,title:u.value===""?void 0:u.value,toAt:d.value===""?void 0:d.value,fromAt:i.value===""?void 0:i.value});return Ye(()=>e.tag,()=>{p.value=e.tag}),{description:n,fromAt:i,getSearchParams:s,title:u,toAt:d,tagInput:p}}}),wk={class:"columns"},$k={class:"column"},_k={class:"field is-horizontal"},Ck=P("div",{class:"field-label is-normal"},[P("label",{class:"label"},"Title")],-1),Sk={class:"field-body"},Ak={class:"field"},xk={class:"control"},kk={class:"column"},Ek={class:"field is-horizontal"},Rk=P("div",{class:"field-label is-normal"},[P("label",{class:"label"},"Description")],-1),Lk={class:"field-body"},Tk={class:"field"},Mk={class:"control"},Ok={class:"columns"},Ik={class:"column"},Fk={class:"field is-horizontal"},Nk=P("div",{class:"field-label is-normal"},[P("label",{class:"label"},"Tag")],-1),Pk={class:"field-body"},Dk={class:"field"},Bk={class:"control"},Wk={class:"select"},Hk=P("option",null,null,-1),Uk=P("div",{class:"column"},null,-1),zk={class:"columns"},Vk={class:"column"},jk={class:"field is-horizontal"},Gk=P("div",{class:"field-label is-normal"},[P("label",{class:"label"},"From")],-1),Kk={class:"field-body"},Yk={class:"field"},Xk={class:"control"},Zk={class:"column"},Qk={class:"field is-horizontal"},Jk=P("div",{class:"field-label is-normal"},[P("label",{class:"label"},"To")],-1),qk={class:"field-body"},eE={class:"field"},tE={class:"control"};function nE(e,t,n,i,p,u){return q(),oe(Se,null,[P("div",wk,[P("div",$k,[P("div",_k,[Ck,P("div",Sk,[P("div",Ak,[P("p",xk,[Mt(P("input",{class:"input",type:"text","onUpdate:modelValue":t[0]||(t[0]=d=>e.title=d)},null,512),[[Ft,e.title]])])])])])]),P("div",kk,[P("div",Ek,[Rk,P("div",Lk,[P("div",Tk,[P("p",Mk,[Mt(P("input",{class:"input",type:"text","onUpdate:modelValue":t[1]||(t[1]=d=>e.description=d)},null,512),[[Ft,e.description]])])])])])])]),P("div",Ok,[P("div",Ik,[P("div",Fk,[Nk,P("div",Pk,[P("div",Dk,[P("div",Bk,[P("div",Wk,[Mt(P("select",{"onUpdate:modelValue":t[2]||(t[2]=d=>e.tagInput=d)},[Hk,(q(!0),oe(Se,null,ct(e.tags,d=>(q(),oe("option",{key:d},Ae(d),1))),128))],512),[[yr,e.tagInput]])])])])])])]),Uk]),P("div",zk,[P("div",Vk,[P("div",jk,[Gk,P("div",Kk,[P("div",Yk,[P("p",Xk,[Mt(P("input",{class:"input",type:"date","onUpdate:modelValue":t[3]||(t[3]=d=>e.fromAt=d)},null,512),[[Ft,e.fromAt]])])])])])]),P("div",Zk,[P("div",Qk,[Jk,P("div",qk,[P("div",eE,[P("p",tE,[Mt(P("input",{class:"input",type:"date","onUpdate:modelValue":t[4]||(t[4]=d=>e.toAt=d)},null,512),[[Ft,e.toAt]])])])])])])])],64)}const iE=xe(bk,[["render",nE]]),rE=$e({name:"RulesItem",props:{rules:{type:Object,required:!0}},components:{Pagination:Vd,Tags:Dd},emits:["update-page","refresh-page","update-tag"],setup(e,t){const n=()=>{window.scrollTo({top:0})},i=g=>{n(),t.emit("update-page",g)},p=()=>{n(),t.emit("refresh-page")},u=g=>{n(),t.emit("update-tag",g)},d=Ee(()=>e.rules.rules.length>0);return{updatePage:i,refreshPage:p,updateTag:u,hasRules:d}}}),oE={key:0},sE={class:"table is-fullwidth"},aE=P("tr",null,[P("th",null,"ID"),P("th",null,"Title"),P("th",null,"Description"),P("th",null,"Tags")],-1),lE={class:"help"};function cE(e,t,n,i,p,u){const d=ue("router-link"),g=ue("Tags"),s=ue("Pagination");return q(),oe(Se,null,[e.hasRules?(q(),oe("div",oE,[P("table",sE,[aE,(q(!0),oe(Se,null,ct(e.rules.rules,h=>(q(),oe("tr",{key:h.id},[P("td",null,[he(d,{to:{name:"Rule",params:{id:h.id}}},{default:dt(()=>[et(Ae(h.id),1)]),_:2},1032,["to"])]),P("td",null,Ae(h.title),1),P("td",null,Ae(h.description),1),P("td",null,[he(g,{tags:h.tags,onUpdateTag:e.updateTag},null,8,["tags","onUpdateTag"])])]))),128))])])):we("",!0),he(s,{currentPage:e.rules.currentPage,total:e.rules.total,pageSize:e.rules.pageSize,onUpdatePage:e.updatePage},null,8,["currentPage","total","pageSize","onUpdatePage"]),P("p",lE,"("+Ae(e.rules.total)+" results in total, "+Ae(e.rules.rules.length)+" shown)",1)],64)}const uE=xe(rE,[["render",cE]]),hE=$e({name:"RulesWrapper",components:{Rules:uE,Loading:fn,FormComponent:iE,ErrorMessage:hn},setup(){const e=Te(1),t=Te(void 0),n=Te(),i=V1(),p=Fd(),u=async()=>{var l;const r=(l=n.value)==null?void 0:l.getSearchParams();return await i.perform(r)},d=r=>{e.value=r},g=()=>{e.value=1},s=async()=>{g(),await u()},h=r=>{t.value===r?t.value=void 0:t.value=r,Vt(async()=>await s())},o=async()=>{await s()};return nt(async()=>{p.perform(),await u()}),Ye([e,t],async()=>{Vt(async()=>await u())}),{form:n,getRulesTask:i,getTagsTask:p,page:e,tag:t,refreshPage:o,search:s,updatePage:d,updateTag:h}}}),fE={class:"box mb-6"},dE=P("hr",null,null,-1),pE={class:"column"},gE={class:"field is-grouped is-grouped-centered"},mE={class:"control"},vE={class:"icon is-small"},yE=P("span",null,"Search",-1),bE={key:0},wE=P("hr",null,null,-1);function $E(e,t,n,i,p,u){var r,l,c;const d=ue("FormComponent"),g=ue("font-awesome-icon"),s=ue("Loading"),h=ue("ErrorMessage"),o=ue("Rules");return q(),oe(Se,null,[P("div",fE,[he(d,{ref:"form",tags:((r=e.getTagsTask.last)==null?void 0:r.value)||[],page:e.page,tag:e.tag},null,8,["tags","page","tag"]),dE,P("div",pE,[P("div",gE,[P("p",mE,[P("a",{class:"button is-primary",onClick:t[0]||(t[0]=(...a)=>e.search&&e.search(...a))},[P("span",vE,[he(g,{icon:"search"})]),yE])])])])]),e.getRulesTask.performCount>0?(q(),oe("div",bE,[wE,e.getRulesTask.isRunning?(q(),Me(s,{key:0})):we("",!0),e.getRulesTask.isError?(q(),Me(h,{key:1,error:(l=e.getRulesTask.last)==null?void 0:l.error},null,8,["error"])):we("",!0),(c=e.getRulesTask.last)!=null&&c.value?(q(),Me(o,{key:2,rules:e.getRulesTask.last.value,onRefreshPage:e.refreshPage,onUpdatePage:e.updatePage,onUpdateTag:e.updateTag},null,8,["rules","onRefreshPage","onUpdatePage","onUpdateTag"])):we("",!0)])):we("",!0)],64)}const _E=xe(hE,[["render",$E]]),CE=$e({name:"RulesView",components:{Rules:_E},setup(){ii("Rules - Mihari")}});function SE(e,t,n,i,p,u){const d=ue("Rules",!0);return q(),Me(d)}const AE=xe(CE,[["render",SE]]),xE=[{path:"/",name:"Alerts",component:vC},{path:"/configs",name:"Configs",component:O2},{path:"/artifacts/:id",name:"Artifact",component:f2,props:!0},{path:"/rules",name:"Rules",component:AE},{path:"/rules/new",name:"NewRule",component:Ux},{path:"/rules/:id",name:"Rule",component:yk,props:!0},{path:"/rules/:id/edit",name:"EditRule",component:wx,props:!0}],kE=Yb({history:ub(),routes:xE});Kg.add(Jg,am,Qg,lm,em,Xg,im,nm,sm,om);const fp=If(j0);fp.component("font-awesome-icon",L0);fp.use(kE).mount("#app");
@@ -6,8 +6,8 @@
6
6
  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
7
7
  <link rel="icon" href="/favicon.ico" />
8
8
  <title>Mihari</title>
9
- <script type="module" crossorigin src="/assets/index-b5d817a3.js"></script>
10
- <link rel="stylesheet" href="/assets/index-33165282.css">
9
+ <script type="module" crossorigin src="/assets/index-9cc489e6.js"></script>
10
+ <link rel="stylesheet" href="/assets/index-56fc2187.css">
11
11
  </head>
12
12
  <body>
13
13
  <noscript>
data/lib/mihari.rb CHANGED
@@ -69,16 +69,43 @@ module Mihari
69
69
  end
70
70
  memoize :emitters
71
71
 
72
+ #
73
+ # @return [Hash<String, Mihari::Enrichers::Base>]
74
+ #
75
+ def emitter_to_class
76
+ @emitter_to_class ||= emitters.flat_map do |klass|
77
+ klass.class_keys.map { |key| [key.downcase, klass] }
78
+ end.to_h
79
+ end
80
+
72
81
  def analyzers
73
82
  []
74
83
  end
75
84
  memoize :analyzers
76
85
 
86
+ #
87
+ # @return [Hash<String, Mihari::Analyzers::Base>]
88
+ #
89
+ def analyzer_to_class
90
+ @analyzer_to_class ||= analyzers.flat_map do |klass|
91
+ klass.class_keys.map { |key| [key.downcase, klass] }
92
+ end.to_h
93
+ end
94
+
77
95
  def enrichers
78
96
  []
79
97
  end
80
98
  memoize :enrichers
81
99
 
100
+ #
101
+ # @return [Hash<String, Mihari::Enrichers::Base>]
102
+ #
103
+ def enricher_to_class
104
+ @enricher_to_class ||= enrichers.flat_map do |klass|
105
+ klass.class_keys.map { |key| [key.downcase, klass] }
106
+ end.to_h
107
+ end
108
+
82
109
  def config
83
110
  @config ||= Config.new
84
111
  end
@@ -103,46 +130,11 @@ module Mihari
103
130
  end
104
131
  end
105
132
 
106
- # Constants
107
- require "mihari/constants"
108
-
109
- # Types
110
- require "mihari/types"
111
-
112
133
  # Core classes
134
+ require "mihari/base"
113
135
  require "mihari/database"
114
- require "mihari/type_checker"
115
136
  require "mihari/http"
116
-
117
- # Services
118
- require "mihari/services/rule_builder"
119
- require "mihari/services/rule_proxy"
120
- require "mihari/services/rule_runner"
121
-
122
- require "mihari/services/alert_builder"
123
- require "mihari/services/alert_proxy"
124
- require "mihari/services/alert_runner"
125
-
126
- # Structs
127
- require "mihari/structs/binaryedge"
128
- require "mihari/structs/censys"
129
- require "mihari/structs/config"
130
- require "mihari/structs/filters"
131
- require "mihari/structs/google_public_dns"
132
- require "mihari/structs/greynoise"
133
- require "mihari/structs/ipinfo"
134
- require "mihari/structs/hunterhow"
135
- require "mihari/structs/onyphe"
136
- require "mihari/structs/shodan"
137
- require "mihari/structs/urlscan"
138
- require "mihari/structs/virustotal_intelligence"
139
-
140
- # Schemas
141
- require "mihari/schemas/macros"
142
-
143
- require "mihari/schemas/alert"
144
- require "mihari/schemas/analyzer"
145
- require "mihari/schemas/rule"
137
+ require "mihari/type_checker"
146
138
 
147
139
  # Enrichers
148
140
  require "mihari/enrichers/base"
@@ -220,6 +212,44 @@ require "mihari/analyzers/zoomeye"
220
212
 
221
213
  require "mihari/analyzers/rule"
222
214
 
215
+ # Types
216
+ require "mihari/types"
217
+
218
+ # Constants
219
+ require "mihari/constants"
220
+
221
+ # Structs
222
+ require "mihari/structs/binaryedge"
223
+ require "mihari/structs/censys"
224
+ require "mihari/structs/config"
225
+ require "mihari/structs/filters"
226
+ require "mihari/structs/google_public_dns"
227
+ require "mihari/structs/greynoise"
228
+ require "mihari/structs/ipinfo"
229
+ require "mihari/structs/hunterhow"
230
+ require "mihari/structs/onyphe"
231
+ require "mihari/structs/shodan"
232
+ require "mihari/structs/urlscan"
233
+ require "mihari/structs/virustotal_intelligence"
234
+
235
+ # Schemas
236
+ require "mihari/schemas/macros"
237
+
238
+ require "mihari/schemas/options"
239
+
240
+ require "mihari/schemas/alert"
241
+ require "mihari/schemas/analyzer"
242
+ require "mihari/schemas/rule"
243
+
244
+ # Services
245
+ require "mihari/services/rule_builder"
246
+ require "mihari/services/rule_proxy"
247
+ require "mihari/services/rule_runner"
248
+
249
+ require "mihari/services/alert_builder"
250
+ require "mihari/services/alert_proxy"
251
+ require "mihari/services/alert_runner"
252
+
223
253
  # Entities
224
254
  require "mihari/entities/message"
225
255
 
data/mihari.gemspec CHANGED
@@ -94,6 +94,7 @@ Gem::Specification.new do |spec|
94
94
  spec.add_dependency "slack-notifier", "2.4.0"
95
95
  spec.add_dependency "sqlite3", "1.6.7"
96
96
  spec.add_dependency "thor", "1.3.0"
97
+ spec.add_dependency "thor-hollaback", "0.2.1"
97
98
  spec.add_dependency "uuidtools", "2.2.0"
98
99
  spec.add_dependency "whois", "5.1.0"
99
100
  spec.add_dependency "whois-parser", "2.0.0"
data/mkdocs.yml CHANGED
@@ -8,9 +8,6 @@ plugins:
8
8
  tags:
9
9
  enabled: true
10
10
  tags_file: tags.md
11
- tags_slugify: !!python/object/apply:pymdownx.slugs.slugify
12
- kwds:
13
- case: lower
14
11
 
15
12
  nav:
16
13
  - Requirements: requirements.md
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mihari
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.5.0
4
+ version: 5.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manabu Niseki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-21 00:00:00.000000000 Z
11
+ date: 2023-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -766,6 +766,20 @@ dependencies:
766
766
  - - '='
767
767
  - !ruby/object:Gem::Version
768
768
  version: 1.3.0
769
+ - !ruby/object:Gem::Dependency
770
+ name: thor-hollaback
771
+ requirement: !ruby/object:Gem::Requirement
772
+ requirements:
773
+ - - '='
774
+ - !ruby/object:Gem::Version
775
+ version: 0.2.1
776
+ type: :runtime
777
+ prerelease: false
778
+ version_requirements: !ruby/object:Gem::Requirement
779
+ requirements:
780
+ - - '='
781
+ - !ruby/object:Gem::Version
782
+ version: 0.2.1
769
783
  - !ruby/object:Gem::Dependency
770
784
  name: uuidtools
771
785
  requirement: !ruby/object:Gem::Requirement
@@ -976,6 +990,7 @@ files:
976
990
  - lib/mihari/analyzers/virustotal.rb
977
991
  - lib/mihari/analyzers/virustotal_intelligence.rb
978
992
  - lib/mihari/analyzers/zoomeye.rb
993
+ - lib/mihari/base.rb
979
994
  - lib/mihari/cli/alert.rb
980
995
  - lib/mihari/cli/base.rb
981
996
  - lib/mihari/cli/database.rb
@@ -1061,6 +1076,7 @@ files:
1061
1076
  - lib/mihari/schemas/emitter.rb
1062
1077
  - lib/mihari/schemas/enricher.rb
1063
1078
  - lib/mihari/schemas/macros.rb
1079
+ - lib/mihari/schemas/options.rb
1064
1080
  - lib/mihari/schemas/rule.rb
1065
1081
  - lib/mihari/services/alert_builder.rb
1066
1082
  - lib/mihari/services/alert_proxy.rb
@@ -1094,8 +1110,8 @@ files:
1094
1110
  - lib/mihari/web/endpoints/tags.rb
1095
1111
  - lib/mihari/web/middleware/connection_adapter.rb
1096
1112
  - lib/mihari/web/middleware/error_notification_adapter.rb
1097
- - lib/mihari/web/public/assets/index-33165282.css
1098
- - lib/mihari/web/public/assets/index-b5d817a3.js
1113
+ - lib/mihari/web/public/assets/index-56fc2187.css
1114
+ - lib/mihari/web/public/assets/index-9cc489e6.js
1099
1115
  - lib/mihari/web/public/assets/mode-yaml-a21faa53.js
1100
1116
  - lib/mihari/web/public/favicon.ico
1101
1117
  - lib/mihari/web/public/index.html