From 97d9d4218ef178e5f1e28d8653d7f253e2e61448 Mon Sep 17 00:00:00 2001 From: Carson Date: Fri, 1 Oct 2021 15:57:18 -0500 Subject: [PATCH 1/5] Add snapshot test for https://github.com/rstudio/shiny/issues/3519 which was fixed via https://github.com/rstudio/bslib/pull/372 --- DESCRIPTION | 1 + tests/testthat/_snaps/tabPanel.md | 35 +++++++++++++++++++++++++++++++ tests/testthat/test-tabPanel.R | 6 +++++- 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 8fb1a3a02f..0379739f1a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -201,6 +201,7 @@ Collate: 'version_selectize.R' 'version_strftime.R' 'viewer.R' +Remotes: rstudio/bslib RoxygenNote: 7.1.2 Encoding: UTF-8 Roxygen: list(markdown = TRUE) diff --git a/tests/testthat/_snaps/tabPanel.md b/tests/testthat/_snaps/tabPanel.md index 5d19e6dbfc..139973421a 100644 --- a/tests/testthat/_snaps/tabPanel.md +++ b/tests/testthat/_snaps/tabPanel.md @@ -142,6 +142,41 @@ +--- + + Code + dropdown_active + Output +
+ +
+
a
+
b
+
c
+
+
+ # navbarPage() markup is correct Code diff --git a/tests/testthat/test-tabPanel.R b/tests/testthat/test-tabPanel.R index 96d56d5971..869079272a 100644 --- a/tests/testthat/test-tabPanel.R +++ b/tests/testthat/test-tabPanel.R @@ -41,7 +41,6 @@ panels <- list( ) test_that("tabsetPanel() markup is correct", { - default <- tabset_panel(!!!panels) pills <- tabset_panel( !!!panels, type = "pills", selected = "B", @@ -54,6 +53,11 @@ test_that("tabsetPanel() markup is correct", { # BS4 expect_snapshot_bslib(default) expect_snapshot_bslib(pills) + + # Make sure .active class gets added to both the .dropdown as well as the + # .dropdown-menu's tab + dropdown_active <- tabset_panel(!!!panels, selected = "C") + expect_snapshot2(dropdown_active) }) test_that("navbarPage() markup is correct", { From 9516edc56d150a181d8ae1a2282175d768526797 Mon Sep 17 00:00:00 2001 From: cpsievert Date: Fri, 1 Oct 2021 21:03:11 +0000 Subject: [PATCH 2/5] sync package version (GitHub Actions) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 72e130b01b..a4663e3052 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "homepage": "https://shiny.rstudio.com", "repository": "github:rstudio/shiny", "name": "@types/rstudio-shiny", - "version": "1.7.0", + "version": "1.7.0-alpha.9000", "license": "GPL-3.0-only", "main": "", "browser": "", From d0148626219e68e08ac39f118cdee2f7f9b8bf7e Mon Sep 17 00:00:00 2001 From: cpsievert Date: Fri, 1 Oct 2021 21:05:12 +0000 Subject: [PATCH 3/5] yarn build (GitHub Actions) --- inst/www/shared/shiny-autoreload.js | 2 +- inst/www/shared/shiny-showcase.css | 2 +- inst/www/shared/shiny-showcase.js | 2 +- inst/www/shared/shiny-testmode.js | 2 +- inst/www/shared/shiny.js | 4 ++-- inst/www/shared/shiny.min.css | 2 +- inst/www/shared/shiny.min.js | 4 ++-- inst/www/shared/shiny.min.js.map | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/inst/www/shared/shiny-autoreload.js b/inst/www/shared/shiny-autoreload.js index 0c768f6ef8..f8a058eba3 100644 --- a/inst/www/shared/shiny-autoreload.js +++ b/inst/www/shared/shiny-autoreload.js @@ -1,3 +1,3 @@ -/*! shiny 1.7.0 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ +/*! shiny 1.7.0.9000 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ (function(){var t="ws:";window.location.protocol==="https:"&&(t="wss:");var o=window.location.pathname;/\/$/.test(o)||(o+="/");o+="autoreload/";var n=new WebSocket(t+"//"+window.location.host+o);n.onmessage=function(a){a.data==="autoreload"&&window.location.reload()};})(); //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjdHMvZXh0cmFzL3NoaW55LWF1dG9yZWxvYWQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIGVzbGludC1kaXNhYmxlIHVuaWNvcm4vZmlsZW5hbWUtY2FzZSAqL1xudmFyIHByb3RvY29sID0gXCJ3czpcIjtcbmlmICh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT09IFwiaHR0cHM6XCIpIHByb3RvY29sID0gXCJ3c3M6XCI7XG52YXIgZGVmYXVsdFBhdGggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG5pZiAoIS9cXC8kLy50ZXN0KGRlZmF1bHRQYXRoKSkgZGVmYXVsdFBhdGggKz0gXCIvXCI7XG5kZWZhdWx0UGF0aCArPSBcImF1dG9yZWxvYWQvXCI7XG52YXIgd3MgPSBuZXcgV2ViU29ja2V0KHByb3RvY29sICsgXCIvL1wiICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyBkZWZhdWx0UGF0aCk7XG5cbndzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICBpZiAoZXZlbnQuZGF0YSA9PT0gXCJhdXRvcmVsb2FkXCIpIHtcbiAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gIH1cbn07XG5cbmV4cG9ydCB7fTsiXSwKICAibWFwcGluZ3MiOiAiO1lBQ0EsR0FBSSxHQUFXLE1BQ2YsQUFBSSxPQUFPLFNBQVMsV0FBYSxVQUFVLEdBQVcsUUFDdEQsR0FBSSxHQUFjLE9BQU8sU0FBUyxTQUNsQyxBQUFLLE1BQU0sS0FBSyxJQUFjLElBQWUsS0FDN0MsR0FBZSxjQUNmLEdBQUksR0FBSyxHQUFJLFdBQVUsRUFBVyxLQUFPLE9BQU8sU0FBUyxLQUFPLEdBRWhFLEVBQUcsVUFBWSxTQUFVLEVBQU8sQ0FDOUIsQUFBSSxFQUFNLE9BQVMsY0FDakIsT0FBTyxTQUFTIiwKICAibmFtZXMiOiBbXQp9Cg== diff --git a/inst/www/shared/shiny-showcase.css b/inst/www/shared/shiny-showcase.css index f555be50a0..15b8aa1d4d 100644 --- a/inst/www/shared/shiny-showcase.css +++ b/inst/www/shared/shiny-showcase.css @@ -1,2 +1,2 @@ -/*! shiny 1.7.0 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ +/*! shiny 1.7.0.9000 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ #showcase-well{border-radius:0}.shiny-code{background-color:#fff;margin-bottom:0}.shiny-code code{font-family:Menlo,Consolas,"Courier New",monospace}.shiny-code-container{margin-top:20px;clear:both}.shiny-code-container h3{display:inline;margin-right:15px}.showcase-header{font-size:16px;font-weight:normal}.showcase-code-link{text-align:right;padding:15px}#showcase-app-container{vertical-align:top}#showcase-code-tabs{margin-right:15px}#showcase-code-tabs pre{border:none;line-height:1em}#showcase-code-tabs .nav{margin-bottom:0}#showcase-code-tabs ul{margin-bottom:0}#showcase-code-tabs .tab-content{border-style:solid;border-color:#e5e5e5;border-width:0px 1px 1px 1px;overflow:auto;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#showcase-app-code{width:100%}#showcase-code-position-toggle{float:right}#showcase-sxs-code{padding-top:20px;vertical-align:top}.showcase-code-license{display:block;text-align:right}#showcase-code-content pre{background-color:#fff} diff --git a/inst/www/shared/shiny-showcase.js b/inst/www/shared/shiny-showcase.js index ac96475bfd..48d704e8e0 100644 --- a/inst/www/shared/shiny-showcase.js +++ b/inst/www/shared/shiny-showcase.js @@ -1,3 +1,3 @@ -/*! shiny 1.7.0 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ +/*! shiny 1.7.0.9000 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ (function(){var en=Object.create;var ee=Object.defineProperty;var rn=Object.getOwnPropertyDescriptor;var tn=Object.getOwnPropertyNames;var nn=Object.getPrototypeOf,an=Object.prototype.hasOwnProperty;var on=function(e){return ee(e,"__esModule",{value:!0})};var l=function(e,r){return function(){return r||e((r={exports:{}}).exports,r),r.exports}};var ln=function(e,r,t){if(r&&typeof r=="object"||typeof r=="function")for(var n=tn(r),i=0,a=n.length,o;i0?gi:pi)(e)}});var me=l(function(qo,Ur){var yi=_(),hi=Math.min;Ur.exports=function(e){return e>0?hi(yi(e),9007199254740991):0}});var Wr=l(function(So,kr){var bi=_(),xi=Math.max,mi=Math.min;kr.exports=function(e,r){var t=bi(e);return t<0?xi(t+r,0):mi(t,r)}});var Kr=l(function(wo,Gr){var Ei=B(),qi=me(),Si=Wr(),Hr=function(e){return function(r,t,n){var i=Ei(r),a=qi(i.length),o=Si(n,a),s;if(e&&t!=t){for(;a>o;)if(s=i[o++],s!=s)return!0}else for(;a>o;o++)if((e||o in i)&&i[o]===t)return e||o||0;return!e&&-1}};Gr.exports={includes:Hr(!0),indexOf:Hr(!1)}});var Xr=l(function(Io,zr){var Ee=m(),wi=B(),Ii=Kr().indexOf,Pi=ve();zr.exports=function(e,r){var t=wi(e),n=0,i=[],a;for(a in t)!Ee(Pi,a)&&Ee(t,a)&&i.push(a);for(;r.length>n;)Ee(t,a=r[n++])&&(~Ii(i,a)||i.push(a));return i}});var Jr=l(function(Po,Yr){Yr.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var Qr=l(function(Zr){var Oi=Xr(),ji=Jr(),Ti=ji.concat("length","prototype");Zr.f=Object.getOwnPropertyNames||function(r){return Oi(r,Ti)}});var et=l(function(Vr){Vr.f=Object.getOwnPropertySymbols});var tt=l(function(To,rt){var _i=xe(),Ci=Qr(),Ri=et(),Ai=j();rt.exports=_i("Reflect","ownKeys")||function(r){var t=Ci.f(Ai(r)),n=Ri.f;return n?t.concat(n(r)):t}});var it=l(function(_o,nt){var Ni=m(),Di=tt(),Mi=le(),Bi=se();nt.exports=function(e,r){for(var t=Di(r),n=Bi.f,i=Mi.f,a=0;a0&&(!t.multiline||t.multiline&&r[t.lastIndex-1]!=="\n")&&(f="(?: "+f+")",c=" "+c,v++),i=new RegExp("^(?:"+f+")",u)),Ie&&(i=new RegExp("^"+f+"$(?!\\s)",u)),we&&(n=t.lastIndex),a=G.call(s?i:t,c),s?a?(a.input=a.input.slice(v),a[0]=a[0].slice(v),a.index=t.lastIndex,t.lastIndex+=a[0].length):t.lastIndex=0:we&&a&&(t.lastIndex=t.global?a.index+a[0].length:n),Ie&&a&&a.length>1&&Vi.call(a[0],i,function(){for(o=1;o=74)&&(h=Oe.match(/Chrome\/(\d+)/),h&&(z=h[1])));wt.exports=z&&+z});var je=l(function($o,Ot){var Pt=It(),ia=b();Ot.exports=!!Object.getOwnPropertySymbols&&!ia(function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&Pt&&Pt<41})});var Tt=l(function(Uo,jt){var aa=je();jt.exports=aa&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var At=l(function(ko,Rt){var oa=g(),la=k(),_t=m(),sa=fe(),Ct=je(),ua=Tt(),R=la("wks"),A=oa.Symbol,ca=ua?A:A&&A.withoutSetter||sa;Rt.exports=function(e){return(!_t(R,e)||!(Ct||typeof R[e]=="string"))&&(Ct&&_t(A,e)?R[e]=A[e]:R[e]=ca("Symbol."+e)),R[e]}});var Ft=l(function(Wo,Lt){"use strict";Pe();var Nt=ye(),fa=K(),X=b(),Te=At(),va=q(),da=Te("species"),_e=RegExp.prototype,pa=!X(function(){var e=/./;return e.exec=function(){var r=[];return r.groups={a:"7"},r},"".replace(e,"$")!=="7"}),Dt=function(){return"a".replace(/./,"$0")==="$0"}(),Mt=Te("replace"),Bt=function(){return/./[Mt]?/./[Mt]("a","$0")==="":!1}(),ga=!X(function(){var e=/(?:)/,r=e.exec;e.exec=function(){return r.apply(this,arguments)};var t="ab".split(e);return t.length!==2||t[0]!=="a"||t[1]!=="b"});Lt.exports=function(e,r,t,n){var i=Te(e),a=!X(function(){var c={};return c[i]=function(){return 7},""[e](c)!=7}),o=a&&!X(function(){var c=!1,d=/a/;return e==="split"&&(d={},d.constructor={},d.constructor[da]=function(){return d},d.flags="",d[i]=/./[i]),d.exec=function(){return c=!0,null},d[i](""),!c});if(!a||!o||e==="replace"&&!(pa&&Dt&&!Bt)||e==="split"&&!ga){var s=/./[i],u=t(i,""[e],function(c,d,y,N,S){var p=d.exec;return p===fa||p===_e.exec?a&&!S?{done:!0,value:s.call(d,y,N)}:{done:!0,value:c.call(y,d,N)}:{done:!1}},{REPLACE_KEEPS_$0:Dt,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:Bt}),f=u[0],v=u[1];Nt(String.prototype,e,f),Nt(_e,i,r==2?function(c,d){return v.call(c,this,d)}:function(c){return v.call(c,this)})}n&&va(_e[i],"sham",!0)}});var kt=l(function(Ho,Ut){var ya=_(),ha=P(),$t=function(e){return function(r,t){var n=String(ha(r)),i=ya(t),a=n.length,o,s;return i<0||i>=a?e?"":void 0:(o=n.charCodeAt(i),o<55296||o>56319||i+1===a||(s=n.charCodeAt(i+1))<56320||s>57343?e?n.charAt(i):o:e?n.slice(i,i+2):(o-55296<<10)+(s-56320)+65536)}};Ut.exports={codeAt:$t(!1),charAt:$t(!0)}});var Ht=l(function(Go,Wt){"use strict";var ba=kt().charAt;Wt.exports=function(e,r,t){return r+(t?ba(e,r).length:1)}});var Kt=l(function(Ko,Gt){var xa=ie(),ma=Math.floor,Ea="".replace,qa=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,Sa=/\$([$&'`]|\d{1,2})/g;Gt.exports=function(e,r,t,n,i,a){var o=t+e.length,s=n.length,u=Sa;return i!==void 0&&(i=xa(i),u=qa),Ea.call(a,u,function(f,v){var c;switch(v.charAt(0)){case"$":return"$";case"&":return e;case"`":return r.slice(0,t);case"'":return r.slice(o);case"<":c=i[v.slice(1,-1)];break;default:var d=+v;if(d===0)return f;if(d>s){var y=ma(d/10);return y===0?f:y<=s?n[y-1]===void 0?v.charAt(1):n[y-1]+v.charAt(1):f}c=n[d-1]}return c===void 0?"":c})}});var Xt=l(function(zo,zt){var wa=te(),Ia=K();zt.exports=function(e,r){var t=e.exec;if(typeof t=="function"){var n=t.call(e,r);if(typeof n!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return n}if(wa(e)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return Ia.call(e,r)}});var Jo=sn(Pe());"use strict";var Pa=Ft(),Oa=j(),ja=me(),Ta=_(),_a=P(),Ca=Ht(),Ra=Kt(),Aa=Xt(),Na=Math.max,Da=Math.min,Ma=function(e){return e===void 0?e:String(e)};Pa("replace",2,function(e,r,t,n){var i=n.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,a=n.REPLACE_KEEPS_$0,o=i?"$":"$0";return[function(u,f){var v=_a(this),c=u==null?void 0:u[e];return c!==void 0?c.call(u,v,f):r.call(String(v),u,f)},function(s,u){if(!i&&a||typeof u=="string"&&u.indexOf(o)===-1){var f=t(r,s,this,u);if(f.done)return f.value}var v=Oa(s),c=String(this),d=typeof u=="function";d||(u=String(u));var y=v.global;if(y){var N=v.unicode;v.lastIndex=0}for(var S=[];;){var p=Aa(v,c);if(p===null||(S.push(p),!y))break;var Vt=String(p[0]);Vt===""&&(v.lastIndex=Ca(c,ja(v.lastIndex),N))}for(var Ne="",D=0,Y=0;Y=D&&(Ne+=c.slice(D,w)+Me,D=w+J.length)}return Ne+c.slice(D)}]});var Yt=400;function Ce(e,r){var t=0;if(e.nodeType===3){var n=e.nodeValue.replace(/\n/g,"").length;if(n>=r)return{element:e,offset:r};t+=n}else if(e.nodeType===1&&e.firstChild){var i=Ce(e.firstChild,r);if(i.element!==null)return i;t+=i.offset}return e.nextSibling?Ce(e.nextSibling,r-t):{element:null,offset:t}}function Re(e,r,t){for(var n=0,i=0;i show below':' show with app'}),r&&$(document.body).animate({scrollTop:0},n),Ae=r,Zt(r&&t),$(window).trigger("resize")};function Zt(e){var r=960,t=r,n=1,i=document.getElementById("showcase-app-code").offsetWidth;i/2>r?t=i/2:i*.66>r?t=960:(t=i*.66,n=t/r);var a=document.getElementById("showcase-app-container");$(a).animate({width:t+"px",zoom:n*100+"%"},e?Yt:0)}var La=function(){Jt(!Ae,!0)},Fa=function(){document.body.offsetWidth>1350&&Jt(!0,!1)};function Qt(){document.getElementById("showcase-code-content").style.height=$(window).height()+"px"}function $a(){var e=document.getElementById("showcase-markdown-content");if(e!==null){var r=e.innerText||e.innerHTML,t=window.Showdown.converter;document.getElementById("readme-md").innerHTML=new t().makeHtml(r)}}$(window).resize(function(){Ae&&(Zt(!1),Qt())});window.toggleCodePosition=La;$(window).on("load",Fa);$(window).on("load",$a);window.hljs&&window.hljs.initHighlightingOnLoad();})(); //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtZ2xvYmFsLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQtc3RvcmUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZGVmaW5lLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wYXRoLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZmxhZ3MuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1zdGlja3ktaGVscGVycy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtc3Vic3RpdHV0aW9uLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdC5qcyIsICIuLi8uLi8uLi9zcmN0cy9leHRyYXMvc2hpbnktc2hvd2Nhc2UudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09IE1hdGggJiYgaXQ7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxubW9kdWxlLmV4cG9ydHMgPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tZ2xvYmFsLXRoaXMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSAnb2JqZWN0JyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYpIHx8XG4gIGNoZWNrKHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMgLS0gZmFsbGJhY2tcbiAgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pKCkgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsICJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwgInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBEZXRlY3QgSUU4J3MgaW5jb21wbGV0ZSBkZWZpbmVQcm9wZXJ0eSBpbXBsZW1lbnRhdGlvblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pWzFdICE9IDc7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gTmFzaG9ybiB+IEpESzggYnVnXG52YXIgTkFTSE9STl9CVUcgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgJiYgISRwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGVgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnByb3BlcnR5aXNlbnVtZXJhYmxlXG5leHBvcnRzLmYgPSBOQVNIT1JOX0JVRyA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKFYpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgVik7XG4gIHJldHVybiAhIWRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlO1xufSA6ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsICJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwgInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcbiIsICJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciBzcGxpdCA9ICcnLnNwbGl0O1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucyAtLSBzYWZlXG4gIHJldHVybiAhT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT0gJ1N0cmluZycgPyBzcGxpdC5jYWxsKGl0LCAnJykgOiBPYmplY3QoaXQpO1xufSA6IE9iamVjdDtcbiIsICIvLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwgIi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCAibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCAidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgUFJFRkVSUkVEX1NUUklORykge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaW5wdXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCAidmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCAidmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaGFzT3duIHx8IGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCAidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCAidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWllZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPSA3O1xufSk7XG4iLCAidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIXByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59O1xuIiwgInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGl0KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCAidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/ICRkZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsICJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwgInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGdsb2JhbCwga2V5LCB2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZ2xvYmFsW2tleV0gPSB2YWx1ZTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuIiwgInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgc2V0R2xvYmFsKFNIQVJFRCwge30pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN0b3JlO1xuIiwgInZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxudmFyIGZ1bmN0aW9uVG9TdHJpbmcgPSBGdW5jdGlvbi50b1N0cmluZztcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKHR5cGVvZiBzdG9yZS5pbnNwZWN0U291cmNlICE9ICdmdW5jdGlvbicpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nLmNhbGwoaXQpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0b3JlLmluc3BlY3RTb3VyY2U7XG4iLCAidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KGluc3BlY3RTb3VyY2UoV2Vha01hcCkpO1xuIiwgIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCAidmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMTQuMCcsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnXHUwMEE5IDIwMjEgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiIsICJ2YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJyArIFN0cmluZyhrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5KSArICcpXycgKyAoKytpZCArIHBvc3RmaXgpLnRvU3RyaW5nKDM2KTtcbn07XG4iLCAidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwgIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCAidmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIG9iamVjdEhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCB8fCBzaGFyZWQuc3RhdGUpIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgdmFyIHdtZ2V0ID0gc3RvcmUuZ2V0O1xuICB2YXIgd21oYXMgPSBzdG9yZS5oYXM7XG4gIHZhciB3bXNldCA9IHN0b3JlLnNldDtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmICh3bWhhcy5jYWxsKHN0b3JlLCBpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHdtc2V0LmNhbGwoc3RvcmUsIGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21nZXQuY2FsbChzdG9yZSwgaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21oYXMuY2FsbChzdG9yZSwgaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAob2JqZWN0SGFzKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBvYmplY3RIYXMoaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gb2JqZWN0SGFzKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xudmFyIFRFTVBMQVRFID0gU3RyaW5nKFN0cmluZykuc3BsaXQoJ1N0cmluZycpO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgdW5zYWZlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy51bnNhZmUgOiBmYWxzZTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMgPyAhIW9wdGlvbnMuZW51bWVyYWJsZSA6IGZhbHNlO1xuICB2YXIgbm9UYXJnZXRHZXQgPSBvcHRpb25zID8gISFvcHRpb25zLm5vVGFyZ2V0R2V0IDogZmFsc2U7XG4gIHZhciBzdGF0ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgJiYgIWhhcyh2YWx1ZSwgJ25hbWUnKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHZhbHVlLCAnbmFtZScsIGtleSk7XG4gICAgfVxuICAgIHN0YXRlID0gZW5mb3JjZUludGVybmFsU3RhdGUodmFsdWUpO1xuICAgIGlmICghc3RhdGUuc291cmNlKSB7XG4gICAgICBzdGF0ZS5zb3VyY2UgPSBURU1QTEFURS5qb2luKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBrZXkgOiAnJyk7XG4gICAgfVxuICB9XG4gIGlmIChPID09PSBnbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIHNldEdsb2JhbChrZXksIHZhbHVlKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAoIXVuc2FmZSkge1xuICAgIGRlbGV0ZSBPW2tleV07XG4gIH0gZWxzZSBpZiAoIW5vVGFyZ2V0R2V0ICYmIE9ba2V5XSkge1xuICAgIHNpbXBsZSA9IHRydWU7XG4gIH1cbiAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gIGVsc2UgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KE8sIGtleSwgdmFsdWUpO1xuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBpbnNwZWN0U291cmNlKHRoaXMpO1xufSk7XG4iLCAidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWw7XG4iLCAidmFyIHBhdGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGF0aCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxudmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uICh2YXJpYWJsZSkge1xuICByZXR1cm4gdHlwZW9mIHZhcmlhYmxlID09ICdmdW5jdGlvbicgPyB2YXJpYWJsZSA6IHVuZGVmaW5lZDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGFGdW5jdGlvbihwYXRoW25hbWVzcGFjZV0pIHx8IGFGdW5jdGlvbihnbG9iYWxbbmFtZXNwYWNlXSlcbiAgICA6IHBhdGhbbmFtZXNwYWNlXSAmJiBwYXRoW25hbWVzcGFjZV1bbWV0aG9kXSB8fCBnbG9iYWxbbmFtZXNwYWNlXSAmJiBnbG9iYWxbbmFtZXNwYWNlXVttZXRob2RdO1xufTtcbiIsICJ2YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBUb0ludGVnZXJgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2ludGVnZXJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc05hTihhcmd1bWVudCA9ICthcmd1bWVudCkgPyAwIDogKGFyZ3VtZW50ID4gMCA/IGZsb29yIDogY2VpbCkoYXJndW1lbnQpO1xufTtcbiIsICJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID4gMCA/IG1pbih0b0ludGVnZXIoYXJndW1lbnQpLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCAidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihpbnRlZ2VyLCBsZW5ndGgpLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICB2YXIgaW50ZWdlciA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsICJ2YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBpbmRleE9mLCBpbmNsdWRlcyB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiAgaW5jbHVkZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuICBpbmRleE9mOiBjcmVhdGVNZXRob2QoZmFsc2UpXG59O1xuIiwgInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSAhaGFzKGhpZGRlbktleXMsIGtleSkgJiYgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5pbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgIi8vIElFOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdjb25zdHJ1Y3RvcicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgJ3RvU3RyaW5nJyxcbiAgJ3ZhbHVlT2YnXG5dO1xuIiwgInZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCAidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwgInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhcyh0YXJnZXQsIGtleSkpIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgfVxufTtcbiIsICJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09IE5BVElWRSA/IGZhbHNlXG4gICAgOiB0eXBlb2YgZGV0ZWN0aW9uID09ICdmdW5jdGlvbicgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMubm9UYXJnZXRHZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdIHx8IHNldEdsb2JhbChUQVJHRVQsIHt9KTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQgPSAoZ2xvYmFsW1RBUkdFVF0gfHwge30pLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLm5vVGFyZ2V0R2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT09IHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSkgY29udGludWU7XG4gICAgICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSk7XG4gICAgfVxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8ICh0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHNvdXJjZVByb3BlcnR5LCAnc2hhbScsIHRydWUpO1xuICAgIH1cbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLmZsYWdzYCBnZXR0ZXIgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0LXJlZ2V4cC5wcm90b3R5cGUuZmxhZ3Ncbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIGlmICh0aGF0Lmdsb2JhbCkgcmVzdWx0ICs9ICdnJztcbiAgaWYgKHRoYXQuaWdub3JlQ2FzZSkgcmVzdWx0ICs9ICdpJztcbiAgaWYgKHRoYXQubXVsdGlsaW5lKSByZXN1bHQgKz0gJ20nO1xuICBpZiAodGhhdC5kb3RBbGwpIHJlc3VsdCArPSAncyc7XG4gIGlmICh0aGF0LnVuaWNvZGUpIHJlc3VsdCArPSAndSc7XG4gIGlmICh0aGF0LnN0aWNreSkgcmVzdWx0ICs9ICd5JztcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL2ZhaWxzJyk7XG5cbi8vIGJhYmVsLW1pbmlmeSB0cmFuc3BpbGVzIFJlZ0V4cCgnYScsICd5JykgLT4gL2EveSBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yLFxuLy8gc28gd2UgdXNlIGFuIGludGVybWVkaWF0ZSBmdW5jdGlvbi5cbmZ1bmN0aW9uIFJFKHMsIGYpIHtcbiAgcmV0dXJuIFJlZ0V4cChzLCBmKTtcbn1cblxuZXhwb3J0cy5VTlNVUFBPUlRFRF9ZID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBiYWJlbC1taW5pZnkgdHJhbnNwaWxlcyBSZWdFeHAoJ2EnLCAneScpIC0+IC9hL3kgYW5kIGl0IGNhdXNlcyBTeW50YXhFcnJvclxuICB2YXIgcmUgPSBSRSgnYScsICd5Jyk7XG4gIHJlLmxhc3RJbmRleCA9IDI7XG4gIHJldHVybiByZS5leGVjKCdhYmNkJykgIT0gbnVsbDtcbn0pO1xuXG5leHBvcnRzLkJST0tFTl9DQVJFVCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNjg3XG4gIHZhciByZSA9IFJFKCdecicsICdneScpO1xuICByZS5sYXN0SW5kZXggPSAyO1xuICByZXR1cm4gcmUuZXhlYygnc3RyJykgIT0gbnVsbDtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIHJlZ2V4cC9uby1hc3NlcnRpb24tY2FwdHVyaW5nLWdyb3VwLCByZWdleHAvbm8tZW1wdHktZ3JvdXAsIHJlZ2V4cC9uby1sYXp5LWVuZHMgLS0gdGVzdGluZyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVnZXhwL25vLXVzZWxlc3MtcXVhbnRpZmllciAtLSB0ZXN0aW5nICovXG52YXIgcmVnZXhwRmxhZ3MgPSByZXF1aXJlKCcuL3JlZ2V4cC1mbGFncycpO1xudmFyIHN0aWNreUhlbHBlcnMgPSByZXF1aXJlKCcuL3JlZ2V4cC1zdGlja3ktaGVscGVycycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vc2hhcmVkJyk7XG5cbnZhciBuYXRpdmVFeGVjID0gUmVnRXhwLnByb3RvdHlwZS5leGVjO1xudmFyIG5hdGl2ZVJlcGxhY2UgPSBzaGFyZWQoJ25hdGl2ZS1zdHJpbmctcmVwbGFjZScsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSk7XG5cbnZhciBwYXRjaGVkRXhlYyA9IG5hdGl2ZUV4ZWM7XG5cbnZhciBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUxID0gL2EvO1xuICB2YXIgcmUyID0gL2IqL2c7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTEsICdhJyk7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTIsICdhJyk7XG4gIHJldHVybiByZTEubGFzdEluZGV4ICE9PSAwIHx8IHJlMi5sYXN0SW5kZXggIT09IDA7XG59KSgpO1xuXG52YXIgVU5TVVBQT1JURURfWSA9IHN0aWNreUhlbHBlcnMuVU5TVVBQT1JURURfWSB8fCBzdGlja3lIZWxwZXJzLkJST0tFTl9DQVJFVDtcblxuLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXAsIGNvcGllZCBmcm9tIGVzNS1zaGltJ3MgU3RyaW5nI3NwbGl0IHBhdGNoLlxudmFyIE5QQ0dfSU5DTFVERUQgPSAvKCk/Py8uZXhlYygnJylbMV0gIT09IHVuZGVmaW5lZDtcblxudmFyIFBBVENIID0gVVBEQVRFU19MQVNUX0lOREVYX1dST05HIHx8IE5QQ0dfSU5DTFVERUQgfHwgVU5TVVBQT1JURURfWTtcblxuaWYgKFBBVENIKSB7XG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHIpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBsYXN0SW5kZXgsIHJlQ29weSwgbWF0Y2gsIGk7XG4gICAgdmFyIHN0aWNreSA9IFVOU1VQUE9SVEVEX1kgJiYgcmUuc3RpY2t5O1xuICAgIHZhciBmbGFncyA9IHJlZ2V4cEZsYWdzLmNhbGwocmUpO1xuICAgIHZhciBzb3VyY2UgPSByZS5zb3VyY2U7XG4gICAgdmFyIGNoYXJzQWRkZWQgPSAwO1xuICAgIHZhciBzdHJDb3B5ID0gc3RyO1xuXG4gICAgaWYgKHN0aWNreSkge1xuICAgICAgZmxhZ3MgPSBmbGFncy5yZXBsYWNlKCd5JywgJycpO1xuICAgICAgaWYgKGZsYWdzLmluZGV4T2YoJ2cnKSA9PT0gLTEpIHtcbiAgICAgICAgZmxhZ3MgKz0gJ2cnO1xuICAgICAgfVxuXG4gICAgICBzdHJDb3B5ID0gU3RyaW5nKHN0cikuc2xpY2UocmUubGFzdEluZGV4KTtcbiAgICAgIC8vIFN1cHBvcnQgYW5jaG9yZWQgc3RpY2t5IGJlaGF2aW9yLlxuICAgICAgaWYgKHJlLmxhc3RJbmRleCA+IDAgJiYgKCFyZS5tdWx0aWxpbmUgfHwgcmUubXVsdGlsaW5lICYmIHN0cltyZS5sYXN0SW5kZXggLSAxXSAhPT0gJ1xcbicpKSB7XG4gICAgICAgIHNvdXJjZSA9ICcoPzogJyArIHNvdXJjZSArICcpJztcbiAgICAgICAgc3RyQ29weSA9ICcgJyArIHN0ckNvcHk7XG4gICAgICAgIGNoYXJzQWRkZWQrKztcbiAgICAgIH1cbiAgICAgIC8vIF4oPyArIHJ4ICsgKSBpcyBuZWVkZWQsIGluIGNvbWJpbmF0aW9uIHdpdGggc29tZSBzdHIgc2xpY2luZywgdG9cbiAgICAgIC8vIHNpbXVsYXRlIHRoZSAneScgZmxhZy5cbiAgICAgIHJlQ29weSA9IG5ldyBSZWdFeHAoJ14oPzonICsgc291cmNlICsgJyknLCBmbGFncyk7XG4gICAgfVxuXG4gICAgaWYgKE5QQ0dfSU5DTFVERUQpIHtcbiAgICAgIHJlQ29weSA9IG5ldyBSZWdFeHAoJ14nICsgc291cmNlICsgJyQoPyFcXFxccyknLCBmbGFncyk7XG4gICAgfVxuICAgIGlmIChVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcpIGxhc3RJbmRleCA9IHJlLmxhc3RJbmRleDtcblxuICAgIG1hdGNoID0gbmF0aXZlRXhlYy5jYWxsKHN0aWNreSA/IHJlQ29weSA6IHJlLCBzdHJDb3B5KTtcblxuICAgIGlmIChzdGlja3kpIHtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBtYXRjaC5pbnB1dCA9IG1hdGNoLmlucHV0LnNsaWNlKGNoYXJzQWRkZWQpO1xuICAgICAgICBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKGNoYXJzQWRkZWQpO1xuICAgICAgICBtYXRjaC5pbmRleCA9IHJlLmxhc3RJbmRleDtcbiAgICAgICAgcmUubGFzdEluZGV4ICs9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIH0gZWxzZSByZS5sYXN0SW5kZXggPSAwO1xuICAgIH0gZWxzZSBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HICYmIG1hdGNoKSB7XG4gICAgICByZS5sYXN0SW5kZXggPSByZS5nbG9iYWwgPyBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCA6IGxhc3RJbmRleDtcbiAgICB9XG4gICAgaWYgKE5QQ0dfSU5DTFVERUQgJiYgbWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGBcbiAgICAgIC8vIGZvciBOUENHLCBsaWtlIElFOC4gTk9URTogVGhpcyBkb2Vzbicgd29yayBmb3IgLyguPyk/L1xuICAgICAgbmF0aXZlUmVwbGFjZS5jYWxsKG1hdGNoWzBdLCByZUNvcHksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZmluZWQpIG1hdGNoW2ldID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYycpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5leGVjYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS5leGVjXG4kKHsgdGFyZ2V0OiAnUmVnRXhwJywgcHJvdG86IHRydWUsIGZvcmNlZDogLy4vLmV4ZWMgIT09IGV4ZWMgfSwge1xuICBleGVjOiBleGVjXG59KTtcbiIsICJ2YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCduYXZpZ2F0b3InLCAndXNlckFnZW50JykgfHwgJyc7XG4iLCAidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucztcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4O1xudmFyIG1hdGNoLCB2ZXJzaW9uO1xuXG5pZiAodjgpIHtcbiAgbWF0Y2ggPSB2OC5zcGxpdCgnLicpO1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPCA0ID8gMSA6IG1hdGNoWzBdICsgbWF0Y2hbMV07XG59IGVsc2UgaWYgKHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9IG1hdGNoWzFdO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmVyc2lvbiAmJiArdmVyc2lvbjtcbiIsICIvKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBzeW1ib2wgPSBTeW1ib2woKTtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gYGdldC1vd24tcHJvcGVydHktc3ltYm9sc2AgcG9seWZpbGwgc3ltYm9scyBjb252ZXJ0ZWQgdG8gb2JqZWN0IGFyZSBub3QgU3ltYm9sIGluc3RhbmNlc1xuICByZXR1cm4gIVN0cmluZyhzeW1ib2wpIHx8ICEoT2JqZWN0KHN5bWJvbCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8XG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsICIvKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfU1lNQk9MXG4gICYmICFTeW1ib2wuc2hhbVxuICAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnO1xuIiwgInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtc3ltYm9sJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBjcmVhdGVXZWxsS25vd25TeW1ib2wgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IFN5bWJvbCA6IFN5bWJvbCAmJiBTeW1ib2wud2l0aG91dFNldHRlciB8fCB1aWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFoYXMoV2VsbEtub3duU3ltYm9sc1N0b3JlLCBuYW1lKSB8fCAhKE5BVElWRV9TWU1CT0wgfHwgdHlwZW9mIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9PSAnc3RyaW5nJykpIHtcbiAgICBpZiAoTkFUSVZFX1NZTUJPTCAmJiBoYXMoU3ltYm9sLCBuYW1lKSkge1xuICAgICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gU3ltYm9sW25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gICAgfVxuICB9IHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3MgbW92ZWQgdG8gZW50cnkgcG9pbnRzXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciByZWdleHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG52YXIgUmVnRXhwUHJvdG90eXBlID0gUmVnRXhwLnByb3RvdHlwZTtcblxudmFyIFJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gI3JlcGxhY2UgbmVlZHMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgbmFtZWQgZ3JvdXBzLlxuICAvLyAjbWF0Y2ggd29ya3MgZmluZSBiZWNhdXNlIGl0IGp1c3QgcmV0dXJuIHRoZSBleGVjIHJlc3VsdHMsIGV2ZW4gaWYgaXQgaGFzXG4gIC8vIGEgXCJncm9wc1wiIHByb3BlcnR5LlxuICB2YXIgcmUgPSAvLi87XG4gIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHJlc3VsdC5ncm91cHMgPSB7IGE6ICc3JyB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIHJldHVybiAnJy5yZXBsYWNlKHJlLCAnJDxhPicpICE9PSAnNyc7XG59KTtcblxuLy8gSUUgPD0gMTEgcmVwbGFjZXMgJDAgd2l0aCB0aGUgd2hvbGUgbWF0Y2gsIGFzIGlmIGl0IHdhcyAkJlxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNjAyNDY2Ni9nZXR0aW5nLWllLXRvLXJlcGxhY2UtYS1yZWdleC13aXRoLXRoZS1saXRlcmFsLXN0cmluZy0wXG52YXIgUkVQTEFDRV9LRUVQU18kMCA9IChmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWdleHAvcHJlZmVyLWVzY2FwZS1yZXBsYWNlbWVudC1kb2xsYXItY2hhciAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gJ2EnLnJlcGxhY2UoLy4vLCAnJDAnKSA9PT0gJyQwJztcbn0pKCk7XG5cbnZhciBSRVBMQUNFID0gd2VsbEtub3duU3ltYm9sKCdyZXBsYWNlJyk7XG4vLyBTYWZhcmkgPD0gMTMuMC4zKD8pIHN1YnN0aXR1dGVzIG50aCBjYXB0dXJlIHdoZXJlIG4+bSB3aXRoIGFuIGVtcHR5IHN0cmluZ1xudmFyIFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFID0gKGZ1bmN0aW9uICgpIHtcbiAgaWYgKC8uL1tSRVBMQUNFXSkge1xuICAgIHJldHVybiAvLi9bUkVQTEFDRV0oJ2EnLCAnJDAnKSA9PT0gJyc7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSkoKTtcblxuLy8gQ2hyb21lIDUxIGhhcyBhIGJ1Z2d5IFwic3BsaXRcIiBpbXBsZW1lbnRhdGlvbiB3aGVuIFJlZ0V4cCNleGVjICE9PSBuYXRpdmVFeGVjXG4vLyBXZWV4IEpTIGhhcyBmcm96ZW4gYnVpbHQtaW4gcHJvdG90eXBlcywgc28gdXNlIHRyeSAvIGNhdGNoIHdyYXBwZXJcbnZhciBTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLWVtcHR5LWdyb3VwIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHZhciByZSA9IC8oPzopLztcbiAgdmFyIG9yaWdpbmFsRXhlYyA9IHJlLmV4ZWM7XG4gIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvcmlnaW5hbEV4ZWMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfTtcbiAgdmFyIHJlc3VsdCA9ICdhYicuc3BsaXQocmUpO1xuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCAhPT0gMiB8fCByZXN1bHRbMF0gIT09ICdhJyB8fCByZXN1bHRbMV0gIT09ICdiJztcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGxlbmd0aCwgZXhlYywgc2hhbSkge1xuICB2YXIgU1lNQk9MID0gd2VsbEtub3duU3ltYm9sKEtFWSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19TWU1CT0wgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN0cmluZyBtZXRob2RzIGNhbGwgc3ltYm9sLW5hbWVkIFJlZ0VwIG1ldGhvZHNcbiAgICB2YXIgTyA9IHt9O1xuICAgIE9bU1lNQk9MXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH07XG4gICAgcmV0dXJuICcnW0tFWV0oTykgIT0gNztcbiAgfSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19FWEVDID0gREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN5bWJvbC1uYW1lZCBSZWdFeHAgbWV0aG9kcyBjYWxsIC5leGVjXG4gICAgdmFyIGV4ZWNDYWxsZWQgPSBmYWxzZTtcbiAgICB2YXIgcmUgPSAvYS87XG5cbiAgICBpZiAoS0VZID09PSAnc3BsaXQnKSB7XG4gICAgICAvLyBXZSBjYW4ndCB1c2UgcmVhbCByZWdleCBoZXJlIHNpbmNlIGl0IGNhdXNlcyBkZW9wdGltaXphdGlvblxuICAgICAgLy8gYW5kIHNlcmlvdXMgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24gaW4gVjhcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMDZcbiAgICAgIHJlID0ge307XG4gICAgICAvLyBSZWdFeHBbQEBzcGxpdF0gZG9lc24ndCBjYWxsIHRoZSByZWdleCdzIGV4ZWMgbWV0aG9kLCBidXQgZmlyc3QgY3JlYXRlc1xuICAgICAgLy8gYSBuZXcgb25lLiBXZSBuZWVkIHRvIHJldHVybiB0aGUgcGF0Y2hlZCByZWdleCB3aGVuIGNyZWF0aW5nIHRoZSBuZXcgb25lLlxuICAgICAgcmUuY29uc3RydWN0b3IgPSB7fTtcbiAgICAgIHJlLmNvbnN0cnVjdG9yW1NQRUNJRVNdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmU7IH07XG4gICAgICByZS5mbGFncyA9ICcnO1xuICAgICAgcmVbU1lNQk9MXSA9IC8uL1tTWU1CT0xdO1xuICAgIH1cblxuICAgIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7IGV4ZWNDYWxsZWQgPSB0cnVlOyByZXR1cm4gbnVsbDsgfTtcblxuICAgIHJlW1NZTUJPTF0oJycpO1xuICAgIHJldHVybiAhZXhlY0NhbGxlZDtcbiAgfSk7XG5cbiAgaWYgKFxuICAgICFERUxFR0FURVNfVE9fU1lNQk9MIHx8XG4gICAgIURFTEVHQVRFU19UT19FWEVDIHx8XG4gICAgKEtFWSA9PT0gJ3JlcGxhY2UnICYmICEoXG4gICAgICBSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUyAmJlxuICAgICAgUkVQTEFDRV9LRUVQU18kMCAmJlxuICAgICAgIVJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFXG4gICAgKSkgfHxcbiAgICAoS0VZID09PSAnc3BsaXQnICYmICFTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMpXG4gICkge1xuICAgIHZhciBuYXRpdmVSZWdFeHBNZXRob2QgPSAvLi9bU1lNQk9MXTtcbiAgICB2YXIgbWV0aG9kcyA9IGV4ZWMoU1lNQk9MLCAnJ1tLRVldLCBmdW5jdGlvbiAobmF0aXZlTWV0aG9kLCByZWdleHAsIHN0ciwgYXJnMiwgZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgIHZhciAkZXhlYyA9IHJlZ2V4cC5leGVjO1xuICAgICAgaWYgKCRleGVjID09PSByZWdleHBFeGVjIHx8ICRleGVjID09PSBSZWdFeHBQcm90b3R5cGUuZXhlYykge1xuICAgICAgICBpZiAoREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgICAgICAvLyBUaGUgbmF0aXZlIFN0cmluZyBtZXRob2QgYWxyZWFkeSBkZWxlZ2F0ZXMgdG8gQEBtZXRob2QgKHRoaXNcbiAgICAgICAgICAvLyBwb2x5ZmlsbGVkIGZ1bmN0aW9uKSwgbGVhc2luZyB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gICAgICAgICAgLy8gV2UgYXZvaWQgaXQgYnkgZGlyZWN0bHkgY2FsbGluZyB0aGUgbmF0aXZlIEBAbWV0aG9kIG1ldGhvZC5cbiAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlUmVnRXhwTWV0aG9kLmNhbGwocmVnZXhwLCBzdHIsIGFyZzIpIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG5hdGl2ZU1ldGhvZC5jYWxsKHN0ciwgcmVnZXhwLCBhcmcyKSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UgfTtcbiAgICB9LCB7XG4gICAgICBSRVBMQUNFX0tFRVBTXyQwOiBSRVBMQUNFX0tFRVBTXyQwLFxuICAgICAgUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkU6IFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFXG4gICAgfSk7XG4gICAgdmFyIHN0cmluZ01ldGhvZCA9IG1ldGhvZHNbMF07XG4gICAgdmFyIHJlZ2V4TWV0aG9kID0gbWV0aG9kc1sxXTtcblxuICAgIHJlZGVmaW5lKFN0cmluZy5wcm90b3R5cGUsIEtFWSwgc3RyaW5nTWV0aG9kKTtcbiAgICByZWRlZmluZShSZWdFeHBQcm90b3R5cGUsIFNZTUJPTCwgbGVuZ3RoID09IDJcbiAgICAgIC8vIDIxLjIuNS44IFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXShzdHJpbmcsIHJlcGxhY2VWYWx1ZSlcbiAgICAgIC8vIDIxLjIuNS4xMSBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdKHN0cmluZywgbGltaXQpXG4gICAgICA/IGZ1bmN0aW9uIChzdHJpbmcsIGFyZykgeyByZXR1cm4gcmVnZXhNZXRob2QuY2FsbChzdHJpbmcsIHRoaXMsIGFyZyk7IH1cbiAgICAgIC8vIDIxLjIuNS42IFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF0oc3RyaW5nKVxuICAgICAgLy8gMjEuMi41LjkgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF0oc3RyaW5nKVxuICAgICAgOiBmdW5jdGlvbiAoc3RyaW5nKSB7IHJldHVybiByZWdleE1ldGhvZC5jYWxsKHN0cmluZywgdGhpcyk7IH1cbiAgICApO1xuICB9XG5cbiAgaWYgKHNoYW0pIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShSZWdFeHBQcm90b3R5cGVbU1lNQk9MXSwgJ3NoYW0nLCB0cnVlKTtcbn07XG4iLCAidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUueyBjb2RlUG9pbnRBdCwgYXQgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChDT05WRVJUX1RPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBwb3MpIHtcbiAgICB2YXIgUyA9IFN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgdmFyIHBvc2l0aW9uID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIHNpemUgPSBTLmxlbmd0aDtcbiAgICB2YXIgZmlyc3QsIHNlY29uZDtcbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHNpemUpIHJldHVybiBDT05WRVJUX1RPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGZpcnN0ID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uKTtcbiAgICByZXR1cm4gZmlyc3QgPCAweEQ4MDAgfHwgZmlyc3QgPiAweERCRkYgfHwgcG9zaXRpb24gKyAxID09PSBzaXplXG4gICAgICB8fCAoc2Vjb25kID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSkpIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRlxuICAgICAgICA/IENPTlZFUlRfVE9fU1RSSU5HID8gUy5jaGFyQXQocG9zaXRpb24pIDogZmlyc3RcbiAgICAgICAgOiBDT05WRVJUX1RPX1NUUklORyA/IFMuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgMikgOiAoZmlyc3QgLSAweEQ4MDAgPDwgMTApICsgKHNlY29uZCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmNvZGVwb2ludGF0XG4gIGNvZGVBdDogY3JlYXRlTWV0aG9kKGZhbHNlKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUuYXRgIG1ldGhvZFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVucy9TdHJpbmcucHJvdG90eXBlLmF0XG4gIGNoYXJBdDogY3JlYXRlTWV0aG9kKHRydWUpXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjaGFyQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNoYXJBdDtcblxuLy8gYEFkdmFuY2VTdHJpbmdJbmRleGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFkdmFuY2VzdHJpbmdpbmRleFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUywgaW5kZXgsIHVuaWNvZGUpIHtcbiAgcmV0dXJuIGluZGV4ICsgKHVuaWNvZGUgPyBjaGFyQXQoUywgaW5kZXgpLmxlbmd0aCA6IDEpO1xufTtcbiIsICJ2YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG5cbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgcmVwbGFjZSA9ICcnLnJlcGxhY2U7XG52YXIgU1VCU1RJVFVUSU9OX1NZTUJPTFMgPSAvXFwkKFskJidgXXxcXGR7MSwyfXw8W14+XSo+KS9nO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEID0gL1xcJChbJCYnYF18XFxkezEsMn0pL2c7XG5cbi8vIGBHZXRTdWJzdGl0dXRpb25gIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRzdWJzdGl0dXRpb25cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlbWVudCkge1xuICB2YXIgdGFpbFBvcyA9IHBvc2l0aW9uICsgbWF0Y2hlZC5sZW5ndGg7XG4gIHZhciBtID0gY2FwdHVyZXMubGVuZ3RoO1xuICB2YXIgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEO1xuICBpZiAobmFtZWRDYXB0dXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbmFtZWRDYXB0dXJlcyA9IHRvT2JqZWN0KG5hbWVkQ2FwdHVyZXMpO1xuICAgIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MUztcbiAgfVxuICByZXR1cm4gcmVwbGFjZS5jYWxsKHJlcGxhY2VtZW50LCBzeW1ib2xzLCBmdW5jdGlvbiAobWF0Y2gsIGNoKSB7XG4gICAgdmFyIGNhcHR1cmU7XG4gICAgc3dpdGNoIChjaC5jaGFyQXQoMCkpIHtcbiAgICAgIGNhc2UgJyQnOiByZXR1cm4gJyQnO1xuICAgICAgY2FzZSAnJic6IHJldHVybiBtYXRjaGVkO1xuICAgICAgY2FzZSAnYCc6IHJldHVybiBzdHIuc2xpY2UoMCwgcG9zaXRpb24pO1xuICAgICAgY2FzZSBcIidcIjogcmV0dXJuIHN0ci5zbGljZSh0YWlsUG9zKTtcbiAgICAgIGNhc2UgJzwnOlxuICAgICAgICBjYXB0dXJlID0gbmFtZWRDYXB0dXJlc1tjaC5zbGljZSgxLCAtMSldO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IC8vIFxcZFxcZD9cbiAgICAgICAgdmFyIG4gPSArY2g7XG4gICAgICAgIGlmIChuID09PSAwKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgIGlmIChuID4gbSkge1xuICAgICAgICAgIHZhciBmID0gZmxvb3IobiAvIDEwKTtcbiAgICAgICAgICBpZiAoZiA9PT0gMCkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgIGlmIChmIDw9IG0pIHJldHVybiBjYXB0dXJlc1tmIC0gMV0gPT09IHVuZGVmaW5lZCA/IGNoLmNoYXJBdCgxKSA6IGNhcHR1cmVzW2YgLSAxXSArIGNoLmNoYXJBdCgxKTtcbiAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgIH1cbiAgICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW24gLSAxXTtcbiAgICB9XG4gICAgcmV0dXJuIGNhcHR1cmUgPT09IHVuZGVmaW5lZCA/ICcnIDogY2FwdHVyZTtcbiAgfSk7XG59O1xuIiwgInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9jbGFzc29mLXJhdycpO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuL3JlZ2V4cC1leGVjJyk7XG5cbi8vIGBSZWdFeHBFeGVjYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwZXhlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUiwgUykge1xuICB2YXIgZXhlYyA9IFIuZXhlYztcbiAgaWYgKHR5cGVvZiBleGVjID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIHJlc3VsdCA9IGV4ZWMuY2FsbChSLCBTKTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAoY2xhc3NvZihSKSAhPT0gJ1JlZ0V4cCcpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ1JlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXInKTtcbiAgfVxuXG4gIHJldHVybiByZWdleHBFeGVjLmNhbGwoUiwgUyk7XG59O1xuXG4iLCAiaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGxhY2UuanNcIjtcblxuLyogZXNsaW50LWRpc2FibGUgdW5pY29ybi9maWxlbmFtZS1jYXNlICovXG5pbXBvcnQgXCIuL2dsb2JhbFNoaW55XCI7XG52YXIgYW5pbWF0ZU1zID0gNDAwOyAvLyBHaXZlbiBhIERPTSBub2RlIGFuZCBhIGNvbHVtbiAoY291bnQgb2YgY2hhcmFjdGVycyksIHdhbGsgcmVjdXJzaXZlbHlcbi8vIHRocm91Z2ggdGhlIG5vZGUncyBzaWJsaW5ncyBjb3VudGluZyBjaGFyYWN0ZXJzIHVudGlsIHRoZSBnaXZlbiBudW1iZXJcbi8vIG9mIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIGZvdW5kLlxuLy9cbi8vIElmIHRoZSBnaXZlbiBjb3VudCBpcyBiaWdnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29udGFpbmVkIGJ5XG4vLyB0aGUgbm9kZSBhbmQgaXRzIHNpYmxpbmdzLCByZXR1cm5zIGEgbnVsbCBub2RlIGFuZCB0aGUgbnVtYmVyIG9mXG4vLyBjaGFyYWN0ZXJzIGZvdW5kLlxuXG5mdW5jdGlvbiBmaW5kVGV4dENvbFBvaW50KG5vZGUsIGNvbCkge1xuICB2YXIgY29scyA9IDA7XG5cbiAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICB2YXIgbmNoYXIgPSBub2RlLm5vZGVWYWx1ZS5yZXBsYWNlKC9cXG4vZywgXCJcIikubGVuZ3RoO1xuXG4gICAgaWYgKG5jaGFyID49IGNvbCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudDogbm9kZSxcbiAgICAgICAgb2Zmc2V0OiBjb2xcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbHMgKz0gbmNoYXI7XG4gICAgfVxuICB9IGVsc2UgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEgJiYgbm9kZS5maXJzdENoaWxkKSB7XG4gICAgdmFyIHJldCA9IGZpbmRUZXh0Q29sUG9pbnQobm9kZS5maXJzdENoaWxkLCBjb2wpO1xuXG4gICAgaWYgKHJldC5lbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2xzICs9IHJldC5vZmZzZXQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKG5vZGUubmV4dFNpYmxpbmcpIHJldHVybiBmaW5kVGV4dENvbFBvaW50KG5vZGUubmV4dFNpYmxpbmcsIGNvbCAtIGNvbHMpO2Vsc2UgcmV0dXJuIHtcbiAgICBlbGVtZW50OiBudWxsLFxuICAgIG9mZnNldDogY29sc1xuICB9O1xufSAvLyBSZXR1cm5zIGFuIG9iamVjdCBpbmRpY2F0aW5nIHRoZSBlbGVtZW50IGNvbnRhaW5pbmcgdGhlIGdpdmVuIGxpbmUgYW5kXG4vLyBjb2x1bW4gb2YgdGV4dCwgYW5kIHRoZSBvZmZzZXQgaW50byB0aGF0IGVsZW1lbnQgd2hlcmUgdGhlIHRleHQgd2FzIGZvdW5kLlxuLy9cbi8vIElmIHRoZSBnaXZlbiBsaW5lIGFuZCBjb2x1bW4gYXJlIG5vdCBmb3VuZCwgcmV0dXJucyBhIG51bGwgZWxlbWVudCBhbmRcbi8vIHRoZSBudW1iZXIgb2YgbGluZXMgZm91bmQuXG5cblxuZnVuY3Rpb24gZmluZFRleHRQb2ludChlbCwgbGluZSwgY29sKSB7XG4gIHZhciBuZXdsaW5lcyA9IDA7XG5cbiAgZm9yICh2YXIgY2hpbGRJZCA9IDA7IGNoaWxkSWQgPCBlbC5jaGlsZE5vZGVzLmxlbmd0aDsgY2hpbGRJZCsrKSB7XG4gICAgdmFyIGNoaWxkID0gZWwuY2hpbGROb2Rlc1tjaGlsZElkXTsgLy8gSWYgdGhpcyBpcyBhIHRleHQgbm9kZSwgY291bnQgdGhlIG51bWJlciBvZiBuZXdsaW5lcyBpdCBjb250YWlucy5cblxuICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgLy8gVEVYVF9OT0RFXG4gICAgICB2YXIgbmV3bGluZXJlID0gL1xcbi9nO1xuICAgICAgdmFyIG1hdGNoID0gdm9pZCAwO1xuXG4gICAgICB3aGlsZSAoKG1hdGNoID0gbmV3bGluZXJlLmV4ZWMoY2hpbGQubm9kZVZhbHVlKSkgIT09IG51bGwpIHtcbiAgICAgICAgbmV3bGluZXMrKzsgLy8gRm91bmQgdGhlIGRlc2lyZWQgbGluZSwgbm93IGZpbmQgdGhlIGNvbHVtbi5cblxuICAgICAgICBpZiAobmV3bGluZXMgPT09IGxpbmUpIHtcbiAgICAgICAgICByZXR1cm4gZmluZFRleHRDb2xQb2ludChjaGlsZCwgbWF0Y2guaW5kZXggKyBjb2wgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gSWYgdGhpcyBpcyBub3QgYSB0ZXh0IG5vZGUsIGRlc2NlbmQgcmVjdXJzaXZlbHkgdG8gc2VlIGhvdyBtYW55XG4gICAgLy8gbGluZXMgaXQgY29udGFpbnMuXG4gICAgZWxzZSBpZiAoY2hpbGQubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgLy8gRUxFTUVOVF9OT0RFXG4gICAgICAgIHZhciByZXQgPSBmaW5kVGV4dFBvaW50KGNoaWxkLCBsaW5lIC0gbmV3bGluZXMsIGNvbCk7XG4gICAgICAgIGlmIChyZXQuZWxlbWVudCAhPT0gbnVsbCkgcmV0dXJuIHJldDtlbHNlIG5ld2xpbmVzICs9IHJldC5vZmZzZXQ7XG4gICAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVsZW1lbnQ6IG51bGwsXG4gICAgb2Zmc2V0OiBuZXdsaW5lc1xuICB9O1xufSAvLyBEcmF3IGEgaGlnaGxpZ2h0IGVmZmVjdCBmb3IgdGhlIGdpdmVuIHNvdXJjZSByZWYuIHNyY3JlZiBpcyBhc3N1bWVkIHRvIGJlXG4vLyBhbiBpbnRlZ2VyIGFycmF5IG9mIGxlbmd0aCA2LCBmb2xsb3dpbmcgdGhlIHN0YW5kYXJkIFIgZm9ybWF0IGZvciBzb3VyY2Vcbi8vIHJlZnMuXG5cblxuZnVuY3Rpb24gaGlnaGxpZ2h0U3JjcmVmKHNyY3JlZiwgc3JjZmlsZSkge1xuICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMgdGV4dCByYW5nZXMgKElFOCBkb2Vzbid0KVxuICBpZiAoIWRvY3VtZW50LmNyZWF0ZVJhbmdlKSByZXR1cm47IC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBtYXJrZXIgZm9yIHRoaXMgc291cmNlIHJlZlxuXG4gIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3JjcmVmX1wiICsgc3JjcmVmKTtcblxuICBpZiAoIWVsKSB7XG4gICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIG1hcmtlciwgY3JlYXRlIG9uZVxuICAgIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgZWwuaWQgPSBcInNyY3JlZl9cIiArIHNyY3JlZjtcbiAgICB2YXIgcmVmID0gc3JjcmVmO1xuICAgIHZhciBjb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3JjZmlsZS5yZXBsYWNlKC9cXC4vZywgXCJfXCIpICsgXCJfY29kZVwiKTsgLy8gaWYgdGhlcmUgaXMgbm8gY29kZSBmaWxlIChtaWdodCBiZSBhIHNoaW55IGZpbGUpLCBxdWl0IGVhcmx5XG5cbiAgICBpZiAoIWNvZGUpIHJldHVybjtcbiAgICB2YXIgc3RhcnQgPSBmaW5kVGV4dFBvaW50KGNvZGUsIHJlZlswXSwgcmVmWzRdKTtcbiAgICB2YXIgZW5kID0gZmluZFRleHRQb2ludChjb2RlLCByZWZbMl0sIHJlZls1XSk7IC8vIElmIHRoZSBpbnNlcnRpb24gcG9pbnQgY2FuJ3QgYmUgZm91bmQsIGJhaWwgb3V0IG5vd1xuXG4gICAgaWYgKHN0YXJ0LmVsZW1lbnQgPT09IG51bGwgfHwgZW5kLmVsZW1lbnQgPT09IG51bGwpIHJldHVybjtcbiAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOyAvLyBJZiB0aGUgdGV4dCBwb2ludHMgYXJlIGluc2lkZSBkaWZmZXJlbnQgPFNQQU4+cywgd2UgbWF5IG5vdCBiZSBhYmxlIHRvXG4gICAgLy8gc3Vycm91bmQgdGhlbSB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IHRoZSBlbGVtZW50cyB0byBrZWVwIHRoZSBET00gdHJlZVxuICAgIC8vIGludGFjdC4gSnVzdCBtb3ZlIHRoZSBzZWxlY3Rpb24gcG9pbnRzIHRvIGVuY29tcGFzcyB0aGUgY29udGVudHMgb2ZcbiAgICAvLyB0aGUgU1BBTnMuXG5cbiAgICBpZiAoc3RhcnQuZWxlbWVudC5wYXJlbnROb2RlLm5vZGVOYW1lID09PSBcIlNQQU5cIiAmJiBzdGFydC5lbGVtZW50ICE9PSBlbmQuZWxlbWVudCkge1xuICAgICAgcmFuZ2Uuc2V0U3RhcnRCZWZvcmUoc3RhcnQuZWxlbWVudC5wYXJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnQuZWxlbWVudCwgc3RhcnQub2Zmc2V0KTtcbiAgICB9XG5cbiAgICBpZiAoZW5kLmVsZW1lbnQucGFyZW50Tm9kZS5ub2RlTmFtZSA9PT0gXCJTUEFOXCIgJiYgc3RhcnQuZWxlbWVudCAhPT0gZW5kLmVsZW1lbnQpIHtcbiAgICAgIHJhbmdlLnNldEVuZEFmdGVyKGVuZC5lbGVtZW50LnBhcmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByYW5nZS5zZXRFbmQoZW5kLmVsZW1lbnQsIGVuZC5vZmZzZXQpO1xuICAgIH1cblxuICAgIHJhbmdlLnN1cnJvdW5kQ29udGVudHMoZWwpO1xuICB9IC8vIEVuZCBhbnkgcHJldmlvdXMgaGlnaGxpZ2h0IGJlZm9yZSBzdGFydGluZyB0aGlzIG9uZVxuXG5cbiAgJChlbCkuc3RvcCh0cnVlLCB0cnVlKS5lZmZlY3QoXCJoaWdobGlnaHRcIiwgbnVsbCwgMTYwMCk7XG59IC8vIElmIHRoaXMgaXMgdGhlIG1haW4gU2hpbnkgd2luZG93LCB3aXJlIHVwIG91ciBjdXN0b20gbWVzc2FnZSBoYW5kbGVyLlxuLy8gVE9ETy1iYXJyZXQsIHRoaXMgc2hvdWxkIHdvcmtcblxuXG5pZiAoU2hpbnkpIHtcbiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoXCJzaG93Y2FzZS1zcmNcIiwgZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICBpZiAobWVzc2FnZS5zcmNyZWYgJiYgbWVzc2FnZS5zcmNmaWxlKSB7XG4gICAgICBoaWdobGlnaHRTcmNyZWYobWVzc2FnZS5zcmNyZWYsIG1lc3NhZ2Uuc3JjZmlsZSk7XG4gICAgfVxuICB9KTtcbn1cblxudmFyIGlzQ29kZUFib3ZlID0gZmFsc2U7XG5cbnZhciBzZXRDb2RlUG9zaXRpb24gPSBmdW5jdGlvbiBzZXRDb2RlUG9zaXRpb24oYWJvdmUsIGFuaW1hdGUpIHtcbiAgdmFyIGFuaW1hdGVDb2RlTXMgPSBhbmltYXRlID8gYW5pbWF0ZU1zIDogMTsgLy8gc2V0IHRoZSBzb3VyY2UgYW5kIHRhcmdldHMgZm9yIHRoZSB0YWIgbW92ZVxuXG4gIHZhciBuZXdIb3N0RWxlbWVudCA9IGFib3ZlID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaG93Y2FzZS1zeHMtY29kZVwiKSA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvd2Nhc2UtY29kZS1pbmxpbmVcIik7XG4gIHZhciBjdXJyZW50SG9zdEVsZW1lbnQgPSBhYm92ZSA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvd2Nhc2UtY29kZS1pbmxpbmVcIikgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3djYXNlLXN4cy1jb2RlXCIpO1xuICB2YXIgbWV0YWRhdGFFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaG93Y2FzZS1hcHAtbWV0YWRhdGFcIik7XG5cbiAgaWYgKG1ldGFkYXRhRWxlbWVudCA9PT0gbnVsbCkge1xuICAgIC8vIGlmIHRoZXJlJ3Mgbm8gYXBwIG1ldGFkYXRhLCBzaG93IGFuZCBoaWRlIHRoZSBlbnRpcmUgd2VsbCBjb250YWluZXJcbiAgICAvLyB3aGVuIHRoZSBjb2RlIGNoYW5nZXMgcG9zaXRpb25cbiAgICB2YXIgd2VsbEVsZW1lbnQgPSAkKFwiI3Nob3djYXNlLXdlbGxcIik7XG5cbiAgICBpZiAoYWJvdmUpIHtcbiAgICAgIHdlbGxFbGVtZW50LmZhZGVPdXQoYW5pbWF0ZUNvZGVNcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdlbGxFbGVtZW50LmZhZGVJbihhbmltYXRlQ29kZU1zKTtcbiAgICB9XG4gIH0gLy8gaGlkZSB0aGUgbmV3IGVsZW1lbnQgYmVmb3JlIGRvaW5nIGFueXRoaW5nIHRvIGl0XG5cblxuICAkKG5ld0hvc3RFbGVtZW50KS5oaWRlKCk7XG4gICQoY3VycmVudEhvc3RFbGVtZW50KS5mYWRlT3V0KGFuaW1hdGVDb2RlTXMsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGFicyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvd2Nhc2UtY29kZS10YWJzXCIpO1xuICAgIGN1cnJlbnRIb3N0RWxlbWVudC5yZW1vdmVDaGlsZCh0YWJzKTtcbiAgICBuZXdIb3N0RWxlbWVudC5hcHBlbmRDaGlsZCh0YWJzKTsgLy8gcmVtb3ZlIG9yIHNldCB0aGUgaGVpZ2h0IG9mIHRoZSBjb2RlXG5cbiAgICBpZiAoYWJvdmUpIHtcbiAgICAgIHNldENvZGVIZWlnaHRGcm9tRG9jSGVpZ2h0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvd2Nhc2UtY29kZS1jb250ZW50XCIpLnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgIH1cblxuICAgICQobmV3SG9zdEVsZW1lbnQpLmZhZGVJbihhbmltYXRlQ29kZU1zKTtcblxuICAgIGlmICghYWJvdmUpIHtcbiAgICAgIC8vIHJlbW92ZSB0aGUgYXBwbGllZCB3aWR0aCBhbmQgem9vbSBvbiB0aGUgYXBwIGNvbnRhaW5lciwgYW5kXG4gICAgICAvLyBzY3JvbGwgc21vb3RobHkgZG93biB0byB0aGUgY29kZSdzIG5ldyBob21lXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3djYXNlLWFwcC1jb250YWluZXJcIikucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIik7XG4gICAgICBpZiAoYW5pbWF0ZSkgJChkb2N1bWVudC5ib2R5KS5hbmltYXRlKHtcbiAgICAgICAgc2Nyb2xsVG9wOiAkKG5ld0hvc3RFbGVtZW50KS5vZmZzZXQoKS50b3BcbiAgICAgIH0pO1xuICAgIH0gLy8gaWYgdGhlcmUncyBhIHJlYWRtZSwgbW92ZSBpdCBlaXRoZXIgYWxvbmdzaWRlIHRoZSBjb2RlIG9yIGJlbmVhdGhcbiAgICAvLyB0aGUgYXBwXG5cblxuICAgIHZhciByZWFkbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlYWRtZS1tZFwiKTtcblxuICAgIGlmIChyZWFkbWUgIT09IG51bGwpIHtcbiAgICAgIHJlYWRtZS5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHJlYWRtZSk7XG5cbiAgICAgIGlmIChhYm92ZSkge1xuICAgICAgICBjdXJyZW50SG9zdEVsZW1lbnQuYXBwZW5kQ2hpbGQocmVhZG1lKTtcbiAgICAgICAgJChjdXJyZW50SG9zdEVsZW1lbnQpLmZhZGVJbihhbmltYXRlQ29kZU1zKTtcbiAgICAgIH0gZWxzZSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3djYXNlLWFwcC1tZXRhZGF0YVwiKS5hcHBlbmRDaGlsZChyZWFkbWUpO1xuICAgIH0gLy8gY2hhbmdlIHRoZSB0ZXh0IG9uIHRoZSB0b2dnbGUgYnV0dG9uIHRvIHJlZmxlY3QgdGhlIG5ldyBzdGF0ZVxuXG5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3djYXNlLWNvZGUtcG9zaXRpb24tdG9nZ2xlXCIpLmlubmVySFRNTCA9IGFib3ZlID8gJzxpIGNsYXNzPVwiZmEgZmEtbGV2ZWwtZG93blwiPjwvaT4gc2hvdyBiZWxvdycgOiAnPGkgY2xhc3M9XCJmYSBmYS1sZXZlbC11cFwiPjwvaT4gc2hvdyB3aXRoIGFwcCc7XG4gIH0pO1xuXG4gIGlmIChhYm92ZSkge1xuICAgICQoZG9jdW1lbnQuYm9keSkuYW5pbWF0ZSh7XG4gICAgICBzY3JvbGxUb3A6IDBcbiAgICB9LCBhbmltYXRlQ29kZU1zKTtcbiAgfVxuXG4gIGlzQ29kZUFib3ZlID0gYWJvdmU7XG4gIHNldEFwcENvZGVTeHNXaWR0aHMoYWJvdmUgJiYgYW5pbWF0ZSk7XG4gICQod2luZG93KS50cmlnZ2VyKFwicmVzaXplXCIpO1xufTtcblxuZnVuY3Rpb24gc2V0QXBwQ29kZVN4c1dpZHRocyhhbmltYXRlKSB7XG4gIHZhciBhcHBUYXJnZXRXaWR0aCA9IDk2MDtcbiAgdmFyIGFwcFdpZHRoID0gYXBwVGFyZ2V0V2lkdGg7XG4gIHZhciB6b29tID0gMS4wO1xuICB2YXIgdG90YWxXaWR0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvd2Nhc2UtYXBwLWNvZGVcIikub2Zmc2V0V2lkdGg7XG5cbiAgaWYgKHRvdGFsV2lkdGggLyAyID4gYXBwVGFyZ2V0V2lkdGgpIHtcbiAgICAvLyBJZiB0aGUgYXBwIGNhbiB1c2Ugb25seSBoYWxmIHRoZSBhdmFpbGFibGUgc3BhY2UgYW5kIHN0aWxsIG1lZXQgaXRzXG4gICAgLy8gdGFyZ2V0LCB0YWtlIGhhbGYgdGhlIGF2YWlsYWJsZSBzcGFjZS5cbiAgICBhcHBXaWR0aCA9IHRvdGFsV2lkdGggLyAyO1xuICB9IGVsc2UgaWYgKHRvdGFsV2lkdGggKiAwLjY2ID4gYXBwVGFyZ2V0V2lkdGgpIHtcbiAgICAvLyBJZiB0aGUgYXBwIGNhbiBtZWV0IGl0cyB0YXJnZXQgYnkgdGFraW5nIHVwIG1vcmUgc3BhY2UgKHVwIHRvIDY2JVxuICAgIC8vIG9mIGl0cyBjb250YWluZXIpLCB0YWtlIHVwIG1vcmUgc3BhY2UuXG4gICAgYXBwV2lkdGggPSA5NjA7XG4gIH0gZWxzZSB7XG4gICAgLy8gVGhlIHNwYWNlIGlzIHRvbyBuYXJyb3cgZm9yIHRoZSBhcHAgYW5kIGNvZGUgdG8gbGl2ZSBzaWRlLWJ5LXNpZGVcbiAgICAvLyBpbiBhIGZyaWVuZGx5IHdheS4gS2VlcCB0aGUgYXBwIGF0IDIvMyBvZiB0aGUgc3BhY2UgYnV0IHNjYWxlIGl0LlxuICAgIGFwcFdpZHRoID0gdG90YWxXaWR0aCAqIDAuNjY7XG4gICAgem9vbSA9IGFwcFdpZHRoIC8gYXBwVGFyZ2V0V2lkdGg7XG4gIH1cblxuICB2YXIgYXBwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaG93Y2FzZS1hcHAtY29udGFpbmVyXCIpO1xuICAkKGFwcCkuYW5pbWF0ZSh7XG4gICAgd2lkdGg6IGFwcFdpZHRoICsgXCJweFwiLFxuICAgIHpvb206IHpvb20gKiAxMDAgKyBcIiVcIlxuICB9LCBhbmltYXRlID8gYW5pbWF0ZU1zIDogMCk7XG59XG5cbnZhciB0b2dnbGVDb2RlUG9zaXRpb24gPSBmdW5jdGlvbiB0b2dnbGVDb2RlUG9zaXRpb24oKSB7XG4gIHNldENvZGVQb3NpdGlvbighaXNDb2RlQWJvdmUsIHRydWUpO1xufTsgLy8gaWYgdGhlIGJyb3dzZXIgaXMgc2l6ZWQgdG8gd2lkZXIgdGhhbiAxMzUwcHgsIHNob3cgdGhlIGNvZGUgbmV4dCB0byB0aGVcbi8vIGFwcCBieSBkZWZhdWx0XG5cblxudmFyIHNldEluaXRpYWxDb2RlUG9zaXRpb24gPSBmdW5jdGlvbiBzZXRJbml0aWFsQ29kZVBvc2l0aW9uKCkge1xuICBpZiAoZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCA+IDEzNTApIHtcbiAgICBzZXRDb2RlUG9zaXRpb24odHJ1ZSwgZmFsc2UpO1xuICB9XG59OyAvLyBtYWtlIHRoZSBjb2RlIHNjcm9sbGFibGUgdG8gYWJvdXQgdGhlIGhlaWdodCBvZiB0aGUgYnJvd3NlciwgbGVzcyBzcGFjZVxuLy8gZm9yIHRoZSB0YWJzXG5cblxuZnVuY3Rpb24gc2V0Q29kZUhlaWdodEZyb21Eb2NIZWlnaHQoKSB7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvd2Nhc2UtY29kZS1jb250ZW50XCIpLnN0eWxlLmhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKSArIFwicHhcIjtcbn0gLy8gaWYgdGhlcmUncyBhIGJsb2NrIG9mIG1hcmtkb3duIGNvbnRlbnQsIHJlbmRlciBpdCB0byBIVE1MXG5cblxuZnVuY3Rpb24gcmVuZGVyTWFya2Rvd24oKSB7XG4gIHZhciBtZENvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3djYXNlLW1hcmtkb3duLWNvbnRlbnRcIik7XG5cbiAgaWYgKG1kQ29udGVudCAhPT0gbnVsbCkge1xuICAgIC8vIElFOCBwdXRzIHRoZSBjb250ZW50IG9mIDxzY3JpcHQ+IHRhZ3MgaW50byBpbm5lckhUTUwgYnV0XG4gICAgLy8gbm90IGlubmVyVGV4dFxuICAgIHZhciBjb250ZW50ID0gbWRDb250ZW50LmlubmVyVGV4dCB8fCBtZENvbnRlbnQuaW5uZXJIVE1MO1xuICAgIHZhciBzaG93ZG93bkNvbnZlcnRlciA9IHdpbmRvdy5TaG93ZG93bi5jb252ZXJ0ZXI7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZWFkbWUtbWRcIikuaW5uZXJIVE1MID0gbmV3IHNob3dkb3duQ29udmVydGVyKCkubWFrZUh0bWwoY29udGVudCk7XG4gIH1cbn1cblxuJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbiAoKSB7XG4gIGlmIChpc0NvZGVBYm92ZSkge1xuICAgIHNldEFwcENvZGVTeHNXaWR0aHMoZmFsc2UpO1xuICAgIHNldENvZGVIZWlnaHRGcm9tRG9jSGVpZ2h0KCk7XG4gIH1cbn0pO1xud2luZG93LnRvZ2dsZUNvZGVQb3NpdGlvbiA9IHRvZ2dsZUNvZGVQb3NpdGlvbjtcbiQod2luZG93KS5vbihcImxvYWRcIiwgc2V0SW5pdGlhbENvZGVQb3NpdGlvbik7XG4kKHdpbmRvdykub24oXCJsb2FkXCIsIHJlbmRlck1hcmtkb3duKTtcbmlmICh3aW5kb3cuaGxqcykgd2luZG93LmhsanMuaW5pdEhpZ2hsaWdodGluZ09uTG9hZCgpO1xuZXhwb3J0IHt9OyIsICIndXNlIHN0cmljdCc7XG52YXIgZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBhZHZhbmNlU3RyaW5nSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXgnKTtcbnZhciBnZXRTdWJzdGl0dXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXN1YnN0aXR1dGlvbicpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG52YXIgbWF5YmVUb1N0cmluZyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/IGl0IDogU3RyaW5nKGl0KTtcbn07XG5cbi8vIEBAcmVwbGFjZSBsb2dpY1xuZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMoJ3JlcGxhY2UnLCAyLCBmdW5jdGlvbiAoUkVQTEFDRSwgbmF0aXZlUmVwbGFjZSwgbWF5YmVDYWxsTmF0aXZlLCByZWFzb24pIHtcbiAgdmFyIFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFID0gcmVhc29uLlJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFO1xuICB2YXIgUkVQTEFDRV9LRUVQU18kMCA9IHJlYXNvbi5SRVBMQUNFX0tFRVBTXyQwO1xuICB2YXIgVU5TQUZFX1NVQlNUSVRVVEUgPSBSRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRSA/ICckJyA6ICckMCc7XG5cbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUucmVwbGFjZVxuICAgIGZ1bmN0aW9uIHJlcGxhY2Uoc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xuICAgICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgICAgdmFyIHJlcGxhY2VyID0gc2VhcmNoVmFsdWUgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogc2VhcmNoVmFsdWVbUkVQTEFDRV07XG4gICAgICByZXR1cm4gcmVwbGFjZXIgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHJlcGxhY2VyLmNhbGwoc2VhcmNoVmFsdWUsIE8sIHJlcGxhY2VWYWx1ZSlcbiAgICAgICAgOiBuYXRpdmVSZXBsYWNlLmNhbGwoU3RyaW5nKE8pLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcbiAgICB9LFxuICAgIC8vIGBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHJlcGxhY2VcbiAgICBmdW5jdGlvbiAocmVnZXhwLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKCFSRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRSAmJiBSRVBMQUNFX0tFRVBTXyQwKSB8fFxuICAgICAgICAodHlwZW9mIHJlcGxhY2VWYWx1ZSA9PT0gJ3N0cmluZycgJiYgcmVwbGFjZVZhbHVlLmluZGV4T2YoVU5TQUZFX1NVQlNUSVRVVEUpID09PSAtMSlcbiAgICAgICkge1xuICAgICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKG5hdGl2ZVJlcGxhY2UsIHJlZ2V4cCwgdGhpcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcnggPSBhbk9iamVjdChyZWdleHApO1xuICAgICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG5cbiAgICAgIHZhciBmdW5jdGlvbmFsUmVwbGFjZSA9IHR5cGVvZiByZXBsYWNlVmFsdWUgPT09ICdmdW5jdGlvbic7XG4gICAgICBpZiAoIWZ1bmN0aW9uYWxSZXBsYWNlKSByZXBsYWNlVmFsdWUgPSBTdHJpbmcocmVwbGFjZVZhbHVlKTtcblxuICAgICAgdmFyIGdsb2JhbCA9IHJ4Lmdsb2JhbDtcbiAgICAgIGlmIChnbG9iYWwpIHtcbiAgICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIGJyZWFrO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICBpZiAoIWdsb2JhbCkgYnJlYWs7XG5cbiAgICAgICAgdmFyIG1hdGNoU3RyID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIGlmIChtYXRjaFN0ciA9PT0gJycpIHJ4Lmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChyeC5sYXN0SW5kZXgpLCBmdWxsVW5pY29kZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhY2N1bXVsYXRlZFJlc3VsdCA9ICcnO1xuICAgICAgdmFyIG5leHRTb3VyY2VQb3NpdGlvbiA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0c1tpXTtcblxuICAgICAgICB2YXIgbWF0Y2hlZCA9IFN0cmluZyhyZXN1bHRbMF0pO1xuICAgICAgICB2YXIgcG9zaXRpb24gPSBtYXgobWluKHRvSW50ZWdlcihyZXN1bHQuaW5kZXgpLCBTLmxlbmd0aCksIDApO1xuICAgICAgICB2YXIgY2FwdHVyZXMgPSBbXTtcbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgIC8vICAgY2FwdHVyZXMgPSByZXN1bHQuc2xpY2UoMSkubWFwKG1heWJlVG9TdHJpbmcpXG4gICAgICAgIC8vIGJ1dCBmb3Igc29tZSByZWFzb24gYG5hdGl2ZVNsaWNlLmNhbGwocmVzdWx0LCAxLCByZXN1bHQubGVuZ3RoKWAgKGNhbGxlZCBpblxuICAgICAgICAvLyB0aGUgc2xpY2UgcG9seWZpbGwgd2hlbiBzbGljaW5nIG5hdGl2ZSBhcnJheXMpIFwiZG9lc24ndCB3b3JrXCIgaW4gc2FmYXJpIDkgYW5kXG4gICAgICAgIC8vIGNhdXNlcyBhIGNyYXNoIChodHRwczovL3Bhc3RlYmluLmNvbS9OMjFRemVRQSkgd2hlbiB0cnlpbmcgdG8gZGVidWcgaXQuXG4gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgcmVzdWx0Lmxlbmd0aDsgaisrKSBjYXB0dXJlcy5wdXNoKG1heWJlVG9TdHJpbmcocmVzdWx0W2pdKSk7XG4gICAgICAgIHZhciBuYW1lZENhcHR1cmVzID0gcmVzdWx0Lmdyb3VwcztcbiAgICAgICAgaWYgKGZ1bmN0aW9uYWxSZXBsYWNlKSB7XG4gICAgICAgICAgdmFyIHJlcGxhY2VyQXJncyA9IFttYXRjaGVkXS5jb25jYXQoY2FwdHVyZXMsIHBvc2l0aW9uLCBTKTtcbiAgICAgICAgICBpZiAobmFtZWRDYXB0dXJlcyAhPT0gdW5kZWZpbmVkKSByZXBsYWNlckFyZ3MucHVzaChuYW1lZENhcHR1cmVzKTtcbiAgICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSBTdHJpbmcocmVwbGFjZVZhbHVlLmFwcGx5KHVuZGVmaW5lZCwgcmVwbGFjZXJBcmdzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVwbGFjZW1lbnQgPSBnZXRTdWJzdGl0dXRpb24obWF0Y2hlZCwgUywgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3NpdGlvbiA+PSBuZXh0U291cmNlUG9zaXRpb24pIHtcbiAgICAgICAgICBhY2N1bXVsYXRlZFJlc3VsdCArPSBTLnNsaWNlKG5leHRTb3VyY2VQb3NpdGlvbiwgcG9zaXRpb24pICsgcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgbmV4dFNvdXJjZVBvc2l0aW9uID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkUmVzdWx0ICsgUy5zbGljZShuZXh0U291cmNlUG9zaXRpb24pO1xuICAgIH1cbiAgXTtcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs4dkJBQUEsMkJBQUksR0FBUSxTQUFVLEVBQUksQ0FDeEIsTUFBTyxJQUFNLEVBQUcsTUFBUSxNQUFRLEdBSWxDLEdBQU8sUUFFTCxFQUFNLE1BQU8sYUFBYyxVQUFZLGFBQ3ZDLEVBQU0sTUFBTyxTQUFVLFVBQVksU0FFbkMsRUFBTSxNQUFPLE9BQVEsVUFBWSxPQUNqQyxFQUFNLE1BQU8sU0FBVSxVQUFZLFNBRWxDLFVBQVksQ0FBRSxNQUFPLFVBQWMsU0FBUyxtQkNiL0MsMkJBQU8sUUFBVSxTQUFVLEVBQU0sQ0FDL0IsR0FBSSxDQUNGLE1BQU8sQ0FBQyxDQUFDLFVBQ0YsRUFBUCxDQUNBLE1BQU8sT0NKWCwyQkFBSSxJQUFRLElBR1osR0FBTyxRQUFVLENBQUMsR0FBTSxVQUFZLENBRWxDLE1BQU8sUUFBTyxlQUFlLEdBQUksRUFBRyxDQUFFLElBQUss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 diff --git a/inst/www/shared/shiny-testmode.js b/inst/www/shared/shiny-testmode.js index 53bc6a8a75..9cb7f863c5 100644 --- a/inst/www/shared/shiny-testmode.js +++ b/inst/www/shared/shiny-testmode.js @@ -1,3 +1,3 @@ -/*! shiny 1.7.0 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ +/*! shiny 1.7.0.9000 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ (function(){var a=eval;window.addEventListener("message",function(i){var e=i.data;e.code&&a(e.code)});})(); //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjdHMvc3JjL3V0aWxzL2V2YWwudHMiLCAiLi4vLi4vLi4vc3JjdHMvZXh0cmFzL3NoaW55LXRlc3Rtb2RlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvL2VzYnVpbGQuZ2l0aHViLmlvL2NvbnRlbnQtdHlwZXMvI2RpcmVjdC1ldmFsXG4vL3RsL2RyO1xuLy8gKiBEaXJlY3QgdXNhZ2Ugb2YgYGV2YWwoXCJ4XCIpYCBpcyBiYWQgd2l0aCBidW5kbGVkIGNvZGUuXG4vLyAqIEluc3RlYWQsIHVzZSBpbmRpcmVjdCBjYWxscyB0byBgZXZhbGAgc3VjaCBhcyBgaW5kaXJlY3RFdmFsKFwieFwiKWBcbi8vICAgKiBFdmVuIGp1c3QgcmVuYW1pbmcgdGhlIGZ1bmN0aW9uIHdvcmtzIHdlbGwgZW5vdWdoLlxuLy8gPiBUaGlzIGlzIGtub3duIGFzIFwiaW5kaXJlY3QgZXZhbFwiIGJlY2F1c2UgZXZhbCBpcyBub3QgYmVpbmcgY2FsbGVkIGRpcmVjdGx5LCBhbmQgc28gZG9lcyBub3QgdHJpZ2dlciB0aGUgZ3JhbW1hdGljYWwgc3BlY2lhbCBjYXNlIGZvciBkaXJlY3QgZXZhbCBpbiB0aGUgSmF2YVNjcmlwdCBWTS4gWW91IGNhbiBjYWxsIGluZGlyZWN0IGV2YWwgdXNpbmcgYW55IHN5bnRheCBhdCBhbGwgZXhjZXB0IGZvciBhbiBleHByZXNzaW9uIG9mIHRoZSBleGFjdCBmb3JtIGV2YWwoJ3gnKS4gRm9yIGV4YW1wbGUsIHZhciBldmFsMiA9IGV2YWw7IGV2YWwyKCd4JykgYW5kIFtldmFsXVswXSgneCcpIGFuZCB3aW5kb3cuZXZhbCgneCcpIGFyZSBhbGwgaW5kaXJlY3QgZXZhbCBjYWxscy5cbi8vID4gV2hlbiB5b3UgdXNlIGluZGlyZWN0IGV2YWwsIHRoZSBjb2RlIGlzIGV2YWx1YXRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlIGluc3RlYWQgb2YgaW4gdGhlIGlubGluZSBzY29wZSBvZiB0aGUgY2FsbGVyLlxudmFyIGluZGlyZWN0RXZhbCA9IGV2YWw7XG5leHBvcnQgeyBpbmRpcmVjdEV2YWwgfTsiLCAiLyogZXNsaW50LWRpc2FibGUgdW5pY29ybi9maWxlbmFtZS1jYXNlICovXG5pbXBvcnQgeyBpbmRpcmVjdEV2YWwgfSBmcm9tIFwiLi4vc3JjL3V0aWxzL2V2YWxcIjsgLy8gTGlzdGVuIGZvciBtZXNzYWdlcyBmcm9tIHBhcmVudCBmcmFtZS4gVGhpcyBmaWxlIGlzIG9ubHkgYWRkZWQgd2hlbiB0aGVcbi8vIHNoaW55LnRlc3Rtb2RlIG9wdGlvbiBpcyBUUlVFLlxuXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgZnVuY3Rpb24gKGUpIHtcbiAgdmFyIG1lc3NhZ2UgPSBlLmRhdGE7XG4gIGlmIChtZXNzYWdlLmNvZGUpIGluZGlyZWN0RXZhbChtZXNzYWdlLmNvZGUpO1xufSk7Il0sCiAgIm1hcHBpbmdzIjogIjtZQU9BLEdBQUksR0FBZSxLQ0huQixPQUFPLGlCQUFpQixVQUFXLFNBQVUsRUFBRyxDQUM5QyxHQUFJLEdBQVUsRUFBRSxLQUNoQixBQUFJLEVBQVEsTUFBTSxFQUFhLEVBQVEiLAogICJuYW1lcyI6IFtdCn0K diff --git a/inst/www/shared/shiny.js b/inst/www/shared/shiny.js index bdeccdb2f8..24b2357ea5 100644 --- a/inst/www/shared/shiny.js +++ b/inst/www/shared/shiny.js @@ -1,4 +1,4 @@ -/*! shiny 1.7.0 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ +/*! shiny 1.7.0.9000 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ (function() { var __create = Object.create; var __defProp = Object.defineProperty; @@ -13265,7 +13265,7 @@ var windowShiny2; function setShiny(windowShiny_) { windowShiny2 = windowShiny_; - windowShiny2.version = "1.7.0"; + windowShiny2.version = "1.7.0.9000"; var _initInputBindings = initInputBindings(), inputBindings = _initInputBindings.inputBindings, fileInputBinding2 = _initInputBindings.fileInputBinding; var _initOutputBindings = initOutputBindings(), outputBindings = _initOutputBindings.outputBindings; setFileInputBinding(fileInputBinding2); diff --git a/inst/www/shared/shiny.min.css b/inst/www/shared/shiny.min.css index 7a951a80ef..f8c2128b09 100644 --- a/inst/www/shared/shiny.min.css +++ b/inst/www/shared/shiny.min.css @@ -1,2 +1,2 @@ -/*! shiny 1.7.0 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ +/*! shiny 1.7.0.9000 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ pre.shiny-text-output:empty:before{content:" "}pre.shiny-text-output.noplaceholder:empty{margin:0;padding:0;border-width:0;height:0}pre.shiny-text-output{word-wrap:normal}.shiny-image-output img.shiny-scalable,.shiny-plot-output img.shiny-scalable{max-width:100%;max-height:100%}#shiny-disconnected-overlay{position:fixed;top:0;bottom:0;left:0;right:0;background-color:#999;opacity:.5;overflow:hidden;z-index:99998;pointer-events:none}.table.shiny-table>thead>tr>th,.table.shiny-table>thead>tr>td,.table.shiny-table>tbody>tr>th,.table.shiny-table>tbody>tr>td,.table.shiny-table>tfoot>tr>th,.table.shiny-table>tfoot>tr>td{padding-right:12px;padding-left:12px}.shiny-table.spacing-xs>thead>tr>th,.shiny-table.spacing-xs>thead>tr>td,.shiny-table.spacing-xs>tbody>tr>th,.shiny-table.spacing-xs>tbody>tr>td,.shiny-table.spacing-xs>tfoot>tr>th,.shiny-table.spacing-xs>tfoot>tr>td{padding-top:3px;padding-bottom:3px}.shiny-table.spacing-s>thead>tr>th,.shiny-table.spacing-s>thead>tr>td,.shiny-table.spacing-s>tbody>tr>th,.shiny-table.spacing-s>tbody>tr>td,.shiny-table.spacing-s>tfoot>tr>th,.shiny-table.spacing-s>tfoot>tr>td{padding-top:5px;padding-bottom:5px}.shiny-table.spacing-m>thead>tr>th,.shiny-table.spacing-m>thead>tr>td,.shiny-table.spacing-m>tbody>tr>th,.shiny-table.spacing-m>tbody>tr>td,.shiny-table.spacing-m>tfoot>tr>th,.shiny-table.spacing-m>tfoot>tr>td{padding-top:8px;padding-bottom:8px}.shiny-table.spacing-l>thead>tr>th,.shiny-table.spacing-l>thead>tr>td,.shiny-table.spacing-l>tbody>tr>th,.shiny-table.spacing-l>tbody>tr>td,.shiny-table.spacing-l>tfoot>tr>th,.shiny-table.spacing-l>tfoot>tr>td{padding-top:10px;padding-bottom:10px}.shiny-table .NA{color:#909090}.shiny-output-error{color:red;white-space:pre-wrap}.shiny-output-error:before{content:"Error: ";font-weight:bold}.shiny-output-error-validation{color:#888}.shiny-output-error-validation:before{content:"";font-weight:inherit}@supports (-ms-ime-align:auto){.shiny-bound-output{transition:0}}.recalculating{opacity:.3;transition:opacity .25s ease .5s}.slider-animate-container{text-align:right;margin-top:-9px}.slider-animate-button{opacity:.5}.slider-animate-button .pause{display:none}.slider-animate-button.playing .pause{display:inline}.slider-animate-button .play{display:inline}.slider-animate-button.playing .play{display:none}.progress.shiny-file-input-progress{visibility:hidden}.progress.shiny-file-input-progress .progress-bar.bar-danger{transition:none}.shiny-input-container input[type=file]{overflow:hidden;max-width:100%}.shiny-progress-container{position:fixed;top:0px;width:100%;z-index:2000}.shiny-progress .progress{position:absolute;width:100%;top:0px;height:3px;margin:0}.shiny-progress .bar{opacity:.6;transition-duration:.25s}.shiny-progress .progress-text{position:absolute;right:10px;width:240px;background-color:#eef8ff;margin:0;padding:2px 3px;opacity:.85}.shiny-progress .progress-text .progress-message{padding:0 3px;font-weight:bold;font-size:90%}.shiny-progress .progress-text .progress-detail{padding:0 3px;font-size:80%}.shiny-progress-notification .progress{margin-bottom:5px;height:10px}.shiny-progress-notification .progress-text .progress-message{font-weight:bold;font-size:90%}.shiny-progress-notification .progress-text .progress-detail{font-size:80%}.shiny-label-null{display:none}.crosshair{cursor:crosshair}.grabbable{cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.grabbing{cursor:grabbing;cursor:-moz-grabbing;cursor:-webkit-grabbing}.ns-resize{cursor:ns-resize}.ew-resize{cursor:ew-resize}.nesw-resize{cursor:nesw-resize}.nwse-resize{cursor:nwse-resize}.qt pre,.qt code{font-family:monospace!important}.qt5 .radio input[type=radio],.qt5 .checkbox input[type=checkbox]{margin-top:0}.qtmac input[type=radio],.qtmac input[type=checkbox]{zoom:1.0000001}.selectize-control{margin-bottom:10px}.shiny-frame{border:none}.shiny-flow-layout>div{display:inline-block;vertical-align:top;padding-right:12px;width:220px}.shiny-split-layout{width:100%;white-space:nowrap}.shiny-split-layout>div{display:inline-block;vertical-align:top;box-sizing:border-box;overflow:auto}.shiny-input-panel{padding:6px 8px;margin-top:6px;margin-bottom:6px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:2px}.shiny-input-checkboxgroup label~.shiny-options-group,.shiny-input-radiogroup label~.shiny-options-group{margin-top:-10px}.shiny-input-checkboxgroup.shiny-input-container-inline label~.shiny-options-group,.shiny-input-radiogroup.shiny-input-container-inline label~.shiny-options-group{margin-top:-1px}.shiny-input-container:not(.shiny-input-container-inline){width:300px;max-width:100%}.well .shiny-input-container{width:auto}.shiny-input-container>div>select:not(.selectized){width:100%}#shiny-notification-panel{position:fixed;bottom:0;right:0;background-color:#0000;padding:2px;width:250px;z-index:99999}.shiny-notification{background-color:#e8e8e8;color:#333;border:1px solid #ccc;border-radius:3px;opacity:.85;padding:10px 8px 10px 10px;margin:2px}.shiny-notification-message{color:#31708f;background-color:#d9edf7;border:1px solid #bce8f1}.shiny-notification-warning{color:#8a6d3b;background-color:#fcf8e3;border:1px solid #faebcc}.shiny-notification-error{color:#a94442;background-color:#f2dede;border:1px solid #ebccd1}.shiny-notification-close{float:right;font-weight:bold;font-size:18px;bottom:9px;position:relative;padding-left:4px;color:#444;cursor:default}.shiny-notification-close:hover{color:#000}.shiny-notification-content-action a{color:#337ab7;text-decoration:underline;font-weight:bold}.shiny-file-input-active{box-shadow:inset 0 1px 1px #00000013,0 0 8px #66afe999}.shiny-file-input-over{box-shadow:inset 0 1px 1px #00000013,0 0 8px #4cae4c99}.datepicker table tbody tr td.disabled,.datepicker table tbody tr td.disabled:hover,.datepicker table tbody tr td span.disabled,.datepicker table tbody tr td span.disabled:hover{color:#aaa;cursor:not-allowed}.nav-hidden{display:none!important} diff --git a/inst/www/shared/shiny.min.js b/inst/www/shared/shiny.min.js index db3e325452..25473a931d 100644 --- a/inst/www/shared/shiny.min.js +++ b/inst/www/shared/shiny.min.js @@ -1,3 +1,3 @@ -/*! shiny 1.7.0 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */ -(function(){var xy=Object.create;var eo=Object.defineProperty;var Oy=Object.getOwnPropertyDescriptor;var Sy=Object.getOwnPropertyNames;var Iy=Object.getPrototypeOf,Ry=Object.prototype.hasOwnProperty;var Py=function(e){return eo(e,"__esModule",{value:!0})};var v=function(e,t){return function(){return t||e((t={exports:{}}).exports,t),t.exports}};var qy=function(e,t,r){if(t&&typeof t=="object"||typeof t=="function")for(var n=Sy(t),i=0,o=n.length,a;i0?Nh:Ch)(e)}});var ce=v(function($q,Xs){var Ah=ut(),$h=Math.min;Xs.exports=function(e){return e>0?$h(Ah(e),9007199254740991):0}});var Vt=v(function(Mq,Qs){var Mh=ut(),Vh=Math.max,Fh=Math.min;Qs.exports=function(e,t){var r=Mh(e);return r<0?Vh(r+t,0):Fh(r,t)}});var po=v(function(Vq,Zs){var Lh=Te(),zh=ce(),Uh=Vt(),Js=function(e){return function(t,r,n){var i=Lh(t),o=zh(i.length),a=Uh(n,o),u;if(e&&r!=r){for(;o>a;)if(u=i[a++],u!=u)return!0}else for(;o>a;a++)if((e||a in i)&&i[a]===r)return e||a||0;return!e&&-1}};Zs.exports={includes:Js(!0),indexOf:Js(!1)}});var vo=v(function(Fq,el){var mo=le(),Hh=Te(),Gh=po().indexOf,Kh=pr();el.exports=function(e,t){var r=Hh(e),n=0,i=[],o;for(o in r)!mo(Kh,o)&&mo(r,o)&&i.push(o);for(;t.length>n;)mo(r,o=t[n++])&&(~Gh(i,o)||i.push(o));return i}});var sn=v(function(Lq,tl){tl.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var Ft=v(function(rl){var Wh=vo(),Yh=sn(),Xh=Yh.concat("length","prototype");rl.f=Object.getOwnPropertyNames||function(t){return Wh(t,Xh)}});var yo=v(function(nl){nl.f=Object.getOwnPropertySymbols});var ol=v(function(Hq,il){var Qh=St(),Jh=Ft(),Zh=yo(),eg=Y();il.exports=Qh("Reflect","ownKeys")||function(t){var r=Jh.f(eg(t)),n=Zh.f;return n?r.concat(n(t)):r}});var ho=v(function(Gq,al){var tg=le(),rg=ol(),ng=xt(),ig=me();al.exports=function(e,t){for(var r=rg(t),n=ig.f,i=ng.f,o=0;o>>0||(Pg.test(n)?16:10))}:cn});var xo=v(function(cT,ql){"use strict";var Ng=Y();ql.exports=function(){var e=Ng(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}});var So=v(function(Oo){"use strict";var Tl=M();function El(e,t){return RegExp(e,t)}Oo.UNSUPPORTED_Y=Tl(function(){var e=El("a","y");return e.lastIndex=2,e.exec("abcd")!=null});Oo.BROKEN_CARET=Tl(function(){var e=El("^r","gy");return e.lastIndex=2,e.exec("str")!=null})});var gr=v(function(pT,Cl){"use strict";var Ag=xo(),kl=So(),$g=cr(),pn=RegExp.prototype.exec,Mg=$g("native-string-replace",String.prototype.replace),Bl=pn,Io=function(){var e=/a/,t=/b*/g;return pn.call(e,"a"),pn.call(t,"a"),e.lastIndex!==0||t.lastIndex!==0}(),Dl=kl.UNSUPPORTED_Y||kl.BROKEN_CARET,Ro=/()??/.exec("")[1]!==void 0,Vg=Io||Ro||Dl;Vg&&(Bl=function(t){var r=this,n,i,o,a,u=Dl&&r.sticky,l=Ag.call(r),s=r.source,c=0,f=t;return u&&(l=l.replace("y",""),l.indexOf("g")===-1&&(l+="g"),f=String(t).slice(r.lastIndex),r.lastIndex>0&&(!r.multiline||r.multiline&&t[r.lastIndex-1]!=="\n")&&(s="(?: "+s+")",f=" "+f,c++),i=new RegExp("^(?:"+s+")",l)),Ro&&(i=new RegExp("^"+s+"$(?!\\s)",l)),Io&&(n=r.lastIndex),o=pn.call(u?i:r,f),u?o?(o.input=o.input.slice(c),o[0]=o[0].slice(c),o.index=r.lastIndex,r.lastIndex+=o[0].length):r.lastIndex=0:Io&&o&&(r.lastIndex=r.global?o.index+o[0].length:n),Ro&&o&&o.length>1&&Mg.call(o[0],i,function(){for(a=1;a=74)&&(Ve=Po.match(/Chrome\/(\d+)/),Ve&&(dn=Ve[1])));Ll.exports=dn&&+dn});var mn=v(function(hT,Ul){var zl=br(),Ug=M();Ul.exports=!!Object.getOwnPropertySymbols&&!Ug(function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&zl&&zl<41})});var qo=v(function(gT,Hl){var Hg=mn();Hl.exports=Hg&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var G=v(function(bT,Wl){var Gg=z(),Kg=cr(),Gl=le(),Wg=on(),Kl=mn(),Yg=qo(),jr=Kg("wks"),wr=Gg.Symbol,Xg=Yg?wr:wr&&wr.withoutSetter||Wg;Wl.exports=function(e){return(!Gl(jr,e)||!(Kl||typeof jr[e]=="string"))&&(Kl&&Gl(wr,e)?jr[e]=wr[e]:jr[e]=Xg("Symbol."+e)),jr[e]}});var _r=v(function(jT,Zl){"use strict";Ie();var Yl=We(),Qg=gr(),vn=M(),To=G(),Jg=Se(),Zg=To("species"),Eo=RegExp.prototype,eb=!vn(function(){var e=/./;return e.exec=function(){var t=[];return t.groups={a:"7"},t},"".replace(e,"$")!=="7"}),Xl=function(){return"a".replace(/./,"$0")==="$0"}(),Ql=To("replace"),Jl=function(){return/./[Ql]?/./[Ql]("a","$0")==="":!1}(),tb=!vn(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var r="ab".split(e);return r.length!==2||r[0]!=="a"||r[1]!=="b"});Zl.exports=function(e,t,r,n){var i=To(e),o=!vn(function(){var f={};return f[i]=function(){return 7},""[e](f)!=7}),a=o&&!vn(function(){var f=!1,p=/a/;return e==="split"&&(p={},p.constructor={},p.constructor[Zg]=function(){return p},p.flags="",p[i]=/./[i]),p.exec=function(){return f=!0,null},p[i](""),!f});if(!o||!a||e==="replace"&&!(eb&&Xl&&!Jl)||e==="split"&&!tb){var u=/./[i],l=r(i,""[e],function(f,p,m,d,y){var h=p.exec;return h===Qg||h===Eo.exec?o&&!y?{done:!0,value:u.call(p,m,d)}:{done:!0,value:f.call(m,p,d)}:{done:!1}},{REPLACE_KEEPS_$0:Xl,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:Jl}),s=l[0],c=l[1];Yl(String.prototype,e,s),Yl(Eo,i,t==2?function(f,p){return c.call(f,this,p)}:function(f){return c.call(f,this)})}n&&Jg(Eo[i],"sham",!0)}});var ko=v(function(wT,tc){var rb=ut(),nb=Ke(),ec=function(e){return function(t,r){var n=String(nb(t)),i=rb(r),o=n.length,a,u;return i<0||i>=o?e?"":void 0:(a=n.charCodeAt(i),a<55296||a>56319||i+1===o||(u=n.charCodeAt(i+1))<56320||u>57343?e?n.charAt(i):a:e?n.slice(i,i+2):(a-55296<<10)+(u-56320)+65536)}};tc.exports={codeAt:ec(!1),charAt:ec(!0)}});var yn=v(function(_T,rc){"use strict";var ib=ko().charAt;rc.exports=function(e,t,r){return t+(r?ib(e,t).length:1)}});var ic=v(function(xT,nc){var ob=je(),ab=Math.floor,ub="".replace,sb=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,lb=/\$([$&'`]|\d{1,2})/g;nc.exports=function(e,t,r,n,i,o){var a=r+e.length,u=n.length,l=lb;return i!==void 0&&(i=ob(i),l=sb),ub.call(o,l,function(s,c){var f;switch(c.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,r);case"'":return t.slice(a);case"<":f=i[c.slice(1,-1)];break;default:var p=+c;if(p===0)return s;if(p>u){var m=ab(p/10);return m===0?s:m<=u?n[m-1]===void 0?c.charAt(1):n[m-1]+c.charAt(1):s}f=n[p-1]}return f===void 0?"":f})}});var xr=v(function(OT,oc){var cb=Ge(),fb=gr();oc.exports=function(e,t){var r=e.exec;if(typeof r=="function"){var n=r.call(e,t);if(typeof n!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return n}if(cb(e)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return fb.call(e,t)}});var hn=v(function(IT,uc){var xb=G(),Ob=xb("toStringTag"),ac={};ac[Ob]="z";uc.exports=String(ac)==="[object z]"});var Bo=v(function(RT,sc){var Sb=hn(),gn=Ge(),Ib=G(),Rb=Ib("toStringTag"),Pb=gn(function(){return arguments}())=="Arguments",qb=function(e,t){try{return e[t]}catch(r){}};sc.exports=Sb?gn:function(e){var t,r,n;return e===void 0?"Undefined":e===null?"Null":typeof(r=qb(t=Object(e),Rb))=="string"?r:Pb?gn(t):(n=gn(t))=="Object"&&typeof t.callee=="function"?"Arguments":n}});var cc=v(function(PT,lc){"use strict";var Tb=hn(),Eb=Bo();lc.exports=Tb?{}.toString:function(){return"[object "+Eb(this)+"]"}});var mc=v(function(ET,dc){var Fb=z(),Lb=hr().trim,zb=yr(),Co=Fb.parseFloat,Ub=1/Co(zb+"-0")!=-Infinity;dc.exports=Ub?function(t){var r=Lb(String(t)),n=Co(r);return n===0&&r.charAt(0)=="-"?-0:n}:Co});var hc=v(function(BT,yc){var Gb=Ge();yc.exports=function(e){if(typeof e!="number"&&Gb(e)!="Number")throw TypeError("Incorrect invocation");return+e}});var Or=v(function(CT,jc){var Yb=Ge();jc.exports=Array.isArray||function(t){return Yb(t)=="Array"}});var Sr=v(function(NT,wc){"use strict";var Xb=$t(),Qb=me(),Jb=At();wc.exports=function(e,t,r){var n=Xb(t);n in e?Qb.f(e,n,Jb(0,r)):e[n]=r}});var jn=v(function(AT,xc){var Zb=re(),_c=Or(),ej=G(),tj=ej("species");xc.exports=function(e,t){var r;return _c(e)&&(r=e.constructor,typeof r=="function"&&(r===Array||_c(r.prototype))?r=void 0:Zb(r)&&(r=r[tj],r===null&&(r=void 0))),new(r===void 0?Array:r)(t===0?0:t)}});var Lt=v(function($T,Oc){var rj=M(),nj=G(),ij=br(),oj=nj("species");Oc.exports=function(e){return ij>=51||!rj(function(){var t=[],r=t.constructor={};return r[oj]=function(){return{foo:1}},t[e](Boolean).foo!==1})}});var Ir=v(function(LT,Ec){var Uj=vo(),Hj=sn();Ec.exports=Object.keys||function(t){return Uj(t,Hj)}});var Dc=v(function(UT,Bc){var Xj=re(),Qj=Ge(),Jj=G(),Zj=Jj("match");Bc.exports=function(e){var t;return Xj(e)&&((t=e[Zj])!==void 0?!!t:Qj(e)=="RegExp")}});var zt=v(function(HT,Cc){Cc.exports=function(e){if(typeof e!="function")throw TypeError(String(e)+" is not a function");return e}});var No=v(function(GT,Ac){var Nc=Y(),ew=zt(),tw=G(),rw=tw("species");Ac.exports=function(e,t){var r=Nc(e).constructor,n;return r===void 0||(n=Nc(r)[rw])==null?t:ew(n)}});var Uo=v(function(hE,tf){var gw=zt();tf.exports=function(e,t,r){if(gw(e),t===void 0)return e;switch(r){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,o){return e.call(t,n,i,o)}}return function(){return e.apply(t,arguments)}}});var Gt=v(function(gE,nf){var bw=Uo(),jw=sr(),ww=je(),_w=ce(),xw=jn(),rf=[].push,st=function(e){var t=e==1,r=e==2,n=e==3,i=e==4,o=e==6,a=e==7,u=e==5||o;return function(l,s,c,f){for(var p=ww(l),m=jw(p),d=bw(s,c,3),y=_w(m.length),h=0,g=f||xw,w=t?g(l,y):r||a?g(l,0):void 0,I,_;y>h;h++)if((u||h in m)&&(I=m[h],_=d(I,h,p),e))if(t)w[h]=_;else if(_)switch(e){case 3:return!0;case 5:return I;case 6:return h;case 2:rf.call(w,I)}else switch(e){case 4:return!1;case 7:rf.call(w,I)}return o?-1:n||i?i:w}};nf.exports={forEach:st(0),map:st(1),filter:st(2),some:st(3),every:st(4),find:st(5),findIndex:st(6),filterOut:st(7)}});var af=v(function(bE,of){var Ow=de(),Sw=me(),Iw=Y(),Rw=Ir();of.exports=Ow?Object.defineProperties:function(t,r){Iw(t);for(var n=Rw(r),i=n.length,o=0,a;i>o;)Sw.f(t,a=n[o++],r[a]);return t}});var sf=v(function(jE,uf){var Pw=St();uf.exports=Pw("document","documentElement")});var Kt=v(function(wE,mf){var qw=Y(),Tw=af(),lf=sn(),Ew=pr(),kw=sf(),Bw=ro(),Dw=fr(),cf=">",ff="<",Ho="prototype",Go="script",pf=Dw("IE_PROTO"),Ko=function(){},df=function(e){return ff+Go+cf+e+ff+"/"+Go+cf},Cw=function(e){e.write(df("")),e.close();var t=e.parentWindow.Object;return e=null,t},Nw=function(){var e=Bw("iframe"),t="java"+Go+":",r;return e.style.display="none",kw.appendChild(e),e.src=String(t),r=e.contentWindow.document,r.open(),r.write(df("document.F=Object")),r.close(),r.F},Wo,On=function(){try{Wo=document.domain&&new ActiveXObject("htmlfile")}catch(t){}On=Wo?Cw(Wo):Nw();for(var e=lf.length;e--;)delete On[Ho][lf[e]];return On()};Ew[pf]=!0;mf.exports=Object.create||function(t,r){var n;return t!==null?(Ko[Ho]=qw(t),n=new Ko,Ko[Ho]=null,n[pf]=t):n=On(),r===void 0?n:Tw(n,r)}});var Qo=v(function(_E,vf){var Aw=G(),$w=Kt(),Mw=me(),Yo=Aw("unscopables"),Xo=Array.prototype;Xo[Yo]==null&&Mw.f(Xo,Yo,{configurable:!0,value:$w(null)});vf.exports=function(e){Xo[Yo][e]=!0}});var gf=v(function(OE,hf){var zw=re();hf.exports=function(e){if(!zw(e)&&e!==null)throw TypeError("Can't set "+String(e)+" as a prototype");return e}});var qr=v(function(SE,bf){var Uw=Y(),Hw=gf();bf.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e=!1,t={},r;try{r=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,r.call(t,[]),e=t instanceof Array}catch(n){}return function(i,o){return Uw(i),Hw(o),e?r.call(i,o):i.__proto__=o,i}}():void 0)});var Zo=v(function(RE,jf){var Ww=M();jf.exports=!Ww(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})});var Wt=v(function(PE,_f){var Yw=le(),Xw=je(),Qw=fr(),Jw=Zo(),wf=Qw("IE_PROTO"),Zw=Object.prototype;_f.exports=Jw?Object.getPrototypeOf:function(e){return e=Xw(e),Yw(e,wf)?e[wf]:typeof e.constructor=="function"&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?Zw:null}});var If=v(function(TE,Sf){"use strict";var o_=zt(),a_=re(),Of=[].slice,ea={},u_=function(e,t,r){if(!(t in ea)){for(var n=[],i=0;i=t.length?(e.target=void 0,{value:void 0,done:!0}):r=="keys"?{value:n,done:!1}:r=="values"?{value:t[n],done:!1}:{value:[n,t[n]],done:!1}},"values");Sp.Arguments=Sp.Array;Ra("keys");Ra("values");Ra("entries")});var Pa=v(function(HE,Ep){Ep.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}});var Vp=v(function(uk,Mp){var Ix=M(),Ap=yr(),$p="\u200B\x85\u180E";Mp.exports=function(e){return Ix(function(){return!!Ap[e]()||$p[e]()!=$p||Ap[e].name!==e})}});var Gp=v(function(Ok,Hp){var $x=re(),Up=qr();Hp.exports=function(e,t,r){var n,i;return Up&&typeof(n=t.constructor)=="function"&&n!==r&&$x(i=n.prototype)&&i!==r.prototype&&Up(e,i),e}});var pm=v(function(cN,fm){fm.exports=Object.is||function(t,r){return t===r?t!==0||1/t==1/r:t!=t&&r!=r}});var _m=v(function(zN,wm){var NI=de(),AI=Ir(),$I=Te(),MI=en().f,jm=function(e){return function(t){for(var r=$I(t),n=AI(r),i=n.length,o=0,a=[],u;i>o;)u=n[o++],(!NI||MI.call(r,u))&&a.push(e?[u,r[u]]:r[u]);return a}};wm.exports={entries:jm(!0),values:jm(!1)}});var Om=v(function(HN,xm){var LI=Y();xm.exports=function(e){var t=e.return;if(t!==void 0)return LI(t.call(e)).value}});var Im=v(function(GN,Sm){var zI=Y(),UI=Om();Sm.exports=function(e,t,r,n){try{return n?t(zI(r)[0],r[1]):t(r)}catch(i){throw UI(e),i}}});var Pm=v(function(KN,Rm){var HI=G(),GI=Jt(),KI=HI("iterator"),WI=Array.prototype;Rm.exports=function(e){return e!==void 0&&(GI.Array===e||WI[KI]===e)}});var Tm=v(function(WN,qm){var YI=Bo(),XI=Jt(),QI=G(),JI=QI("iterator");qm.exports=function(e){if(e!=null)return e[JI]||e["@@iterator"]||XI[YI(e)]}});var Bm=v(function(YN,km){"use strict";var ZI=Uo(),e0=je(),t0=Im(),r0=Pm(),n0=ce(),Em=Sr(),i0=Tm();km.exports=function(t){var r=e0(t),n=typeof this=="function"?this:Array,i=arguments.length,o=i>1?arguments[1]:void 0,a=o!==void 0,u=i0(r),l=0,s,c,f,p,m,d;if(a&&(o=ZI(o,i>2?arguments[2]:void 0,2)),u!=null&&!(n==Array&&r0(u)))for(p=u.call(r),m=p.next,c=new n;!(f=m.call(p)).done;l++)d=a?t0(p,o,[f.value,l],!0):f.value,Em(c,l,d);else for(s=n0(r.length),c=new n(s);s>l;l++)d=a?o(r[l],l):r[l],Em(c,l,d);return c.length=l,c}});var $m=v(function(XN,Am){var o0=G(),Dm=o0("iterator"),Cm=!1;try{Nm=0,su={next:function(){return{done:!!Nm++}},return:function(){Cm=!0}},su[Dm]=function(){return this},Array.from(su,function(){throw 2})}catch(e){}var Nm,su;Am.exports=function(e,t){if(!t&&!Cm)return!1;var r=!1;try{var n={};n[Dm]=function(){return{next:function(){return{done:r=!0}}}},e(n)}catch(i){}return r}});var Cu=v(function(iF,jv){jv.exports=typeof ArrayBuffer!="undefined"&&typeof DataView!="undefined"});var _v=v(function(oF,wv){var WR=We();wv.exports=function(e,t,r){for(var n in t)WR(e,n,t[n],r);return e}});var Ov=v(function(aF,xv){xv.exports=function(e,t,r){if(!(e instanceof t))throw TypeError("Incorrect "+(r?r+" ":"")+"invocation");return e}});var Iv=v(function(uF,Sv){var YR=ut(),XR=ce();Sv.exports=function(e){if(e===void 0)return 0;var t=YR(e),r=XR(t);if(t!==r)throw RangeError("Wrong length or index");return r}});var Pv=v(function(sF,Rv){var QR=Math.abs,rt=Math.pow,JR=Math.floor,ZR=Math.log,eP=Math.LN2,tP=function(e,t,r){var n=new Array(r),i=r*8-t-1,o=(1<>1,u=t===23?rt(2,-24)-rt(2,-77):0,l=e<0||e===0&&1/e<0?1:0,s=0,c,f,p;for(e=QR(e),e!=e||e===Infinity?(f=e!=e?1:0,c=o):(c=JR(ZR(e)/eP),e*(p=rt(2,-c))<1&&(c--,p*=2),c+a>=1?e+=u/p:e+=u*rt(2,1-a),e*p>=2&&(c++,p/=2),c+a>=o?(f=0,c=o):c+a>=1?(f=(e*p-1)*rt(2,t),c=c+a):(f=e*rt(2,a-1)*rt(2,t),c=0));t>=8;n[s++]=f&255,f/=256,t-=8);for(c=c<0;n[s++]=c&255,c/=256,i-=8);return n[--s]|=l*128,n},rP=function(e,t){var r=e.length,n=r*8-t-1,i=(1<>1,a=n-7,u=r-1,l=e[u--],s=l&127,c;for(l>>=7;a>0;s=s*256+e[u],u--,a-=8);for(c=s&(1<<-a)-1,s>>=-a,a+=t;a>0;c=c*256+e[u],u--,a-=8);if(s===0)s=1-o;else{if(s===i)return c?NaN:l?-Infinity:Infinity;c=c+rt(2,t),s=s-o}return(l?-1:1)*c*rt(2,s-t)};Rv.exports={pack:tP,unpack:rP}});var Ev=v(function(lF,Tv){"use strict";var nP=je(),qv=Vt(),iP=ce();Tv.exports=function(t){for(var r=nP(this),n=iP(r.length),i=arguments.length,o=qv(i>1?arguments[1]:void 0,n),a=i>2?arguments[2]:void 0,u=a===void 0?n:qv(a,n);u>o;)r[o++]=t;return r}});var Xi=v(function(cF,Kv){"use strict";var Nu=z(),Au=de(),oP=Cu(),aP=Se(),kv=_v(),$u=M(),Li=Ov(),uP=ut(),sP=ce(),zi=Iv(),Bv=Pv(),lP=Wt(),Dv=qr(),cP=Ft().f,fP=me().f,pP=Ev(),Cv=Tr(),Nv=Mt(),ur=Nv.get,Av=Nv.set,Ui="ArrayBuffer",Hi="DataView",Xr="prototype",dP="Wrong length",$v="Wrong index",$e=Nu[Ui],Oe=$e,Me=Nu[Hi],Gi=Me&&Me[Xr],Mv=Object.prototype,Ki=Nu.RangeError,Vv=Bv.pack,Fv=Bv.unpack,Lv=function(e){return[e&255]},zv=function(e){return[e&255,e>>8&255]},Uv=function(e){return[e&255,e>>8&255,e>>16&255,e>>24&255]},Hv=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},mP=function(e){return Vv(e,23,4)},vP=function(e){return Vv(e,52,8)},Wi=function(e,t){fP(e[Xr],t,{get:function(){return ur(this)[t]}})},jt=function(e,t,r,n){var i=zi(r),o=ur(e);if(i+t>o.byteLength)throw Ki($v);var a=ur(o.buffer).bytes,u=i+o.byteOffset,l=a.slice(u,u+t);return n?l:l.reverse()},wt=function(e,t,r,n,i,o){var a=zi(r),u=ur(e);if(a+t>u.byteLength)throw Ki($v);for(var l=ur(u.buffer).bytes,s=a+u.byteOffset,c=n(+i),f=0;fi)throw Ki("Wrong offset");if(n=n===void 0?i-o:sP(n),o+n>i)throw Ki(dP);Av(this,{buffer:t,byteLength:n,byteOffset:o}),Au||(this.buffer=t,this.byteLength=n,this.byteOffset=o)},Au&&(Wi(Oe,"byteLength"),Wi(Me,"buffer"),Wi(Me,"byteLength"),Wi(Me,"byteOffset")),kv(Me[Xr],{getInt8:function(t){return jt(this,1,t)[0]<<24>>24},getUint8:function(t){return jt(this,1,t)[0]},getInt16:function(t){var r=jt(this,2,t,arguments.length>1?arguments[1]:void 0);return(r[1]<<8|r[0])<<16>>16},getUint16:function(t){var r=jt(this,2,t,arguments.length>1?arguments[1]:void 0);return r[1]<<8|r[0]},getInt32:function(t){return Hv(jt(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return Hv(jt(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return Fv(jt(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return Fv(jt(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,r){wt(this,1,t,Lv,r)},setUint8:function(t,r){wt(this,1,t,Lv,r)},setInt16:function(t,r){wt(this,2,t,zv,r,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,r){wt(this,2,t,zv,r,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,r){wt(this,4,t,Uv,r,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,r){wt(this,4,t,Uv,r,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,r){wt(this,4,t,mP,r,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,r){wt(this,8,t,vP,r,arguments.length>2?arguments[2]:void 0)}});else{if(!$u(function(){$e(1)})||!$u(function(){new $e(-1)})||$u(function(){return new $e,new $e(1.5),new $e(NaN),$e.name!=Ui})){for(Oe=function(t){return Li(this,Oe),new $e(zi(t))},Gv=Oe[Xr]=$e[Xr],Mu=cP($e),Vu=0;Mu.length>Vu;)(Yi=Mu[Vu++])in Oe||aP(Oe,Yi,$e[Yi]);Gv.constructor=Oe}Dv&&lP(Gi)!==Mv&&Dv(Gi,Mv),Qr=new Me(new Oe(2)),Fu=Gi.setInt8,Qr.setInt8(0,2147483648),Qr.setInt8(1,2147483649),(Qr.getInt8(0)||!Qr.getInt8(1))&&kv(Gi,{setInt8:function(t,r){Fu.call(this,t,r<<24>>24)},setUint8:function(t,r){Fu.call(this,t,r<<24>>24)}},{unsafe:!0})}var Gv,Mu,Vu,Yi,Qr,Fu;Cv(Oe,Ui);Cv(Me,Hi);Kv.exports={ArrayBuffer:Oe,DataView:Me}});var Xv=v(function(fF,Yv){"use strict";var yP=St(),hP=me(),gP=G(),bP=de(),Wv=gP("species");Yv.exports=function(e){var t=yP(e),r=hP.f;bP&&t&&!t[Wv]&&r(t,Wv,{configurable:!0,get:function(){return this}})}});var oy=v(function(vF,iy){var BP=zt(),DP=je(),CP=sr(),NP=ce(),ny=function(e){return function(t,r,n,i){BP(r);var o=DP(t),a=CP(o),u=NP(o.length),l=e?u-1:0,s=e?-1:1;if(n<2)for(;;){if(l in a){i=a[l],l+=s;break}if(l+=s,e?l<0:u<=l)throw TypeError("Reduce of empty array with no initial value")}for(;e?l>=0:u>l;l+=s)l in a&&(i=r(i,a[l],l,o));return i}};iy.exports={left:ny(!1),right:ny(!0)}});var uy=v(function(yF,ay){var AP=Ge(),$P=z();ay.exports=AP($P.process)=="process"});var Uu=v(function(gF,ly){"use strict";var HP=Gt().forEach,GP=vr(),KP=GP("forEach");ly.exports=KP?[].forEach:function(t){return HP(this,t,arguments.length>1?arguments[1]:void 0)}});var Yu=j(E());function Xu(){(0,Yu.default)(document).on("submit","form:not([action])",function(e){e.preventDefault()})}var Qu=j(E());function Ju(){var e=window.history.pushState;window.history.pushState=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?arguments[1]:void 0)}});var Tg=A(),hl=yl();Tg({global:!0,forced:parseInt!=hl},{parseInt:hl});var fn=j(E());var gl=!1,bl=!1,jl=-1;function wo(e){gl=e}function wl(e){bl=e}function _l(e){jl=e}function xl(){return gl}function It(){return bl}function Ol(){return jl}var fe;function Sl(e){fe=e}function Eg(){var e=fe.indexOf("MSIE ");if(It()&&e>0)return parseInt(fe.substring(e+5,fe.indexOf(".",e)),10);var t=fe.indexOf("Trident/");if(t>0){var r=fe.indexOf("rv:");return parseInt(fe.substring(r+3,fe.indexOf(".",r)),10)}return-1}function Il(){/\bQt\//.test(fe)?((0,fn.default)(document.documentElement).addClass("qt"),wo(!0)):wo(!1),/\bQt/.test(fe)&&/\bMacintosh/.test(fe)&&(0,fn.default)(document.documentElement).addClass("qtmac"),/\bQt\/5/.test(fe)&&/Linux/.test(fe)&&(0,fn.default)(document.documentElement).addClass("qt5"),wl(/MSIE|Trident|Edge/.test(fe)),_l(Eg())}function Rl(){return window.Shiny||(window.Shiny={}),window.Shiny}var hy=j(E());var kg=de(),Bg=me().f,_o=Function.prototype,Dg=_o.toString,Cg=/^\s*function ([^ (]*)/,Pl="name";kg&&!(Pl in _o)&&Bg(_o,Pl,{configurable:!0,get:function(){try{return Dg.call(this).match(Cg)[1]}catch(e){return""}}});var QT=j(Ie());"use strict";var pb=_r(),db=Y(),mb=ce(),vb=ut(),yb=Ke(),hb=yn(),gb=ic(),bb=xr(),jb=Math.max,wb=Math.min,_b=function(e){return e===void 0?e:String(e)};pb("replace",2,function(e,t,r,n){var i=n.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,o=n.REPLACE_KEEPS_$0,a=i?"$":"$0";return[function(l,s){var c=yb(this),f=l==null?void 0:l[e];return f!==void 0?f.call(l,c,s):t.call(String(c),l,s)},function(u,l){if(!i&&o||typeof l=="string"&&l.indexOf(a)===-1){var s=r(t,u,this,l);if(s.done)return s.value}var c=db(u),f=String(this),p=typeof l=="function";p||(l=String(l));var m=c.global;if(m){var d=c.unicode;c.lastIndex=0}for(var y=[];;){var h=bb(c,f);if(h===null||(y.push(h),!m))break;var g=String(h[0]);g===""&&(c.lastIndex=hb(f,mb(c.lastIndex),d))}for(var w="",I=0,_=0;_=I&&(w+=f.slice(I,D)+be,I=D+P.length)}return w+f.slice(I)}]});var kb=hn(),Bb=We(),Db=cc();kb||Bb(Object.prototype,"toString",Db,{unsafe:!0});"use strict";var Cb=We(),Nb=Y(),Ab=M(),$b=xo(),Do="toString",fc=RegExp.prototype,pc=fc[Do],Mb=Ab(function(){return pc.call({source:"a",flags:"b"})!="/a/b"}),Vb=pc.name!=Do;(Mb||Vb)&&Cb(RegExp.prototype,Do,function(){var t=Nb(this),r=String(t.source),n=t.flags,i=String(n===void 0&&t instanceof RegExp&&!("flags"in fc)?$b.call(t):n);return"/"+r+"/"+i},{unsafe:!0});var Hb=A(),vc=mc();Hb({global:!0,forced:parseFloat!=vc},{parseFloat:vc});"use strict";var Kb=A(),gc=M(),bc=hc(),bn=1 .toPrecision,Wb=gc(function(){return bn.call(1,void 0)!=="1"})||!gc(function(){bn.call({})});Kb({target:"Number",proto:!0,forced:Wb},{toPrecision:function(t){return t===void 0?bn.call(bc(this)):bn.call(bc(this),t)}});"use strict";var aj=A(),uj=M(),sj=Or(),lj=re(),cj=je(),fj=ce(),Sc=Sr(),pj=jn(),dj=Lt(),mj=G(),vj=br(),Ic=mj("isConcatSpreadable"),Rc=9007199254740991,Pc="Maximum allowed index exceeded",yj=vj>=51||!uj(function(){var e=[];return e[Ic]=!1,e.concat()[0]!==e}),hj=dj("concat"),gj=function(e){if(!lj(e))return!1;var t=e[Ic];return t!==void 0?!!t:sj(e)},bj=!yj||!hj;aj({target:"Array",proto:!0,forced:bj},{concat:function(t){var r=cj(this),n=pj(r,0),i=0,o,a,u,l,s;for(o=-1,u=arguments.length;oRc)throw TypeError(Pc);for(a=0;a=Rc)throw TypeError(Pc);Sc(n,i++,s)}return n.length=i,n}});"use strict";var jj=A(),wj=re(),qc=Or(),Tc=Vt(),_j=ce(),xj=Te(),Oj=Sr(),Sj=G(),Ij=Lt(),Rj=Ij("slice"),Pj=Sj("species"),qj=[].slice,Tj=Math.max;jj({target:"Array",proto:!0,forced:!Rj},{slice:function(t,r){var n=xj(this),i=_j(n.length),o=Tc(t,i),a=Tc(r===void 0?i:r,i),u,l,s;if(qc(n)&&(u=n.constructor,typeof u=="function"&&(u===Array||qc(u.prototype))?u=void 0:wj(u)&&(u=u[Pj],u===null&&(u=void 0)),u===Array||u===void 0))return qj.call(n,o,a);for(l=new(u===void 0?Array:u)(Tj(a-o,0)),s=0;oLj)throw TypeError(zj);for(s=Nj(n,l),c=0;ci-l+u;c--)delete n[c-1]}else if(u>l)for(c=i-l;c>o;c--)f=c+l-1,p=c+u-1,f in n?n[p]=n[f]:delete n[p];for(c=0;c1||"".split(/.?/).length?n=function(i,o){var a=String($c(this)),u=o===void 0?Vc:o>>>0;if(u===0)return[];if(i===void 0)return[a];if(!iw(i))return t.call(a,i,u);for(var l=[],s=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(i.sticky?"y":""),c=0,f=new RegExp(i.source,s+"g"),p,m,d;(p=lw.call(f,a))&&(m=f.lastIndex,!(m>c&&(l.push(a.slice(c,p.index)),p.length>1&&p.index=u)));)f.lastIndex===p.index&&f.lastIndex++;return c===a.length?(d||!f.test(""))&&l.push(""):l.push(a.slice(c)),l.length>u?l.slice(0,u):l}:"0".split(void 0,0).length?n=function(i,o){return i===void 0&&o===0?[]:t.call(this,i,o)}:n=t,[function(o,a){var u=$c(this),l=o==null?void 0:o[e];return l!==void 0?l.call(o,u,a):n.call(String(u),o,a)},function(i,o){var a=r(n,i,this,o,n!==t);if(a.done)return a.value;var u=ow(i),l=String(this),s=aw(u,RegExp),c=u.unicode,f=(u.ignoreCase?"i":"")+(u.multiline?"m":"")+(u.unicode?"u":"")+(Ut?"g":"y"),p=new s(Ut?"^(?:"+u.source+")":u,f),m=o===void 0?Vc:o>>>0;if(m===0)return[];if(l.length===0)return Mc(p,l)===null?[l]:[];for(var d=0,y=0,h=[];y":">",'"':""","'":"'","/":"/"};return e.replace(/[&<>'"/]/g,function(r){return t[r]})}function _n(){return Math.floor(4294967296+Math.random()*64424509440).toString(16)}function Rt(e){if(!(!e||!e.toLowerCase))switch(e.toLowerCase()){case"true":return!0;case"false":return!1;default:return}}function Fe(e,t){var r=void 0;if(e.currentStyle)r=e.currentStyle[t];else if(window.getComputedStyle){var n=document.defaultView.getComputedStyle(e,null);n&&(r=n.getPropertyValue(t))}return r}function Hc(e,t){for(var r=e.toString();r.length1&&arguments[1]!==void 0?arguments[1]:1;if(t<1)throw"Significant digits must be at least 1.";return parseFloat(e.toPrecision(t))}function Gc(e){var t=new Date(e);return t.toString()==="Invalid Date"&&(t=new Date(e.replace(/-/g,"/"))),t}function Ee(e){return e instanceof Date?e.getUTCFullYear()+"-"+Hc(e.getUTCMonth()+1,2)+"-"+Hc(e.getUTCDate(),2):null}function Kc(e,t){var r={};return function(){var n={w:e.offsetWidth,h:e.offsetHeight};n.w===0&&n.h===0||n.w===r.w&&n.h===r.h||(r=n,t(n.w,n.h))}}function Mo(){return Ao()?Math.round(Ao()*100)/100:1}function Wc(e){var t=e.replace(/[\\"']/g,"\\$&").replace(/\u0000/g,"\\0").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\b]/g,"\\b"),r;try{r=new Function("with (this) {\n try {\n return (".concat(e,");\n } catch (e) {\n console.error('Error evaluating expression: ").concat(t,"');\n throw e;\n }\n }"))}catch(n){throw console.error("Error parsing expression: "+e),n}return function(n){return r.call(n)}}function Ht(e){return e==null?[]:Array.isArray(e)?e:[e]}function Yc(e,t){function r(s,c,f){for(var p=0,m=0,d=[];p?@[\\\]^`{|}~])/g,"\\$1")};function ke(e,t){var r={};for(var n in e)O(e,n)&&(r[n]=t(e[n],n,e));return r}function Xc(e){return typeof e=="number"&&isNaN(e)}function Vo(e,t){if(Rr.default.type(e)==="object"&&Rr.default.type(t)==="object"){var r=e,n=t;if(Object.keys(r).length!==Object.keys(n).length)return!1;for(var i in r)if(!O(n,i)||!Vo(r[i],n[i]))return!1;return!0}else if(Rr.default.type(e)==="array"&&Rr.default.type(t)==="array"){var o=e,a=t;if(o.length!==a.length)return!1;for(var u=0;u=")return a>=0;if(r===">")return a>0;if(r==="<=")return a<=0;if(r==="<")return a<0;throw"Unknown operator: ".concat(r)};function ne(e,t){if(typeof e!="undefined"){if(t.length!==1)throw new Error("labelNode must be of length 1");var r=Array.isArray(e)&&e.length===0;r?t.addClass("shiny-label-null"):(t.text(e),t.removeClass("shiny-label-null"))}}function Pr(e){var t=document.createElement("a");t.href="/";var r=document.createElement("div");r.style.setProperty("position","absolute","important"),r.style.setProperty("top","-1000px","important"),r.style.setProperty("left","0","important"),r.style.setProperty("width","30px","important"),r.style.setProperty("height","10px","important"),r.appendChild(t),e.appendChild(r);var n=window.getComputedStyle(t).getPropertyValue("color");return e.removeChild(r),n}function Lo(){return!window.bootstrap}function Jc(e){return e.toLowerCase()}function dw(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Zc(e,t){for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:0,o={binding:r,priority:i};this.bindings.unshift(o),n&&(this.bindingNames[n]=o,r.name=n)}},{key:"setPriority",value:function(r,n){var i=this.bindingNames[r];if(!i)throw"Tried to set priority on unknown binding "+r;i.priority=n||0}},{key:"getPriority",value:function(r){var n=this.bindingNames[r];return n?n.priority:!1}},{key:"getBindings",value:function(){return Yc(this.bindings,function(r,n){return n.priority-r.priority})}}]),e}();function vw(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ef(e,t){for(var r=0;r1?arguments[1]:void 0)}});Lw(Jo);var Gw=A(),Kw=qr();Gw({target:"Object",stat:!0},{setPrototypeOf:Kw});var e_=A(),t_=M(),r_=je(),xf=Wt(),n_=Zo(),i_=t_(function(){xf(1)});e_({target:"Object",stat:!0,forced:i_,sham:!n_},{getPrototypeOf:function(t){return xf(r_(t))}});var s_=A(),l_=St(),Rf=zt(),c_=Y(),Pf=re(),f_=Kt(),p_=If(),qf=M(),ta=l_("Reflect","construct"),Tf=qf(function(){function e(){}return!(ta(function(){},[],e)instanceof e)}),Ef=!qf(function(){ta(function(){})}),kf=Tf||Ef;s_({target:"Reflect",stat:!0,forced:kf,sham:kf},{construct:function(t,r){Rf(t),c_(r);var n=arguments.length<3?t:Rf(arguments[2]);if(Ef&&!Tf)return ta(t,r,n);if(t==n){switch(r.length){case 0:return new t;case 1:return new t(r[0]);case 2:return new t(r[0],r[1]);case 3:return new t(r[0],r[1],r[2]);case 4:return new t(r[0],r[1],r[2],r[3])}var i=[null];return i.push.apply(i,r),new(p_.apply(t,i))}var o=n.prototype,a=f_(Pf(o)?o:Object.prototype),u=Function.apply.call(t,a,r);return Pf(u)?u:a}});"use strict";var Yt=A(),Lf=z(),x_=St(),O_=lr(),Xt=de(),Pt=mn(),S_=qo(),ia=M(),K=le(),I_=Or(),R_=re(),oa=Y(),P_=je(),Sn=Te(),aa=$t(),ua=At(),Er=Kt(),zf=Ir(),q_=Ft(),Uf=Nf(),sa=yo(),Hf=xt(),Gf=me(),Kf=en(),T_=Se(),la=We(),kr=cr(),E_=fr(),Wf=pr(),Yf=on(),Xf=G(),k_=ra(),B_=na(),D_=Tr(),Qf=Mt(),In=Gt().forEach,ve=E_("hidden"),Rn="Symbol",Ye="prototype",Jf=Xf("toPrimitive"),C_=Qf.set,Zf=Qf.getterFor(Rn),Re=Object[Ye],ye=Lf.Symbol,Br=x_("JSON","stringify"),ep=Hf.f,lt=Gf.f,tp=Uf.f,N_=Kf.f,Xe=kr("symbols"),Dr=kr("op-symbols"),ca=kr("string-to-symbol-registry"),fa=kr("symbol-to-string-registry"),A_=kr("wks"),pa=Lf.QObject,da=!pa||!pa[Ye]||!pa[Ye].findChild,ma=Xt&&ia(function(){return Er(lt({},"a",{get:function(){return lt(this,"a",{value:7}).a}})).a!=7})?function(e,t,r){var n=ep(Re,t);n&&delete Re[t],lt(e,t,r),n&&e!==Re&<(Re,t,n)}:lt,va=function(e,t){var r=Xe[e]=Er(ye[Ye]);return C_(r,{type:Rn,tag:e,description:t}),Xt||(r.description=t),r},ya=S_?function(e){return typeof e=="symbol"}:function(e){return Object(e)instanceof ye},Pn=function(t,r,n){t===Re&&Pn(Dr,r,n),oa(t);var i=aa(r,!0);return oa(n),K(Xe,i)?(n.enumerable?(K(t,ve)&&t[ve][i]&&(t[ve][i]=!1),n=Er(n,{enumerable:ua(0,!1)})):(K(t,ve)||lt(t,ve,ua(1,{})),t[ve][i]=!0),ma(t,i,n)):lt(t,i,n)},rp=function(t,r){oa(t);var n=Sn(r),i=zf(n).concat(ga(n));return In(i,function(o){(!Xt||ha.call(n,o))&&Pn(t,o,n[o])}),t},$_=function(t,r){return r===void 0?Er(t):rp(Er(t),r)},ha=function(t){var r=aa(t,!0),n=N_.call(this,r);return this===Re&&K(Xe,r)&&!K(Dr,r)?!1:n||!K(this,r)||!K(Xe,r)||K(this,ve)&&this[ve][r]?n:!0},np=function(t,r){var n=Sn(t),i=aa(r,!0);if(!(n===Re&&K(Xe,i)&&!K(Dr,i))){var o=ep(n,i);return o&&K(Xe,i)&&!(K(n,ve)&&n[ve][i])&&(o.enumerable=!0),o}},ip=function(t){var r=tp(Sn(t)),n=[];return In(r,function(i){!K(Xe,i)&&!K(Wf,i)&&n.push(i)}),n},ga=function(t){var r=t===Re,n=tp(r?Dr:Sn(t)),i=[];return In(n,function(o){K(Xe,o)&&(!r||K(Re,o))&&i.push(Xe[o])}),i};Pt||(ye=function(){if(this instanceof ye)throw TypeError("Symbol is not a constructor");var t=!arguments.length||arguments[0]===void 0?void 0:String(arguments[0]),r=Yf(t),n=function(i){this===Re&&n.call(Dr,i),K(this,ve)&&K(this[ve],r)&&(this[ve][r]=!1),ma(this,r,ua(1,i))};return Xt&&da&&ma(Re,r,{configurable:!0,set:n}),va(r,t)},la(ye[Ye],"toString",function(){return Zf(this).tag}),la(ye,"withoutSetter",function(e){return va(Yf(e),e)}),Kf.f=ha,Gf.f=Pn,Hf.f=np,q_.f=Uf.f=ip,sa.f=ga,k_.f=function(e){return va(Xf(e),e)},Xt&&(lt(ye[Ye],"description",{configurable:!0,get:function(){return Zf(this).description}}),O_||la(Re,"propertyIsEnumerable",ha,{unsafe:!0})));Yt({global:!0,wrap:!0,forced:!Pt,sham:!Pt},{Symbol:ye});In(zf(A_),function(e){B_(e)});Yt({target:Rn,stat:!0,forced:!Pt},{for:function(e){var t=String(e);if(K(ca,t))return ca[t];var r=ye(t);return ca[t]=r,fa[r]=t,r},keyFor:function(t){if(!ya(t))throw TypeError(t+" is not a symbol");if(K(fa,t))return fa[t]},useSetter:function(){da=!0},useSimple:function(){da=!1}});Yt({target:"Object",stat:!0,forced:!Pt,sham:!Xt},{create:$_,defineProperty:Pn,defineProperties:rp,getOwnPropertyDescriptor:np});Yt({target:"Object",stat:!0,forced:!Pt},{getOwnPropertyNames:ip,getOwnPropertySymbols:ga});Yt({target:"Object",stat:!0,forced:ia(function(){sa.f(1)})},{getOwnPropertySymbols:function(t){return sa.f(P_(t))}});Br&&(op=!Pt||ia(function(){var e=ye();return Br([e])!="[null]"||Br({a:e})!="{}"||Br(Object(e))!="{}"}),Yt({target:"JSON",stat:!0,forced:op},{stringify:function(t,r,n){for(var i=[t],o=1,a;arguments.length>o;)i.push(arguments[o++]);if(a=r,!(!R_(r)&&t===void 0||ya(t)))return I_(r)||(r=function(u,l){if(typeof a=="function"&&(l=a.call(this,u,l)),!ya(l))return l}),i[1]=r,Br.apply(null,i)}}));var op;ye[Ye][Jf]||T_(ye[Ye],Jf,ye[Ye].valueOf);D_(ye,Rn);Wf[ve]=!0;"use strict";var M_=A(),V_=de(),F_=z(),L_=le(),z_=re(),U_=me().f,H_=ho(),Qe=F_.Symbol;V_&&typeof Qe=="function"&&(!("description"in Qe.prototype)||Qe().description!==void 0)&&(ba={},Qt=function(){var t=arguments.length<1||arguments[0]===void 0?void 0:String(arguments[0]),r=this instanceof Qt?new Qe(t):t===void 0?Qe():Qe(t);return t===""&&(ba[r]=!0),r},H_(Qt,Qe),qn=Qt.prototype=Qe.prototype,qn.constructor=Qt,ap=qn.toString,up=String(Qe("test"))=="Symbol(test)",sp=/^Symbol\((.*)\)[^)]+$/,U_(qn,"description",{configurable:!0,get:function(){var t=z_(this)?this.valueOf():this,r=ap.call(t);if(L_(ba,t))return"";var n=up?r.slice(7,-1):r.replace(sp,"$1");return n===""?void 0:n}}),M_({global:!0,forced:!0},{Symbol:Qt}));var ba,Qt,qn,ap,up,sp;var G_=na();G_("iterator");var tk=j($());"use strict";var mx=ko().charAt,qp=Mt(),vx=Ia(),Tp="String Iterator",yx=qp.set,hx=qp.getterFor(Tp);vx(String,"String",function(e){yx(this,{type:Tp,string:String(e),index:0})},function(){var t=hx(this),r=t.string,n=t.index,i;return n>=r.length?{value:void 0,done:!0}:(i=mx(r,n),t.index+=i.length,{value:i,done:!1})});var gx=z(),kp=Pa(),Nr=$(),qa=Se(),Bp=G(),Ta=Bp("iterator"),Dp=Bp("toStringTag"),Ea=Nr.values;for(var ka in kp)if(Ba=gx[ka],Le=Ba&&Ba.prototype,Le){if(Le[Ta]!==Ea)try{qa(Le,Ta,Ea)}catch(e){Le[Ta]=Ea}if(Le[Dp]||qa(Le,Dp,ka),kp[ka]){for(Tt in Nr)if(Le[Tt]!==Nr[Tt])try{qa(Le,Tt,Nr[Tt])}catch(e){Le[Tt]=Nr[Tt]}}}var Ba,Le,Tt;var Et=j(E());function kn(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?kn=function(r){return typeof r}:kn=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},kn(e)}function bx(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Cp(e,t){for(var r=0;r2){if(t=Yx(t),r=t.charCodeAt(0),r===43||r===45){if(n=t.charCodeAt(2),n===88||n===120)return NaN}else if(r===48){switch(t.charCodeAt(1)){case 66:case 98:i=2,o=49;break;case 79:case 111:i=8,o=55;break;default:return+t}for(a=t.slice(2),u=a.length,l=0;lo)return NaN;return parseInt(a,i)}}return+t};if(Vx(Ar,!ct(" 0o1")||!ct("0b1")||ct("+0x1"))){for(ft=function(t){var r=arguments.length<1?0:t,n=this;return n instanceof ft&&(Xx?Ux(function(){Nn.valueOf.call(n)}):Yp(n)!=Ar)?Lx(new ct(Xp(r)),n,ft):Xp(r)},Na=Mx?Gx(ct):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),An=0;Na.length>An;An++)Wp(ct,$r=Na[An])&&!Wp(ft,$r)&&Wx(ft,$r,Kx(ct,$r));ft.prototype=Nn,Nn.constructor=ft,Fx(Kp,Ar,ft)}var ft,Na,An,$r;var eB=j($());var Vr=j(E());var Qx=A(),Jx=re(),Zx=Y(),eO=le(),tO=xt(),rO=Wt();function Qp(e,t){var r=arguments.length<3?e:arguments[2],n,i;if(Zx(e)===r)return e[t];if(n=tO.f(e,t))return eO(n,"value")?n.value:n.get===void 0?void 0:n.get.call(r);if(Jx(i=rO(e)))return Qp(i,t,r)}Qx({target:"Reflect",stat:!0},{get:Qp});var nO=A(),iO=M(),oO=Te(),Jp=xt().f,Zp=de(),aO=iO(function(){Jp(1)}),uO=!Zp||aO;nO({target:"Object",stat:!0,forced:uO,sham:!Zp},{getOwnPropertyDescriptor:function(t,r){return Jp(oO(t),r)}});var Mk=j($());var kt=j(E());function $n(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$n=function(r){return typeof r}:$n=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},$n(e)}function ed(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function td(e,t){for(var r=0;ru.getTime()?(0,F.default)(i).bsDatepicker("clearDates"):(0,F.default)(i).bsDatepicker("setUTCDate",u)}}}},{key:"_setMax",value:function(i,o){if(o!==void 0){if(o===null){(0,F.default)(i).bsDatepicker("setEndDate",null);return}var a=this._newDate(o);if(a!==null&&(o=a,!isNaN(o.valueOf()))){var u=(0,F.default)(i).bsDatepicker("getUTCDate");(0,F.default)(i).bsDatepicker("setEndDate",this._utcDateAsLocal(o)),o&&u&&o.getTime()1&&arguments[1]!==void 0?arguments[1]:",",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".",n=e.toString().split(".");return n[0]=n[0].replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g,"$1"+t),n.length===1?n[0]:n.length===2?n[0]+r+n[1]:""}(0,X.default)(document).on("click",".slider-animate-button",function(e){e.preventDefault();var t=(0,X.default)(this),r=(0,X.default)("#"+q(t.attr("data-target-id"))),n="Play",i="Pause",o=t.attr("data-loop")!==void 0&&!/^\s*false\s*$/i.test(t.attr("data-loop")),a=t.attr("data-interval");if(isNaN(a)?a=1500:a=Number(a),r.data("animTimer"))clearTimeout(r.data("animTimer")),r.removeData("animTimer"),t.attr("title",n),t.removeClass("playing"),r.removeData("animating");else{var u;if(r.hasClass("jslider")){var l=r.slider();l.canStepNext()||l.resetToStart(),u=setInterval(function(){o&&!l.canStepNext()?l.resetToStart():(l.stepNext(),!o&&!l.canStepNext()&&t.click())},a)}else{var s=r.data("ionRangeSlider"),c=function(){return s.options.type==="double"?s.result.to0}var Bd=function(e){sS(r,e);var t=lS(r);function r(){return aS(this,r),t.apply(this,arguments)}return uS(r,[{key:"find",value:function(i){return(0,U.default)(i).find("select")}},{key:"getType",value:function(i){var o=(0,U.default)(i);return o.hasClass("symbol")?o.attr("multiple")==="multiple"?"shiny.symbolList":"shiny.symbol":null}},{key:"getId",value:function(i){return V.prototype.getId.call(this,i)||i.name}},{key:"getValue",value:function(i){return(0,U.default)(i).val()}},{key:"setValue",value:function(i,o){if(!kd(i))(0,U.default)(i).val(o);else{var a=this._selectize(i);a&&a.setValue(o)}}},{key:"getState",value:function(i){for(var o=new Array(i.length),a=0;a1&&arguments[1]!==void 0?arguments[1]:!1;if(!!U.default.fn.selectize){var a=(0,U.default)(i),u=a.parent().find('script[data-for="'+q(i.id)+'"]');if(u.length!==0){var l=U.default.extend({labelField:"label",valueField:"value",searchField:["label"]},JSON.parse(u.html()));typeof u.data("nonempty")!="undefined"?(i.nonempty=!0,l=U.default.extend(l,{onItemRemove:function(p){this.getValue()===""&&(0,U.default)("select#"+q(i.id)).empty().append((0,U.default)("