Jump to content

User:Eejit43/scripts/AFCRHS.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// <nowiki>
// Note: This script was compiled and minified from TypeScript. For a more readable version, see https://github.com/Eejit43/wikipedia-scripts/blob/main/scripts/AFCRHS.ts

"use strict";(function(){if(mw.config.get("wgPageName")!=="Wikipedia:Articles_for_creation/Redirects"&&mw.config.get("wgPageName")!=="Wikipedia:Articles_for_creation/Categories")return;const w=mw.config.get("wgPageName").replaceAll("_"," "),v=[];let k=[];const N=" ([[User:Eejit43/scripts/AFCRHS|AFCRHS 2]])";let x=0,I=0;const V=[],T=[],j={exists:"The title you suggested already exists on Wikipedia",blank:"We cannot accept empty submissions","no-target":" A redirect cannot be created unless the target is an existing article. Either you have not specified the target, or the target does not exist",unlikely:"The title you suggested seems unlikely. Could you provide a source showing that it is a commonly used alternate name?","not-redirect":"This request is not a redirect request",custom:""},M={exists:"The category you suggested already exists on Wikipedia",blank:"We cannot accept empty submissions",unlikely:"It seems unlikely that there are enough pages to support this category","not-category":"This request is not a category request",custom:""};async function D(){let e=await E(w);e=z(e);const l=/==.*?==/;e=e.slice(Math.max(0,e.search(l))),k=e.match(/^==.*?==$((\r?\n?)(?!==[^=]).*)*/gim);for(const[a,t]of k.entries())if(!/({{\s*afc(?!\s+comment)|this is an archived discussion)/i.test(t)){const s=t.match(l)[0];if(s.search(/redirect request/i)!==-1){const r=/\[\[(\s*[^=]*?)*?]]/g,n=s.match(r);if(!n)continue;for(let _=0;_<n.length;_++)n[_]=n[_].replaceAll(/[[\]]/g,""),n[_].charAt(0)===":"&&(n[_]=n[_].slice(1));/target of redirect:\s*\[\[([^[\]]*)]]/i.test(t);const d=$.trim(RegExp.$1),A=/reason:[\t ]*?(.+)/i.exec(t),H=A&&A[1].trim()?A[1]:null,g=/source.*?:[\t ]*?(.+)/i.exec(t),f=g&&g[1].trim()?g[1]:null,h={type:"redirect",from:[],section:a,to:d,title:d,reason:H,source:f};for(const _ of n){const P={type:"redirect",to:d,id:x,title:_,action:""};h.from.push(P),V.push(P),x++}v.push(h)}else if(s.search(/category request/i)!==-1){let r=/\[\[[^[\]]+]]/.exec(s);if(!r)continue;r=r[0],r=r.replaceAll(/[[\]]/g,""),r=r.replaceAll(/category\s*:\s*/gi,"Category:"),r.charAt(0)===":"&&(r=r.slice(1));let n=t.slice(s.length);const p=n.indexOf("Parent category/categories");p>=0&&(n=n.slice(Math.max(0,p)));const d=[];let u=null;const A=/\[\[\s*:\s*(category:[^[\]]*)]]/gi;do u=A.exec(n),u&&d.push(u[1]);while(u);const H={type:"category",title:r,section:a,id:x,action:"",parents:d.join(",")};x++,v.push(H),V.push(H)}}const i=$("<h3>Reviewing AfC redirect requests</h3>");W(i);const m=i.parent();let c=1;const o=[{label:"Accept",value:"accept"},{label:"Decline",value:"decline"},{label:"Comment",value:"comment"},{label:"None",selected:!0,value:"none"}];for(const a of v){let t;t=a.to===void 0?"":a.to.replaceAll(/\s/g,"");const b=$("<ul>"),s=$("<li>");if(a.type==="redirect"){if(s.append("Redirect(s) to "),t){if(!a.to)for(let n=a.from.length-1;n>=0;n--)T.push({id:a.from[n].id,reason:"not-redirect"})}else for(let n=a.from.length-1;n>=0;n--)T.push({id:a.from[n].id,reason:"no-target"});a===""||a===" "?(s.append("Empty submission #"+c),c++):t.length>0?s.append($("<a>").attr("href",mw.config.get("wgArticlePath").replace("$1",encodeURIComponent(a.to))).attr("target","_blank").text(a.to)):s.append("<b>no target given</b>: ");const r=$("<ul>").appendTo(s);for(let n=0;n<a.from.length;n++){const p=a.from[n];let d=p.title;d.replaceAll(/\s*/gi,"").length===0&&(d="<b>no title specified</b>, check the request details");const u=$("<ul>");a.reason&&u.append("<li>Reason: "+a.reason+"</li>"),a.source&&u.append("<li>Source: "+a.source+"</li>");const A='http://www.google.com/search?q="'+encodeURIComponent(d)+'"+-wikipedia.org';r.append($("<li>").append("From: "+d+" (<small><a href='"+A+`'" target="_blank">Google</a> <b>&middot;</b> <a href="https://en.wikipedia.org/wiki/Special:WhatLinksHere/`+encodeURIComponent(d)+'" target="_blank">what links here</a>)</small><br/>').append(u).append($("<label>").attr("for","afcHelper_redirect_action_"+p.id).text("Action: ")).append(U("afcHelper_redirect_action_"+p.id,o,S(p.id))).append($("<div>").attr("id","afcHelper_redirect_extra_"+p.id)))}}else{const r=a.id;s.append("Category submission: ").append($("<a>").attr("href","/wiki/"+a.title).attr("title",a.title).text(a.title)).append("<br />").append($("<label>").attr("for","afcHelper_redirect_action_"+r).text("Action: ")).append(U("afcHelper_redirect_action_"+r,o,S(r))).append($("<div>").attr("id","afcHelper_redirect_extra_"+r))}b.append(s),m.append(b)}m.append($("<button>").attr("id","afcHelper_redirect_done_button").attr("name","afcHelper_redirect_done_button").text("Done").click(L));for(const a of T)$("#afcHelper_redirect_action_"+a.id).attr("value","decline"),q(a.id),$("#afcHelper_redirect_decline_"+a.id).attr("value",a.reason)}function S(e){return function(){q(e)}}function q(e){const l=$("#afcHelper_redirect_extra_"+e),i=$("#afcHelper_redirect_action_"+e).val();switch(l.html(""),i){case"accept":{V[e].type==="redirect"?(l.append('<label for="afcHelper_redirect_from_'+e+'">From: </label>'),l.append($("<input>").attr("type","text").attr("name","afcHelper_redirect_from_"+e).attr("id","afcHelper_redirect_from_"+e).attr("value",V[e].title)),l.html(l.html()+'&nbsp;<br /><label for="afcHelper_redirect_to_'+e+'">To: </label><input type="text" name="afcHelper_redirect_to_'+e+'" id="afcHelper_redirect_to_'+e+'" value="'+V[e].to+'" />'),l.html(l.html()+'<br /><label for="afcHelper_redirect_append_'+e+'">Template to append: (<a href="https://en.wikipedia.org/wiki/Wikipedia:TMR" target="_blank">Help</a>)</label>'),l.html(l.html()+F("afcHelper_redirect_append_"+e,[{label:"None",selected:!0,value:"none"},{labelAndValue:"Frequently used",disabled:!0},{labelAndValue:"R from alternative language"},{labelAndValue:"R from alternative name"},{labelAndValue:"R from modification"},{labelAndValue:"R to section"},{labelAndValue:"R from diacritic"},{labelAndValue:"R to diacritic"},{labelAndValue:"From \u2013 abbreviation, capitalisation, and grammar",disabled:!0},{labelAndValue:"R from acronym"},{labelAndValue:"R from initialism"},{labelAndValue:"R from CamelCase"},{labelAndValue:"R from miscapitalisation"},{labelAndValue:"R from other capitalisation"},{labelAndValue:"R from modification"},{labelAndValue:"R from plural"},{label:"From parts of speach",value:"From parts of speach",disabled:!0},{labelAndValue:"R from adjective"},{labelAndValue:"R from adverb"},{labelAndValue:"R from common noun"},{labelAndValue:"R from gerund"},{labelAndValue:"R from proper noun"},{labelAndValue:"R from verb"},{labelAndValue:"From \u2013 spelling",disabled:!0},{labelAndValue:"R from alternative spelling"},{labelAndValue:"R from misspelling"},{labelAndValue:"R from American English"},{labelAndValue:"R from British English"},{labelAndValue:"R from ASCII-only"},{labelAndValue:"R from diacritic"},{labelAndValue:"R from ligature"},{labelAndValue:"R from stylization"},{labelAndValue:"R from alternative transliteration"},{labelAndValue:"R from Wade\u2013Giles romanization"},{labelAndValue:"From alternative names, general",disabled:!0},{labelAndValue:"R from alternative language"},{labelAndValue:"R from alternative name"},{labelAndValue:"R from former name"},{labelAndValue:"R from historic name"},{labelAndValue:"R from incomplete name"},{labelAndValue:"R from incorrect name"},{labelAndValue:"R from letter\u2013word combination"},{labelAndValue:"R from long name"},{labelAndValue:"R from portmanteau"},{labelAndValue:"R from predecessor company name"},{labelAndValue:"R from short name"},{labelAndValue:"R from sort name"},{labelAndValue:"R from less specific name"},{labelAndValue:"R from more specific name"},{labelAndValue:"R from antonym"},{labelAndValue:"R from eponym"},{labelAndValue:"R from synonym"},{labelAndValue:"R from Roman numerals"},{labelAndValue:"From alternative names, geography",disabled:!0},{labelAndValue:"R from Canadian settlement name"},{labelAndValue:"R from name and country"},{labelAndValue:"R from city and state"},{labelAndValue:"R from city and province"},{labelAndValue:"R from more specific geographic name"},{labelAndValue:"R from postal abbreviation"},{labelAndValue:"R from postal code"},{labelAndValue:"R from US postal abbreviation"},{labelAndValue:"From alternative names, organisms",disabled:!0},{labelAndValue:"R from scientific abbreviation"},{labelAndValue:"R from scientific name"},{labelAndValue:"R from alternative scientific name"},{labelAndValue:"R from monotypic taxon"},{labelAndValue:"From alternative names, people",disabled:!0},{labelAndValue:"R from birth name"},{labelAndValue:"R from given name"},{labelAndValue:"R from married name"},{labelAndValue:"R from name with title"},{labelAndValue:"R from non-neutral name"},{labelAndValue:"R from personal name"},{labelAndValue:"R from pseudonym"},{labelAndValue:"R from relative"},{labelAndValue:"R from spouse"},{labelAndValue:"R from surname"},{labelAndValue:"From alternative names, technical",disabled:!0},{labelAndValue:"R from Bluebook abbreviation"},{labelAndValue:"R from brand name"},{labelAndValue:"R from drug trade name"},{labelAndValue:"R from file name"},{labelAndValue:"R from Java package name"},{labelAndValue:"R from MathSciNet abbreviation"},{labelAndValue:"R from molecular formula"},{labelAndValue:"R from NLM abbreviation"},{labelAndValue:"R from product name"},{labelAndValue:"R from slogan"},{labelAndValue:"R from symbol"},{labelAndValue:"R from systematic abbreviations"},{labelAndValue:"R from technical name"},{labelAndValue:"R from trademark"},{labelAndValue:"From \u2013 navigation",disabled:!0},{labelAndValue:"R from file metadata link"},{labelAndValue:"R mentioned in hatnote"},{labelAndValue:"R from shortcut"},{labelAndValue:"R from template shortcut"},{labelAndValue:"From disambiguations",disabled:!0},{labelAndValue:"R from ambiguous term"},{labelAndValue:"R from incomplete disambiguation"},{labelAndValue:"R from incorrect disambiguation"},{labelAndValue:"R from other disambiguation"},{labelAndValue:"R from predictable disambiguation"},{labelAndValue:"R from unnecessary disambiguation"},{labelAndValue:"From mergers, duplicates, and moves",disabled:!0},{labelAndValue:"R from duplicated article"},{labelAndValue:"R with history"},{labelAndValue:"R from merge"},{labelAndValue:"R from move"},{labelAndValue:"R with old history"},{labelAndValue:"From fiction",disabled:!0},{labelAndValue:"R from fictional character"},{labelAndValue:"R from fictional element"},{labelAndValue:"R from fictional location"},{labelAndValue:"From related info",disabled:!0},{labelAndValue:"R from album"},{labelAndValue:"R from animal"},{labelAndValue:"R from book"},{labelAndValue:"R from catchphrase"},{labelAndValue:"R from domain name"},{labelAndValue:"R from top-level domain"},{labelAndValue:"R from film"},{labelAndValue:"R from gender"},{labelAndValue:"R from legislation"},{labelAndValue:"R from list topic"},{labelAndValue:"R from member"},{labelAndValue:"R from person"},{labelAndValue:"R from phrase"},{labelAndValue:"R from quotation"},{labelAndValue:"R from related word"},{labelAndValue:"R from school"},{labelAndValue:"R from song"},{labelAndValue:"R from subtopic"},{labelAndValue:"R from team"},{labelAndValue:"R from work"},{labelAndValue:"R from writer"},{labelAndValue:"R from Unicode"},{labelAndValue:"To \u2013 grammar, punctuation, and spelling",disabled:!0},{labelAndValue:"R to acronym"},{labelAndValue:"R to initialism"},{labelAndValue:"R to ASCII-only title"},{labelAndValue:"R to diacritic"},{labelAndValue:"R to ligature"},{labelAndValue:"R to plural"},{labelAndValue:"To alternative names",disabled:!0},{labelAndValue:"R to former name"},{labelAndValue:"R to historic name"},{labelAndValue:"R to joint biography"},{labelAndValue:"R to name with title"},{labelAndValue:"R to monotypic taxon"},{labelAndValue:"R to scientific name"},{labelAndValue:"R to systematic name"},{labelAndValue:"R to technical name"},{labelAndValue:"To \u2013 navigation and disambiguation",disabled:!0},{labelAndValue:"R to anchor"},{labelAndValue:"R to anthroponymy page"},{labelAndValue:"R to disambiguation page"},{labelAndValue:"R to list entry"},{labelAndValue:"R to section"},{labelAndValue:"To miscellaneous",disabled:!0},{labelAndValue:"R to decade"},{labelAndValue:"R to related topic"},{labelAndValue:"R to subpage"},{labelAndValue:"R to subtopic"},{labelAndValue:"R to TV episode list entry"},{label:"Custom - prompt me",value:"custom"}]))):(l.html('<label for="afcHelper_redirect_name_'+e+'">Category name: </label><input type="text" size="100" name="afcHelper_redirect_name_'+e+'" id="afcHelper_redirect_name_'+e+'" value="'+V[e].title+'" />'),l.html(l.html()+'<br /><label for="afcHelper_redirect_parents_'+e+'">Parent categories (comma-separated):</label><input type="text" size="100" id="afcHelper_redirect_parents_'+e+'" name="afcHelper_redirect_parents_'+e+'" value="'+V[e].parents+'" />'),l.append("<br />"),l.append($("<input>",{type:"checkbox",name:"afcHelper_redirect_container_"+e,id:"afcHelper_redirect_container_"+e})),l.append('<label for="afcHelper_redirect_container_'+e+'">This is a <a href="/wiki/Wikipedia:Container_category" title="Wikipedia:Container category">container category</a></label>'),l.html(l.html()+'<br /><input type="checkbox" name="afcHelper_redirect_container_'+e+'"')),l.html(l.html()+'<br /><label for="afcHelper_redirect_comment_'+e+'">Comment:</label><input type="text" size="100" id="afcHelper_redirect_comment_'+e+'" name="afcHelper_redirect_comment_'+e+'"/>');break}case"decline":{V[e].type==="redirect"?l.html('<label for="afcHelper_redirect_decline_'+e+'">Reason for decline: </label>'+F("afcHelper_redirect_decline_"+e,[{label:"Already exists",value:"exists"},{label:"Blank request",value:"blank"},{label:"No valid target specified",value:"no-target"},{label:"Unlikely search term",value:"unlikely"},{label:"Not a redirect request",value:"not-redirect"},{label:"Custom - reason below",selected:!0,value:"custom"}])):l.html('<label for="afcHelper_redirect_decline_'+e+'">Reason for decline: </label>'+F("afcHelper_redirect_decline_"+e,[{label:"Already exists",value:"exists"},{label:"Blank request",value:"blank"},{label:"Unlikely category",value:"unlikely"},{label:"Not a category request",value:"not-category"},{label:"Custom - reason below",selected:!0,value:"custom"}])),l.html(l.html()+'<br/><label for="afcHelper_redirect_comment_'+e+'">Comment: </label><input type="text" size="100" id="afcHelper_redirect_comment_'+e+'" name="afcHelper_redirect_comment_'+e+'"/>');break}case"none":{l.html("");break}default:l.html(l.html()+'<label for="afcHelper_redirect_comment_'+e+'">Comment: </label><input type="text" size="100" id="afcHelper_redirect_comment_'+e+'" name="afcHelper_redirect_comment_'+e+'"/>')}}async function L(){for(const[a,t]of V.entries()){const b=$("#afcHelper_redirect_action_"+a).val();t.action=b,b!=="none"&&(b==="accept"?t.type==="redirect"?(t.title=$("#afcHelper_redirect_from_"+a).val(),t.to=$("#afcHelper_redirect_to_"+a).val(),t.append=$("#afcHelper_redirect_append_"+a).val(),t.append==="custom"&&(t.append=prompt("Please enter the template to append to "+t.title+". Do not include the curly brackets.")),t.append=t.append==="none"||t.append===null?"":"{{"+t.append+"}}"):(t.title=$("#afcHelper_redirect_name_"+a).val(),t.parents=$("#afcHelper_redirect_parents_"+a).val(),t.container=$("#afcHelper_redirect_container_"+a).is(":checked")):b==="decline"&&(t.reason=$("#afcHelper_redirect_decline_"+a).val()),t.comment=$("#afcHelper_redirect_comment_"+a).val())}W('<ul id="afcHelper_status"></ul><ul id="afcHelper_finish"></ul>');const e=function(a){$("#afcHelper_status").append(a)};$("#afcHelper_finish").html($("#afcHelper_finish").html()+'<span id="afcHelper_finished_wrapper"><span id="afcHelper_finished_main" style="display:none"><li id="afcHelper_done"><b>Done (<a href="'+mw.config.get("wgArticlePath").replace("$1",encodeURI(w))+'?action=purge" title="'+w+'">Reload page</a>)</b></li></span></span>');let l=await E(w,e),i=0,m=0,c=0;e("<li>Processing "+v.length+" submission"+(v.length===1?"":"s")+"...</li>");for(const a of v){if(!l.includes(k[a.section])){e("<li>Skipping "+a.title+": Cannot find section. Perhaps it was modified in the mean time?</li>");continue}let t=k[a.section];const b=l.indexOf(k[a.section]),s=b+t.length;if(a.type==="category")switch(a.action){case"accept":{let r="<!--Created by WP:AFC -->";a.container&&(r+=`
{{Container category}}`),a.parents!==""&&(r=a.parents.split(",").map(u=>"[["+u+"]]").join(`
`)),C(a.title,r,"Created via [[WP:AFC|Articles for Creation]]",!0);const n="{{subst:WPAFC/article|class=Cat}}",p=new mw.Title(a.title).getTalkPage().toText();C(p,n,"Placing WPAFC project banner",!0);const d=t.match(/==[^=]*==/)[0];t=d+`
{{AfC-c|a}}
`+t.slice(d.length),t+=a.comment===""?`
*{{subst:afc category}} ~~~~
`:`
*{{subst:afc category|accept|2=`+a.comment+`}} ~~~~
`,t+=`{{AfC-c|b}}
`,i++;break}case"decline":{const r=t.match(/==[^=]*==/)[0];let n=M[a.reason];if(n===""?n=a.comment:a.comment!==""&&(n=n+": "+a.comment),n===""){$("afcHelper_status").html($("#afcHelper_status").html()+"<li>Skipping "+a.title+": No decline reason specified.</li>");continue}t=r+`
{{AfC-c|d}}
`+t.slice(r.length),t+=a.comment===""?`
*{{subst:afc category|`+a.reason+`}} ~~~~
`:`
*{{subst:afc category|decline|2=`+n+`}} ~~~~
`,t+=`{{AfC-c|b}}
`,m++;break}case"comment":{a.comment!==""&&(t+=`

{{afc comment|1=`+a.comment+` ~~~~}}
`),c++;break}}else{let r="",n="",p="",d=0,u=0,A=0,H=!1;for(let g=0;g<a.from.length;g++){const f=a.from[g];switch(f.action){case"accept":{const h=`#REDIRECT [[${f.to}]]${f.append?`

{{Redirect category shell|
${f.append}
}}`:""}`;C(f.title,h,"Redirected page to [["+f.to+"]] via [[WP:AFC|Articles for Creation]]",!0);const _=new mw.Title(f.title);if(!_.isTalkPage()){const P=_.getTalkPage().toText();C(P,"{{subst:WPAFC/redirect}}","Placing WPAFC project banner",!0)}r+=f.title+" &rarr; "+f.to,f.comment===""?r+=". ":(r+=": "+f.comment,H=!0),d++;break}case"decline":{let h=j[f.reason];if(h===""?h=f.comment:f.comment!==""&&(h=h+": "+f.comment),h===""){$("#afcHelper_status").html($("#afcHelper_status").html()+"<li>Skipping "+f.title+": No decline reason specified.</li>");continue}n+=f.reason==="blank"||f.reason==="not-redirect"?h+". ":f.title+" &rarr; "+f.to+": "+h+". ",u++;break}case"comment":{p+=f.title+": "+f.comment+". ",A++;break}}}let y="";if(d>0&&(y+=`
*{{subst:afc redirect|accept|2=`+r+" Thank you for your contributions to Wikipedia!}} ~~~~"),u>0&&(y+=`
*{{subst:afc redirect|decline|2=`+n+"}} ~~~~"),A>0&&(y+=`
*{{afc comment|1=`+p+"~~~~}}"),y+=`
`,!H&&d===a.from.length&&(y=d>1?`
*{{subst:afc redirect|all}} ~~~~
`:`
*{{subst:afc redirect}} ~~~~
`),d+u+A>0)if(d+u===a.from.length){const g=t.match(/==[^=]*==/)[0];d>0&&u>0?t=g+`
{{AfC-c|p}}`+t.slice(g.length):d>0?t=g+`
{{AfC-c|a}}`+t.slice(g.length):t=g+`
{{AfC-c|d}}`+t.slice(g.length),t+=y,t+=`{{AfC-c|b}}
`}else t+=y+`
`;i+=d,m+=u,c+=A}l=l.slice(0,Math.max(0,b))+t+l.slice(Math.max(0,s))}let o="Updating submission status:";i>0&&(o+=" accepting "+i+" request"+(i>1?"s":"")),m>0&&(i>0&&(o+=","),o+=" declining "+m+" request"+(m>1?"s":"")),c>0&&((i>0||m>0)&&(o+=","),o+=" commenting on "+c+" request"+(c>1?"s":"")),C(w,l,o,!1),$(document).ajaxStop(()=>{$("#afcHelper_finished_main").css("display","")})}async function E(e,l){l=l??function(){},l('<li id="afcHelper_get'+R(e)+'">Getting <a href="'+mw.config.get("wgArticlePath").replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></li>");const i=await new mw.Api().get({action:"query",prop:"revisions",rvprop:"content",format:"json",indexpageids:!0,titles:e}),m=i.query.pageids[0];if(m==="-1")return l('The page <a class="new" href="'+mw.config.get("wgArticlePath").replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a> does not exist"),"";const c=i.query.pages[m].revisions[0]["*"];return l('<li id="afcHelper_get'+R(e)+'">Got <a href="'+mw.config.get("wgArticlePath").replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></li>"),c}function z(e){const l=/(\[){1,2}(?:https?:)?\/\/(en.wikipedia.org\/wiki|enwp.org)\/([^\s[\]|]+)([\s|])?((?:\[\[[^[\]]*]]|[^[\]])*)(]){1,2}/gi,i=e;let m;for(;m=l.exec(i);){const c=decodeURI(m[3].replaceAll("_"," "));let o=decodeURI(m[5].replaceAll("_"," "));c===o&&(o="");const a="[["+c+(o?"|"+o:"")+"]]";e=e.replace(m[0],a)}return e}function F(e,l){return U(e,l).prop("outerHTML")}function U(e,l,i){const m=$("<select>").attr("name",e).attr("id",e);i!==null&&m.change(i);for(const c of l){c.labelAndValue&&(c.value=c.labelAndValue,c.label=c.labelAndValue);const o=$("<option>").appendTo(m).val(c.value).text(c.label);c.selected&&o.attr("selected","selected"),c.disabled&&o.attr("disabled","disabled")}return m}function W(e,l){if(arguments.length===0||e===""||e===null)return $("#display-message").empty().hide(),!0;{let i=$("#display-message");if(i.length===0)if(i=$('<div id="display-message" style="margin:1em;padding:0.5em 2.5%;border:solid 1px #ddd;background-color:#fcfcfc;font-size: 0.8em"></div>'),mw.util.$content.length>0)mw.util.$content.prepend(i);else return!1;return l&&i.prop("class","display-message-"+l),typeof e=="object"?(i.empty(),i.append(e)):i.html(e),i[0].scrollIntoView(),!0}}function R(e){return e.replaceAll(/[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g,"")}function C(e,l,i,m,c){const o=mw.config.get("wgArticlePath");i+=N,$("#afcHelper_finished_wrapper").html('<span id="afcHelper_AJAX_finished_'+I+'" style="display:none">'+$("#afcHelper_finished_wrapper").html()+"</span>");const a=I;I++,$("#afcHelper_status").html($("#afcHelper_status").html()+'<li id="afcHelper_edit'+R(e)+'">Editing <a href="'+o.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></li>");const t={action:"edit",title:e,text:l,summary:i};m&&(t.createonly=!0);const b=new mw.Api;if(b.postWithEditToken(t).done(s=>{s?.edit?.result&&s.edit.result==="Success"?$("#afcHelper_edit"+R(e)).html('Saved <a href="'+o.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a>"):($("#afcHelper_edit"+R(e)).html('<span class="afcHelper_notice"><b>Edit failed on <a href="'+o.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></b></span>. Error info: "+JSON.stringify(s)),console.error("Edit failed on %s (%s). Error info: %s",o.replace("$1",encodeURI(e)),e,JSON.stringify(s)))}).fail(s=>{m&&s==="articleexists"?$("#afcHelper_edit"+R(e)).html('<span class="afcHelper_notice"><b>Edit failed on <a href="'+o.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></b></span>. Error info: The article already exists!"):$("#afcHelper_edit"+R(e)).html('<span class="afcHelper_notice"><b>Edit failed on <a href="'+o.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></b></span>. Error info: "+s)}).always(()=>{$("#afcHelper_AJAX_finished_"+a).css("display","")}),!c&&$(".patrollink").length>0){const s=$(".patrollink a").attr("href"),r=mw.util.getParamValue("rcid",s);if(r){$("#afcHelper_status").html($("#afcHelper_status").html()+'<li id="afcHelper_patrol'+R(e)+'">Marking <a href="'+o.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+" as patrolled</a></li>");const n={action:"patrol",format:"json",rcid:r};b.postWithToken("patrol",n).done(p=>{p?$("#afcHelper_patrol"+R(e)).html('Marked <a href="'+o.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a> as patrolled"):($("#afcHelper_patrol"+R(e)).html('<span class="afcHelper_notice"><b>Patrolling failed on <a href="'+o.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></b></span> with an unknown error"),console.error("Patrolling failed on %s (%s) with an unknown error.",o.replace("$1",encodeURI(e)),e))}).fail(p=>{$("#afcHelper_patrol"+R(e)).html('<span class="afcHelper_notice"><b>Patrolling failed on <a href="'+o.replace("$1",encodeURI(e))+'" title="'+e+'">'+e+"</a></b></span>. Error info: "+p)})}}}mw.loader.using(["mediawiki.api","mediawiki.util"],()=>{mw.util.addCSS(`
#display-message * {
    margin: revert;
    border: revert;
    background: revert;
    padding: revert;
}`);const e=mw.util.addPortletLink(mw.config.get("skin")==="minerva"?"p-tb":"p-cactions","#","Review AFC/RC","ca-afcrhs","Review","a");$(e).click(l=>{l.preventDefault(),v.length=0,k.length=0,x=0,V.length=0,T.length=0,D()})})})();

// </nowiki>
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc2NyaXB0cy9BRkNSSFMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIihmdW5jdGlvbiAoKSB7XG4gICAgaWYgKG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSAhPT0gJ1dpa2lwZWRpYTpBcnRpY2xlc19mb3JfY3JlYXRpb24vUmVkaXJlY3RzJyAmJiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykgIT09ICdXaWtpcGVkaWE6QXJ0aWNsZXNfZm9yX2NyZWF0aW9uL0NhdGVnb3JpZXMnKSByZXR1cm47XG5cbiAgICBjb25zdCByZWRpcmVjdFBhZ2VOYW1lID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLnJlcGxhY2VBbGwoJ18nLCAnICcpO1xuICAgIGNvbnN0IHJlZGlyZWN0U3VibWlzc2lvbnMgPSBbXTtcbiAgICBsZXQgcmVkaXJlY3RTZWN0aW9ucyA9IFtdO1xuICAgIGNvbnN0IHN1bW1hcnlBZHZlcnQgPSAnIChbW1VzZXI6RWVqaXQ0My9zY3JpcHRzL0FGQ1JIU3xBRkNSSFMgMl1dKSc7XG4gICAgbGV0IG51bWJlclRvdGFsID0gMDtcbiAgICBsZXQgYWpheE51bWJlciA9IDA7XG4gICAgY29uc3Qgc3VibWlzc2lvbnMgPSBbXTtcbiAgICBjb25zdCBuZWVkc1VwZGF0ZSA9IFtdO1xuICAgIGNvbnN0IHJlZGlyZWN0RGVjbGluZVJlYXNvbnMgPSB7XG4gICAgICAgIGV4aXN0czogJ1RoZSB0aXRsZSB5b3Ugc3VnZ2VzdGVkIGFscmVhZHkgZXhpc3RzIG9uIFdpa2lwZWRpYScsXG4gICAgICAgIGJsYW5rOiAnV2UgY2Fubm90IGFjY2VwdCBlbXB0eSBzdWJtaXNzaW9ucycsXG4gICAgICAgICduby10YXJnZXQnOiAnIEEgcmVkaXJlY3QgY2Fubm90IGJlIGNyZWF0ZWQgdW5sZXNzIHRoZSB0YXJnZXQgaXMgYW4gZXhpc3RpbmcgYXJ0aWNsZS4gRWl0aGVyIHlvdSBoYXZlIG5vdCBzcGVjaWZpZWQgdGhlIHRhcmdldCwgb3IgdGhlIHRhcmdldCBkb2VzIG5vdCBleGlzdCcsXG4gICAgICAgIHVubGlrZWx5OiAnVGhlIHRpdGxlIHlvdSBzdWdnZXN0ZWQgc2VlbXMgdW5saWtlbHkuIENvdWxkIHlvdSBwcm92aWRlIGEgc291cmNlIHNob3dpbmcgdGhhdCBpdCBpcyBhIGNvbW1vbmx5IHVzZWQgYWx0ZXJuYXRlIG5hbWU/JyxcbiAgICAgICAgJ25vdC1yZWRpcmVjdCc6ICdUaGlzIHJlcXVlc3QgaXMgbm90IGEgcmVkaXJlY3QgcmVxdWVzdCcsXG4gICAgICAgIGN1c3RvbTogJycsXG4gICAgfTtcbiAgICBjb25zdCBjYXRlZ29yeURlY2xpbmVSZWFzb25zID0ge1xuICAgICAgICBleGlzdHM6ICdUaGUgY2F0ZWdvcnkgeW91IHN1Z2dlc3RlZCBhbHJlYWR5IGV4aXN0cyBvbiBXaWtpcGVkaWEnLFxuICAgICAgICBibGFuazogJ1dlIGNhbm5vdCBhY2NlcHQgZW1wdHkgc3VibWlzc2lvbnMnLFxuICAgICAgICB1bmxpa2VseTogJ0l0IHNlZW1zIHVubGlrZWx5IHRoYXQgdGhlcmUgYXJlIGVub3VnaCBwYWdlcyB0byBzdXBwb3J0IHRoaXMgY2F0ZWdvcnknLFxuICAgICAgICAnbm90LWNhdGVnb3J5JzogJ1RoaXMgcmVxdWVzdCBpcyBub3QgYSBjYXRlZ29yeSByZXF1ZXN0JyxcbiAgICAgICAgY3VzdG9tOiAnJyxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgdGhlIHJlZGlyZWN0IGhhbmRsZXIuXG4gICAgICovXG4gICAgYXN5bmMgZnVuY3Rpb24gcmVkaXJlY3RJbml0KCkge1xuICAgICAgICBsZXQgcGFnZVRleHQgPSBhd2FpdCBnZXRQYWdlVGV4dChyZWRpcmVjdFBhZ2VOYW1lKTtcbiAgICAgICAgLy8gQ2xlYW51cCB0aGUgd2lraXBlZGlhIGxpbmtzIGZvciBwcmV2ZW50aW5nIHN0dWZmIGxpa2UgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP2RpZmY9NTc2MjQ0MDY3Jm9sZGlkPTU3NjIyMTQzN1xuICAgICAgICBwYWdlVGV4dCA9IGNsZWFudXBMaW5rcyhwYWdlVGV4dCk7XG5cbiAgICAgICAgLy8gRmlyc3QsIHN0cmlwIG91dCB0aGUgcGFydHMgYmVmb3JlIHRoZSBmaXJzdCBzZWN0aW9uXG4gICAgICAgIGNvbnN0IHNlY3Rpb25SZWdleCA9IC89PS4qPz09LztcbiAgICAgICAgcGFnZVRleHQgPSBwYWdlVGV4dC5zbGljZShNYXRoLm1heCgwLCBwYWdlVGV4dC5zZWFyY2goc2VjdGlvblJlZ2V4KSkpO1xuICAgICAgICAvLyBUaGVuIHNwbGl0IGl0IGludG8gdGhlIHJlc3Qgb2YgdGhlIHNlY3Rpb25zXG4gICAgICAgIHJlZGlyZWN0U2VjdGlvbnMgPSBwYWdlVGV4dC5tYXRjaCgvXj09Lio/PT0kKChcXHI/XFxuPykoPyE9PVtePV0pLiopKi9naW0pO1xuXG4gICAgICAgIC8vIFBhcnNlIHRoZSBzZWN0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IFtpbmRleCwgcmVkaXJlY3RTZWN0aW9uXSBvZiByZWRpcmVjdFNlY3Rpb25zLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgY2xvc2VkID0gLyh7e1xccyphZmMoPyFcXHMrY29tbWVudCl8dGhpcyBpcyBhbiBhcmNoaXZlZCBkaXNjdXNzaW9uKS9pLnRlc3QocmVkaXJlY3RTZWN0aW9uKTtcbiAgICAgICAgICAgIGlmICghY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyID0gcmVkaXJlY3RTZWN0aW9uLm1hdGNoKHNlY3Rpb25SZWdleClbMF07XG4gICAgICAgICAgICAgICAgaWYgKGhlYWRlci5zZWFyY2goL3JlZGlyZWN0IHJlcXVlc3QvaSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpa2lsaW5rUmVnZXggPSAvXFxbXFxbKFxccypbXj1dKj8pKj9dXS9nO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5rcyA9IGhlYWRlci5tYXRjaCh3aWtpbGlua1JlZ2V4KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rcykgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGwgPSAwOyBsIDwgbGlua3MubGVuZ3RoOyBsKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzW2xdID0gbGlua3NbbF0ucmVwbGFjZUFsbCgvW1tcXF1dL2csICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5rc1tsXS5jaGFyQXQoMCkgPT09ICc6JykgbGlua3NbbF0gPSBsaW5rc1tsXS5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCA9IC90YXJnZXQgb2YgcmVkaXJlY3Q6XFxzKlxcW1xcWyhbXltcXF1dKildXS9pO1xuICAgICAgICAgICAgICAgICAgICByZWdleC50ZXN0KHJlZGlyZWN0U2VjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvID0gJC50cmltKFJlZ0V4cC4kMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVhc29uUmUgPSAvcmVhc29uOltcXHQgXSo/KC4rKS9pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFzb25NYXRjaCA9IHJlYXNvblJlLmV4ZWMocmVkaXJlY3RTZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVhc29uID0gcmVhc29uTWF0Y2ggJiYgcmVhc29uTWF0Y2hbMV0udHJpbSgpID8gcmVhc29uTWF0Y2hbMV0gOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZVJlID0gL3NvdXJjZS4qPzpbXFx0IF0qPyguKykvaTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlTWF0Y2ggPSBzb3VyY2VSZS5leGVjKHJlZGlyZWN0U2VjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHNvdXJjZU1hdGNoICYmIHNvdXJjZU1hdGNoWzFdLnRyaW0oKSA/IHNvdXJjZU1hdGNoWzFdIDogbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJtaXNzaW9uID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3JlZGlyZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB0byxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0byxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaW5rIG9mIGxpbmtzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWIgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3JlZGlyZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbnVtYmVyVG90YWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXNzaW9uLmZyb20ucHVzaChzdWIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbnMucHVzaChzdWIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyVG90YWwrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFN1Ym1pc3Npb25zLnB1c2goc3VibWlzc2lvbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoZWFkZXIuc2VhcmNoKC9jYXRlZ29yeSByZXF1ZXN0L2kpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBGaW5kIGEgd2lraWxpbmsgaW4gdGhlIGhlYWRlciwgYW5kIGFzc3VtZSBpdCdzIHRoZSBjYXRlZ29yeSB0byBjcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNhdGVnb3J5TmFtZSA9IC9cXFtcXFtbXltcXF1dK11dLy5leGVjKGhlYWRlcik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2F0ZWdvcnlOYW1lKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlOYW1lID0gY2F0ZWdvcnlOYW1lWzBdO1xuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSBjYXRlZ29yeU5hbWUucmVwbGFjZUFsbCgvW1tcXF1dL2csICcnKTtcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlOYW1lID0gY2F0ZWdvcnlOYW1lLnJlcGxhY2VBbGwoL2NhdGVnb3J5XFxzKjpcXHMqL2dpLCAnQ2F0ZWdvcnk6Jyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYXRlZ29yeU5hbWUuY2hhckF0KDApID09PSAnOicpIGNhdGVnb3J5TmFtZSA9IGNhdGVnb3J5TmFtZS5zbGljZSgxKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHRoZSBwYXJlbnQgY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdFRleHQgPSByZWRpcmVjdFNlY3Rpb24uc2xpY2UoaGVhZGVyLmxlbmd0aCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gV2Ugb25seSB3YW50IGNhdGVnb3JpZXMgbGlzdGVkIHVuZGVyIHRoZSBcIlBhcmVudCBjYXRlZ29yeS9jYXRlZ29yaWVzXCIgaGVhZGluZyxcbiAgICAgICAgICAgICAgICAgICAgLy8gKk5PVCogYW55IGNhdGVnb3JpZXMgbGlzdGVkIHVuZGVyIFwiRXhhbXBsZSBwYWdlcyB3aGljaCBiZWxvbmcgdG8gdGhpcyBjYXRlZ29yeVwiLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRIZWFkaW5nSW5kZXggPSByZXF1ZXN0VGV4dC5pbmRleE9mKCdQYXJlbnQgY2F0ZWdvcnkvY2F0ZWdvcmllcycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50SGVhZGluZ0luZGV4ID49IDApIHJlcXVlc3RUZXh0ID0gcmVxdWVzdFRleHQuc2xpY2UoTWF0aC5tYXgoMCwgcGFyZW50SGVhZGluZ0luZGV4KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Q2F0ZWdvcmllcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyZW50Q2F0ZWdvcnlNYXRjaCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudENhdGVnb3JpZXNSZWdleCA9IC9cXFtcXFtcXHMqOlxccyooY2F0ZWdvcnk6W15bXFxdXSopXV0vZ2k7XG4gICAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENhdGVnb3J5TWF0Y2ggPSBwYXJlbnRDYXRlZ29yaWVzUmVnZXguZXhlYyhyZXF1ZXN0VGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50Q2F0ZWdvcnlNYXRjaCkgcGFyZW50Q2F0ZWdvcmllcy5wdXNoKHBhcmVudENhdGVnb3J5TWF0Y2hbMV0pO1xuICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChwYXJlbnRDYXRlZ29yeU1hdGNoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJtaXNzaW9uID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2NhdGVnb3J5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBudW1iZXJUb3RhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRzOiBwYXJlbnRDYXRlZ29yaWVzLmpvaW4oJywnKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyVG90YWwrKztcbiAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RTdWJtaXNzaW9ucy5wdXNoKHN1Ym1pc3Npb24pO1xuICAgICAgICAgICAgICAgICAgICBzdWJtaXNzaW9ucy5wdXNoKHN1Ym1pc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gLy8gRW5kIGlmICFjbG9zZWRcbiAgICAgICAgfSAvLyBFbmQgbG9vcCBvdmVyIHNlY3Rpb25zXG5cbiAgICAgICAgLy8gQnVpbGQgdGhlIGZvcm1cbiAgICAgICAgY29uc3QgJGZvcm0gPSAkKCc8aDM+UmV2aWV3aW5nIEFmQyByZWRpcmVjdCByZXF1ZXN0czwvaDM+Jyk7XG4gICAgICAgIGRpc3BsYXlNZXNzYWdlKCRmb3JtKTtcbiAgICAgICAgY29uc3QgJG1lc3NhZ2VEaXYgPSAkZm9ybS5wYXJlbnQoKTtcbiAgICAgICAgLy8gTGF5b3V0IHRoZSB0ZXh0XG4gICAgICAgIGxldCByZWRpcmVjdEVtcHR5ID0gMTtcbiAgICAgICAgY29uc3QgQUNUSU9OUyA9IFtcbiAgICAgICAgICAgIHsgbGFiZWw6ICdBY2NlcHQnLCB2YWx1ZTogJ2FjY2VwdCcgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdEZWNsaW5lJywgdmFsdWU6ICdkZWNsaW5lJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0NvbW1lbnQnLCB2YWx1ZTogJ2NvbW1lbnQnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnTm9uZScsIHNlbGVjdGVkOiB0cnVlLCB2YWx1ZTogJ25vbmUnIH0sXG4gICAgICAgIF07XG4gICAgICAgIGZvciAoY29uc3QgcmVkaXJlY3RTdWJtaXNzaW9uIG9mIHJlZGlyZWN0U3VibWlzc2lvbnMpIHtcbiAgICAgICAgICAgIGxldCBzdWJtaXNzaW9uTmFtZTtcbiAgICAgICAgICAgIHN1Ym1pc3Npb25OYW1lID0gcmVkaXJlY3RTdWJtaXNzaW9uLnRvID09PSB1bmRlZmluZWQgPyAnJyA6IHJlZGlyZWN0U3VibWlzc2lvbi50by5yZXBsYWNlQWxsKC9cXHMvZywgJycpO1xuICAgICAgICAgICAgY29uc3QgJHRoaXNTdWJMaXN0ID0gJCgnPHVsPicpO1xuICAgICAgICAgICAgY29uc3QgJHRoaXNTdWJMaXN0RWxlbWVudCA9ICQoJzxsaT4nKTtcbiAgICAgICAgICAgIGlmIChyZWRpcmVjdFN1Ym1pc3Npb24udHlwZSA9PT0gJ3JlZGlyZWN0Jykge1xuICAgICAgICAgICAgICAgICR0aGlzU3ViTGlzdEVsZW1lbnQuYXBwZW5kKCdSZWRpcmVjdChzKSB0byAnKTtcbiAgICAgICAgICAgICAgICBpZiAoIXN1Ym1pc3Npb25OYW1lKVxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IHJlZGlyZWN0U3VibWlzc2lvbi5mcm9tLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pXG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkc1VwZGF0ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcmVkaXJlY3RTdWJtaXNzaW9uLmZyb21baW5kZXhdLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbjogJ25vLXRhcmdldCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghcmVkaXJlY3RTdWJtaXNzaW9uLnRvKVxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IHJlZGlyZWN0U3VibWlzc2lvbi5mcm9tLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pXG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkc1VwZGF0ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcmVkaXJlY3RTdWJtaXNzaW9uLmZyb21baW5kZXhdLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbjogJ25vdC1yZWRpcmVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChyZWRpcmVjdFN1Ym1pc3Npb24gPT09ICcnIHx8IHJlZGlyZWN0U3VibWlzc2lvbiA9PT0gJyAnKSB7XG4gICAgICAgICAgICAgICAgICAgICR0aGlzU3ViTGlzdEVsZW1lbnQuYXBwZW5kKCdFbXB0eSBzdWJtaXNzaW9uICMnICsgcmVkaXJlY3RFbXB0eSk7XG4gICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0RW1wdHkrKztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN1Ym1pc3Npb25OYW1lLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgICAgICR0aGlzU3ViTGlzdEVsZW1lbnQuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGE+JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignaHJlZicsIG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZVBhdGgnKS5yZXBsYWNlKCckMScsIGVuY29kZVVSSUNvbXBvbmVudChyZWRpcmVjdFN1Ym1pc3Npb24udG8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigndGFyZ2V0JywgJ19ibGFuaycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQocmVkaXJlY3RTdWJtaXNzaW9uLnRvKSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBlbHNlICR0aGlzU3ViTGlzdEVsZW1lbnQuYXBwZW5kKCc8Yj5ubyB0YXJnZXQgZ2l2ZW48L2I+OiAnKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0ICRmcm9tTGlzdCA9ICQoJzx1bD4nKS5hcHBlbmRUbygkdGhpc1N1Ykxpc3RFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBsID0gMDsgbCA8IHJlZGlyZWN0U3VibWlzc2lvbi5mcm9tLmxlbmd0aDsgbCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZyb20gPSByZWRpcmVjdFN1Ym1pc3Npb24uZnJvbVtsXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRvQXJ0aWNsZSA9IGZyb20udGl0bGU7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b0FydGljbGUucmVwbGFjZUFsbCgvXFxzKi9naSwgJycpLmxlbmd0aCA9PT0gMCkgdG9BcnRpY2xlID0gJzxiPm5vIHRpdGxlIHNwZWNpZmllZDwvYj4sIGNoZWNrIHRoZSByZXF1ZXN0IGRldGFpbHMnO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYXNvbkFuZFNvdXJjZSA9ICQoJzx1bD4nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZGlyZWN0U3VibWlzc2lvbi5yZWFzb24pIHJlYXNvbkFuZFNvdXJjZS5hcHBlbmQoJzxsaT5SZWFzb246ICcgKyByZWRpcmVjdFN1Ym1pc3Npb24ucmVhc29uICsgJzwvbGk+Jyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWRpcmVjdFN1Ym1pc3Npb24uc291cmNlKSByZWFzb25BbmRTb3VyY2UuYXBwZW5kKCc8bGk+U291cmNlOiAnICsgcmVkaXJlY3RTdWJtaXNzaW9uLnNvdXJjZSArICc8L2xpPicpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdvb2dsZVNlYXJjaFVybCA9ICdodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9XCInICsgZW5jb2RlVVJJQ29tcG9uZW50KHRvQXJ0aWNsZSkgKyAnXCIrLXdpa2lwZWRpYS5vcmcnO1xuICAgICAgICAgICAgICAgICAgICAkZnJvbUxpc3QuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGxpPicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Zyb206ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9BcnRpY2xlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICg8c21hbGw+PGEgaHJlZj0nXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29vZ2xlU2VhcmNoVXJsICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXCdcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Hb29nbGU8L2E+IDxiPiZtaWRkb3Q7PC9iPiA8YSBocmVmPVwiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpXaGF0TGlua3NIZXJlLycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHRvQXJ0aWNsZSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiIHRhcmdldD1cIl9ibGFua1wiPndoYXQgbGlua3MgaGVyZTwvYT4pPC9zbWFsbD48YnIvPicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQocmVhc29uQW5kU291cmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzxsYWJlbD4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2ZvcicsICdhZmNIZWxwZXJfcmVkaXJlY3RfYWN0aW9uXycgKyBmcm9tLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQoJ0FjdGlvbjogJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoZ2VuZXJhdGVTZWxlY3RPYmplY3QoJ2FmY0hlbHBlcl9yZWRpcmVjdF9hY3Rpb25fJyArIGZyb20uaWQsIEFDVElPTlMsIHJlZGlyZWN0TWFrZUFjdGlvbkNoYW5nZShmcm9tLmlkKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8ZGl2PicpLmF0dHIoJ2lkJywgJ2FmY0hlbHBlcl9yZWRpcmVjdF9leHRyYV8nICsgZnJvbS5pZCkpLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViSWQgPSByZWRpcmVjdFN1Ym1pc3Npb24uaWQ7XG4gICAgICAgICAgICAgICAgJHRoaXNTdWJMaXN0RWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCdDYXRlZ29yeSBzdWJtaXNzaW9uOiAnKVxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGE+JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignaHJlZicsICcvd2lraS8nICsgcmVkaXJlY3RTdWJtaXNzaW9uLnRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCd0aXRsZScsIHJlZGlyZWN0U3VibWlzc2lvbi50aXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGV4dChyZWRpcmVjdFN1Ym1pc3Npb24udGl0bGUpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJzxiciAvPicpXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCc8bGFiZWw+JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignZm9yJywgJ2FmY0hlbHBlcl9yZWRpcmVjdF9hY3Rpb25fJyArIHN1YklkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KCdBY3Rpb246ICcpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoZ2VuZXJhdGVTZWxlY3RPYmplY3QoJ2FmY0hlbHBlcl9yZWRpcmVjdF9hY3Rpb25fJyArIHN1YklkLCBBQ1RJT05TLCByZWRpcmVjdE1ha2VBY3Rpb25DaGFuZ2Uoc3ViSWQpKSlcbiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8ZGl2PicpLmF0dHIoJ2lkJywgJ2FmY0hlbHBlcl9yZWRpcmVjdF9leHRyYV8nICsgc3ViSWQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICR0aGlzU3ViTGlzdC5hcHBlbmQoJHRoaXNTdWJMaXN0RWxlbWVudCk7XG4gICAgICAgICAgICAkbWVzc2FnZURpdi5hcHBlbmQoJHRoaXNTdWJMaXN0KTtcbiAgICAgICAgfSAvLyBFbmQgbG9vcCBvdmVyIHNlY3Rpb25zXG4gICAgICAgICRtZXNzYWdlRGl2LmFwcGVuZCgkKCc8YnV0dG9uPicpLmF0dHIoJ2lkJywgJ2FmY0hlbHBlcl9yZWRpcmVjdF9kb25lX2J1dHRvbicpLmF0dHIoJ25hbWUnLCAnYWZjSGVscGVyX3JlZGlyZWN0X2RvbmVfYnV0dG9uJykudGV4dCgnRG9uZScpLmNsaWNrKHJlZGlyZWN0UGVyZm9ybUFjdGlvbnMpKTtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIG5lZWRzVXBkYXRlKSB7XG4gICAgICAgICAgICAkKCcjYWZjSGVscGVyX3JlZGlyZWN0X2FjdGlvbl8nICsgZWxlbWVudC5pZCkuYXR0cigndmFsdWUnLCAnZGVjbGluZScpO1xuICAgICAgICAgICAgcmVkaXJlY3RPbkFjdGlvbkNoYW5nZShlbGVtZW50LmlkKTtcbiAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfcmVkaXJlY3RfZGVjbGluZV8nICsgZWxlbWVudC5pZCkuYXR0cigndmFsdWUnLCBlbGVtZW50LnJlYXNvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbGlhcyBvZiByZWRpcmVjdE9uQWN0aW9uQ2hhbmdlLlxuICAgICAqIEBwYXJhbSBpZCBUaGUgcmVxdWVzdCBpZC5cbiAgICAgKiBAcmV0dXJucyBUaGUgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVkaXJlY3RNYWtlQWN0aW9uQ2hhbmdlKGlkKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZWRpcmVjdE9uQWN0aW9uQ2hhbmdlKGlkKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtIGFjdGlvbnMgb24gY2hhbmdlLlxuICAgICAqIEBwYXJhbSBpZCBUaGUgcmVxdWVzdCBpZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWRpcmVjdE9uQWN0aW9uQ2hhbmdlKGlkKSB7XG4gICAgICAgIGNvbnN0ICRleHRyYSA9ICQoJyNhZmNIZWxwZXJfcmVkaXJlY3RfZXh0cmFfJyArIGlkKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0VmFsdWUgPSAkKCcjYWZjSGVscGVyX3JlZGlyZWN0X2FjdGlvbl8nICsgaWQpLnZhbCgpO1xuICAgICAgICAkZXh0cmEuaHRtbCgnJyk7IC8vIEJsYW5rIGl0IGZpcnN0XG4gICAgICAgIHN3aXRjaCAoc2VsZWN0VmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FjY2VwdCc6IHtcbiAgICAgICAgICAgICAgICBpZiAoc3VibWlzc2lvbnNbaWRdLnR5cGUgPT09ICdyZWRpcmVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmFwcGVuZCgnPGxhYmVsIGZvcj1cImFmY0hlbHBlcl9yZWRpcmVjdF9mcm9tXycgKyBpZCArICdcIj5Gcm9tOiA8L2xhYmVsPicpO1xuICAgICAgICAgICAgICAgICAgICAkZXh0cmEuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGlucHV0PicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3R5cGUnLCAndGV4dCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ25hbWUnLCAnYWZjSGVscGVyX3JlZGlyZWN0X2Zyb21fJyArIGlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdpZCcsICdhZmNIZWxwZXJfcmVkaXJlY3RfZnJvbV8nICsgaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3ZhbHVlJywgc3VibWlzc2lvbnNbaWRdLnRpdGxlKSxcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAkZXh0cmEuaHRtbChcbiAgICAgICAgICAgICAgICAgICAgICAgICRleHRyYS5odG1sKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcmbmJzcDs8YnIgLz48bGFiZWwgZm9yPVwiYWZjSGVscGVyX3JlZGlyZWN0X3RvXycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCI+VG86IDwvbGFiZWw+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImFmY0hlbHBlcl9yZWRpcmVjdF90b18nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiIGlkPVwiYWZjSGVscGVyX3JlZGlyZWN0X3RvXycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCIgdmFsdWU9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXNzaW9uc1tpZF0udG8gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiAvPicsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICRleHRyYS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxiciAvPjxsYWJlbCBmb3I9XCJhZmNIZWxwZXJfcmVkaXJlY3RfYXBwZW5kXycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCI+VGVtcGxhdGUgdG8gYXBwZW5kOiAoPGEgaHJlZj1cImh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpa2lwZWRpYTpUTVJcIiB0YXJnZXQ9XCJfYmxhbmtcIj5IZWxwPC9hPik8L2xhYmVsPicsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICRleHRyYS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVTZWxlY3QoJ2FmY0hlbHBlcl9yZWRpcmVjdF9hcHBlbmRfJyArIGlkLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdOb25lJywgc2VsZWN0ZWQ6IHRydWUsIHZhbHVlOiAnbm9uZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnRnJlcXVlbnRseSB1c2VkJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGFsdGVybmF0aXZlIGxhbmd1YWdlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gYWx0ZXJuYXRpdmUgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIG1vZGlmaWNhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBzZWN0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gZGlhY3JpdGljJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIGRpYWNyaXRpYycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnRnJvbSBcdTIwMTMgYWJicmV2aWF0aW9uLCBjYXBpdGFsaXNhdGlvbiwgYW5kIGdyYW1tYXInLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gYWNyb255bScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGluaXRpYWxpc20nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBDYW1lbENhc2UnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBtaXNjYXBpdGFsaXNhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIG90aGVyIGNhcGl0YWxpc2F0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbW9kaWZpY2F0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gcGx1cmFsJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiAnRnJvbSBwYXJ0cyBvZiBzcGVhY2gnLCB2YWx1ZTogJ0Zyb20gcGFydHMgb2Ygc3BlYWNoJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGFkamVjdGl2ZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGFkdmVyYicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGNvbW1vbiBub3VuJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gZ2VydW5kJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gcHJvcGVyIG5vdW4nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSB2ZXJiJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdGcm9tIFx1MjAxMyBzcGVsbGluZycsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBhbHRlcm5hdGl2ZSBzcGVsbGluZycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIG1pc3NwZWxsaW5nJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gQW1lcmljYW4gRW5nbGlzaCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIEJyaXRpc2ggRW5nbGlzaCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIEFTQ0lJLW9ubHknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBkaWFjcml0aWMnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBsaWdhdHVyZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHN0eWxpemF0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gYWx0ZXJuYXRpdmUgdHJhbnNsaXRlcmF0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gV2FkZVx1MjAxM0dpbGVzIHJvbWFuaXphdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnRnJvbSBhbHRlcm5hdGl2ZSBuYW1lcywgZ2VuZXJhbCcsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBhbHRlcm5hdGl2ZSBsYW5ndWFnZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGFsdGVybmF0aXZlIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBmb3JtZXIgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGhpc3RvcmljIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBpbmNvbXBsZXRlIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBpbmNvcnJlY3QgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGxldHRlclx1MjAxM3dvcmQgY29tYmluYXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBsb25nIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBwb3J0bWFudGVhdScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHByZWRlY2Vzc29yIGNvbXBhbnkgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHNob3J0IG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBzb3J0IG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBsZXNzIHNwZWNpZmljIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBtb3JlIHNwZWNpZmljIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBhbnRvbnltJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gZXBvbnltJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gc3lub255bScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIFJvbWFuIG51bWVyYWxzJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdGcm9tIGFsdGVybmF0aXZlIG5hbWVzLCBnZW9ncmFwaHknLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gQ2FuYWRpYW4gc2V0dGxlbWVudCBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbmFtZSBhbmQgY291bnRyeScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGNpdHkgYW5kIHN0YXRlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gY2l0eSBhbmQgcHJvdmluY2UnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBtb3JlIHNwZWNpZmljIGdlb2dyYXBoaWMgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHBvc3RhbCBhYmJyZXZpYXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBwb3N0YWwgY29kZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIFVTIHBvc3RhbCBhYmJyZXZpYXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ0Zyb20gYWx0ZXJuYXRpdmUgbmFtZXMsIG9yZ2FuaXNtcycsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBzY2llbnRpZmljIGFiYnJldmlhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHNjaWVudGlmaWMgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGFsdGVybmF0aXZlIHNjaWVudGlmaWMgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIG1vbm90eXBpYyB0YXhvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnRnJvbSBhbHRlcm5hdGl2ZSBuYW1lcywgcGVvcGxlJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGJpcnRoIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBnaXZlbiBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbWFycmllZCBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbmFtZSB3aXRoIHRpdGxlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbm9uLW5ldXRyYWwgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHBlcnNvbmFsIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBwc2V1ZG9ueW0nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSByZWxhdGl2ZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHNwb3VzZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHN1cm5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ0Zyb20gYWx0ZXJuYXRpdmUgbmFtZXMsIHRlY2huaWNhbCcsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBCbHVlYm9vayBhYmJyZXZpYXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBicmFuZCBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gZHJ1ZyB0cmFkZSBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gZmlsZSBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gSmF2YSBwYWNrYWdlIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBNYXRoU2NpTmV0IGFiYnJldmlhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIG1vbGVjdWxhciBmb3JtdWxhJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gTkxNIGFiYnJldmlhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHByb2R1Y3QgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHNsb2dhbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHN5bWJvbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHN5c3RlbWF0aWMgYWJicmV2aWF0aW9ucycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHRlY2huaWNhbCBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gdHJhZGVtYXJrJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdGcm9tIFx1MjAxMyBuYXZpZ2F0aW9uJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGZpbGUgbWV0YWRhdGEgbGluaycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBtZW50aW9uZWQgaW4gaGF0bm90ZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHNob3J0Y3V0JyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gdGVtcGxhdGUgc2hvcnRjdXQnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ0Zyb20gZGlzYW1iaWd1YXRpb25zJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGFtYmlndW91cyB0ZXJtJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gaW5jb21wbGV0ZSBkaXNhbWJpZ3VhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGluY29ycmVjdCBkaXNhbWJpZ3VhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIG90aGVyIGRpc2FtYmlndWF0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gcHJlZGljdGFibGUgZGlzYW1iaWd1YXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSB1bm5lY2Vzc2FyeSBkaXNhbWJpZ3VhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnRnJvbSBtZXJnZXJzLCBkdXBsaWNhdGVzLCBhbmQgbW92ZXMnLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gZHVwbGljYXRlZCBhcnRpY2xlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHdpdGggaGlzdG9yeScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIG1lcmdlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gbW92ZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB3aXRoIG9sZCBoaXN0b3J5JyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdGcm9tIGZpY3Rpb24nLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gZmljdGlvbmFsIGNoYXJhY3RlcicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGZpY3Rpb25hbCBlbGVtZW50JyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gZmljdGlvbmFsIGxvY2F0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdGcm9tIHJlbGF0ZWQgaW5mbycsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBhbGJ1bScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGFuaW1hbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGJvb2snIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBjYXRjaHBocmFzZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGRvbWFpbiBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gdG9wLWxldmVsIGRvbWFpbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGZpbG0nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBnZW5kZXInIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBsZWdpc2xhdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIGxpc3QgdG9waWMnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBtZW1iZXInIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBwZXJzb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBwaHJhc2UnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBxdW90YXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSByZWxhdGVkIHdvcmQnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBzY2hvb2wnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSBzb25nJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gc3VidG9waWMnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgZnJvbSB0ZWFtJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIGZyb20gd29yaycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIHdyaXRlcicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiBmcm9tIFVuaWNvZGUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1RvIFx1MjAxMyBncmFtbWFyLCBwdW5jdHVhdGlvbiwgYW5kIHNwZWxsaW5nJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBhY3JvbnltJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIGluaXRpYWxpc20nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gQVNDSUktb25seSB0aXRsZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBkaWFjcml0aWMnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gbGlnYXR1cmUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gcGx1cmFsJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdUbyBhbHRlcm5hdGl2ZSBuYW1lcycsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gZm9ybWVyIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gaGlzdG9yaWMgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBqb2ludCBiaW9ncmFwaHknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gbmFtZSB3aXRoIHRpdGxlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIG1vbm90eXBpYyB0YXhvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBzY2llbnRpZmljIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gc3lzdGVtYXRpYyBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIHRlY2huaWNhbCBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdUbyBcdTIwMTMgbmF2aWdhdGlvbiBhbmQgZGlzYW1iaWd1YXRpb24nLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIGFuY2hvcicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBhbnRocm9wb255bXkgcGFnZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBkaXNhbWJpZ3VhdGlvbiBwYWdlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIGxpc3QgZW50cnknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gc2VjdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnVG8gbWlzY2VsbGFuZW91cycsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gZGVjYWRlJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsQW5kVmFsdWU6ICdSIHRvIHJlbGF0ZWQgdG9waWMnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWxBbmRWYWx1ZTogJ1IgdG8gc3VicGFnZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBzdWJ0b3BpYycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbEFuZFZhbHVlOiAnUiB0byBUViBlcGlzb2RlIGxpc3QgZW50cnknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdDdXN0b20gLSBwcm9tcHQgbWUnLCB2YWx1ZTogJ2N1c3RvbScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBOb3cgY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICAkZXh0cmEuaHRtbChcbiAgICAgICAgICAgICAgICAgICAgICAgICc8bGFiZWwgZm9yPVwiYWZjSGVscGVyX3JlZGlyZWN0X25hbWVfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIj5DYXRlZ29yeSBuYW1lOiA8L2xhYmVsPjxpbnB1dCB0eXBlPVwidGV4dFwiIHNpemU9XCIxMDBcIiBuYW1lPVwiYWZjSGVscGVyX3JlZGlyZWN0X25hbWVfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiBpZD1cImFmY0hlbHBlcl9yZWRpcmVjdF9uYW1lXycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCIgdmFsdWU9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXNzaW9uc1tpZF0udGl0bGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiAvPicsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICRleHRyYS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxiciAvPjxsYWJlbCBmb3I9XCJhZmNIZWxwZXJfcmVkaXJlY3RfcGFyZW50c18nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiPlBhcmVudCBjYXRlZ29yaWVzIChjb21tYS1zZXBhcmF0ZWQpOjwvbGFiZWw+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgc2l6ZT1cIjEwMFwiIGlkPVwiYWZjSGVscGVyX3JlZGlyZWN0X3BhcmVudHNfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiBuYW1lPVwiYWZjSGVscGVyX3JlZGlyZWN0X3BhcmVudHNfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiB2YWx1ZT1cIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb25zW2lkXS5wYXJlbnRzICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCIgLz4nLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAkZXh0cmEuYXBwZW5kKCc8YnIgLz4nKTtcbiAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmFwcGVuZCgkKCc8aW5wdXQ+JywgeyB0eXBlOiAnY2hlY2tib3gnLCBuYW1lOiAnYWZjSGVscGVyX3JlZGlyZWN0X2NvbnRhaW5lcl8nICsgaWQsIGlkOiAnYWZjSGVscGVyX3JlZGlyZWN0X2NvbnRhaW5lcl8nICsgaWQgfSkpO1xuICAgICAgICAgICAgICAgICAgICAkZXh0cmEuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgJzxsYWJlbCBmb3I9XCJhZmNIZWxwZXJfcmVkaXJlY3RfY29udGFpbmVyXycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCI+VGhpcyBpcyBhIDxhIGhyZWY9XCIvd2lraS9XaWtpcGVkaWE6Q29udGFpbmVyX2NhdGVnb3J5XCIgdGl0bGU9XCJXaWtpcGVkaWE6Q29udGFpbmVyIGNhdGVnb3J5XCI+Y29udGFpbmVyIGNhdGVnb3J5PC9hPjwvbGFiZWw+JyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoJGV4dHJhLmh0bWwoKSArICc8YnIgLz48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImFmY0hlbHBlcl9yZWRpcmVjdF9jb250YWluZXJfJyArIGlkICsgJ1wiJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRleHRyYS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAkZXh0cmEuaHRtbCgpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc8YnIgLz48bGFiZWwgZm9yPVwiYWZjSGVscGVyX3JlZGlyZWN0X2NvbW1lbnRfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXCI+Q29tbWVudDo8L2xhYmVsPjxpbnB1dCB0eXBlPVwidGV4dFwiIHNpemU9XCIxMDBcIiBpZD1cImFmY0hlbHBlcl9yZWRpcmVjdF9jb21tZW50XycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1wiIG5hbWU9XCJhZmNIZWxwZXJfcmVkaXJlY3RfY29tbWVudF8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcIi8+JyxcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdkZWNsaW5lJzoge1xuICAgICAgICAgICAgICAgIGlmIChzdWJtaXNzaW9uc1tpZF0udHlwZSA9PT0gJ3JlZGlyZWN0JylcbiAgICAgICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAnPGxhYmVsIGZvcj1cImFmY0hlbHBlcl9yZWRpcmVjdF9kZWNsaW5lXycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCI+UmVhc29uIGZvciBkZWNsaW5lOiA8L2xhYmVsPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlU2VsZWN0KCdhZmNIZWxwZXJfcmVkaXJlY3RfZGVjbGluZV8nICsgaWQsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdBbHJlYWR5IGV4aXN0cycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2V4aXN0cycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQmxhbmsgcmVxdWVzdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2JsYW5rJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdObyB2YWxpZCB0YXJnZXQgc3BlY2lmaWVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnbm8tdGFyZ2V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdVbmxpa2VseSBzZWFyY2ggdGVybScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ3VubGlrZWx5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdOb3QgYSByZWRpcmVjdCByZXF1ZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnbm90LXJlZGlyZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDdXN0b20gLSByZWFzb24gYmVsb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2N1c3RvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgLy8gTm93IGNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICRleHRyYS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgJzxsYWJlbCBmb3I9XCJhZmNIZWxwZXJfcmVkaXJlY3RfZGVjbGluZV8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiPlJlYXNvbiBmb3IgZGVjbGluZTogPC9sYWJlbD4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZVNlbGVjdCgnYWZjSGVscGVyX3JlZGlyZWN0X2RlY2xpbmVfJyArIGlkLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQWxyZWFkeSBleGlzdHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdleGlzdHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0JsYW5rIHJlcXVlc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdibGFuaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnVW5saWtlbHkgY2F0ZWdvcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICd1bmxpa2VseScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnTm90IGEgY2F0ZWdvcnkgcmVxdWVzdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ25vdC1jYXRlZ29yeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQ3VzdG9tIC0gcmVhc29uIGJlbG93JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdjdXN0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgJGV4dHJhLmh0bWwoXG4gICAgICAgICAgICAgICAgICAgICRleHRyYS5odG1sKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzxici8+PGxhYmVsIGZvcj1cImFmY0hlbHBlcl9yZWRpcmVjdF9jb21tZW50XycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1wiPkNvbW1lbnQ6IDwvbGFiZWw+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgc2l6ZT1cIjEwMFwiIGlkPVwiYWZjSGVscGVyX3JlZGlyZWN0X2NvbW1lbnRfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXCIgbmFtZT1cImFmY0hlbHBlcl9yZWRpcmVjdF9jb21tZW50XycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1wiLz4nLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ25vbmUnOiB7XG4gICAgICAgICAgICAgICAgLy8gRm9yIGNhdGVnb3JpZXMgYW5kIHJlZGlyZWN0c1xuICAgICAgICAgICAgICAgICRleHRyYS5odG1sKCcnKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICRleHRyYS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAkZXh0cmEuaHRtbCgpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc8bGFiZWwgZm9yPVwiYWZjSGVscGVyX3JlZGlyZWN0X2NvbW1lbnRfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXCI+Q29tbWVudDogPC9sYWJlbD48aW5wdXQgdHlwZT1cInRleHRcIiBzaXplPVwiMTAwXCIgaWQ9XCJhZmNIZWxwZXJfcmVkaXJlY3RfY29tbWVudF8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcIiBuYW1lPVwiYWZjSGVscGVyX3JlZGlyZWN0X2NvbW1lbnRfJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXCIvPicsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm0gdGhlIHJlZGlyZWN0IGFjdGlvbnMgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLlxuICAgICAqL1xuICAgIGFzeW5jIGZ1bmN0aW9uIHJlZGlyZWN0UGVyZm9ybUFjdGlvbnMoKSB7XG4gICAgICAgIC8vIExvYWQgYWxsIG9mIHRoZSBkYXRhXG4gICAgICAgIGZvciAoY29uc3QgW2luZGV4LCBzdWJtaXNzaW9uXSBvZiBzdWJtaXNzaW9ucy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9ICQoJyNhZmNIZWxwZXJfcmVkaXJlY3RfYWN0aW9uXycgKyBpbmRleCkudmFsKCk7XG4gICAgICAgICAgICBzdWJtaXNzaW9uLmFjdGlvbiA9IGFjdGlvbjtcbiAgICAgICAgICAgIGlmIChhY3Rpb24gPT09ICdub25lJykgY29udGludWU7XG4gICAgICAgICAgICBpZiAoYWN0aW9uID09PSAnYWNjZXB0JylcbiAgICAgICAgICAgICAgICBpZiAoc3VibWlzc2lvbi50eXBlID09PSAncmVkaXJlY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb24udGl0bGUgPSAkKCcjYWZjSGVscGVyX3JlZGlyZWN0X2Zyb21fJyArIGluZGV4KS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbi50byA9ICQoJyNhZmNIZWxwZXJfcmVkaXJlY3RfdG9fJyArIGluZGV4KS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbi5hcHBlbmQgPSAkKCcjYWZjSGVscGVyX3JlZGlyZWN0X2FwcGVuZF8nICsgaW5kZXgpLnZhbCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VibWlzc2lvbi5hcHBlbmQgPT09ICdjdXN0b20nKSBzdWJtaXNzaW9uLmFwcGVuZCA9IHByb21wdCgnUGxlYXNlIGVudGVyIHRoZSB0ZW1wbGF0ZSB0byBhcHBlbmQgdG8gJyArIHN1Ym1pc3Npb24udGl0bGUgKyAnLiBEbyBub3QgaW5jbHVkZSB0aGUgY3VybHkgYnJhY2tldHMuJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbi5hcHBlbmQgPSBzdWJtaXNzaW9uLmFwcGVuZCA9PT0gJ25vbmUnIHx8IHN1Ym1pc3Npb24uYXBwZW5kID09PSBudWxsID8gJycgOiAne3snICsgc3VibWlzc2lvbi5hcHBlbmQgKyAnfX0nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb24udGl0bGUgPSAkKCcjYWZjSGVscGVyX3JlZGlyZWN0X25hbWVfJyArIGluZGV4KS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbi5wYXJlbnRzID0gJCgnI2FmY0hlbHBlcl9yZWRpcmVjdF9wYXJlbnRzXycgKyBpbmRleCkudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb24uY29udGFpbmVyID0gJCgnI2FmY0hlbHBlcl9yZWRpcmVjdF9jb250YWluZXJfJyArIGluZGV4KS5pcygnOmNoZWNrZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24gPT09ICdkZWNsaW5lJykgc3VibWlzc2lvbi5yZWFzb24gPSAkKCcjYWZjSGVscGVyX3JlZGlyZWN0X2RlY2xpbmVfJyArIGluZGV4KS52YWwoKTtcblxuICAgICAgICAgICAgc3VibWlzc2lvbi5jb21tZW50ID0gJCgnI2FmY0hlbHBlcl9yZWRpcmVjdF9jb21tZW50XycgKyBpbmRleCkudmFsKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGF0YSBsb2FkZWQuIFNob3cgcHJvZ3Jlc3Mgc2NyZWVuIGFuZCBnZXQgV1A6QUZDL1JDIHBhZ2UgdGV4dFxuICAgICAgICBkaXNwbGF5TWVzc2FnZSgnPHVsIGlkPVwiYWZjSGVscGVyX3N0YXR1c1wiPjwvdWw+PHVsIGlkPVwiYWZjSGVscGVyX2ZpbmlzaFwiPjwvdWw+Jyk7XG4gICAgICAgIGNvbnN0IGFkZFN0YXR1cyA9IGZ1bmN0aW9uIChzdGF0dXMpIHtcbiAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfc3RhdHVzJykuYXBwZW5kKHN0YXR1cyk7XG4gICAgICAgIH07XG4gICAgICAgICQoJyNhZmNIZWxwZXJfZmluaXNoJykuaHRtbChcbiAgICAgICAgICAgICQoJyNhZmNIZWxwZXJfZmluaXNoJykuaHRtbCgpICtcbiAgICAgICAgICAgICAgICAnPHNwYW4gaWQ9XCJhZmNIZWxwZXJfZmluaXNoZWRfd3JhcHBlclwiPjxzcGFuIGlkPVwiYWZjSGVscGVyX2ZpbmlzaGVkX21haW5cIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPjxsaSBpZD1cImFmY0hlbHBlcl9kb25lXCI+PGI+RG9uZSAoPGEgaHJlZj1cIicgK1xuICAgICAgICAgICAgICAgIG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZVBhdGgnKS5yZXBsYWNlKCckMScsIGVuY29kZVVSSShyZWRpcmVjdFBhZ2VOYW1lKSkgK1xuICAgICAgICAgICAgICAgICc/YWN0aW9uPXB1cmdlXCIgdGl0bGU9XCInICtcbiAgICAgICAgICAgICAgICByZWRpcmVjdFBhZ2VOYW1lICtcbiAgICAgICAgICAgICAgICAnXCI+UmVsb2FkIHBhZ2U8L2E+KTwvYj48L2xpPjwvc3Bhbj48L3NwYW4+JyxcbiAgICAgICAgKTtcbiAgICAgICAgbGV0IHBhZ2VUZXh0ID0gYXdhaXQgZ2V0UGFnZVRleHQocmVkaXJlY3RQYWdlTmFtZSwgYWRkU3RhdHVzKTtcbiAgICAgICAgbGV0IHRvdGFsQWNjZXB0ID0gMDtcbiAgICAgICAgbGV0IHRvdGFsRGVjbGluZSA9IDA7XG4gICAgICAgIGxldCB0b3RhbENvbW1lbnQgPSAwO1xuICAgICAgICAvLyBUcmF2ZXJzZSB0aGUgc3VibWlzc2lvbnMgYW5kIGxvY2F0ZSB0aGUgcmVsZXZhbnQgc2VjdGlvbnNcbiAgICAgICAgYWRkU3RhdHVzKCc8bGk+UHJvY2Vzc2luZyAnICsgcmVkaXJlY3RTdWJtaXNzaW9ucy5sZW5ndGggKyAnIHN1Ym1pc3Npb24nICsgKHJlZGlyZWN0U3VibWlzc2lvbnMubGVuZ3RoID09PSAxID8gJycgOiAncycpICsgJy4uLjwvbGk+Jyk7XG4gICAgICAgIGZvciAoY29uc3Qgc3ViIG9mIHJlZGlyZWN0U3VibWlzc2lvbnMpIHtcbiAgICAgICAgICAgIGlmICghcGFnZVRleHQuaW5jbHVkZXMocmVkaXJlY3RTZWN0aW9uc1tzdWIuc2VjdGlvbl0pKSB7XG4gICAgICAgICAgICAgICAgLy8gU29tZW9uZSBoYXMgbW9kaWZpZWQgdGhlIHNlY3Rpb24gaW4gdGhlIG1lYW4gdGltZSwgc2tpcFxuICAgICAgICAgICAgICAgIGFkZFN0YXR1cygnPGxpPlNraXBwaW5nICcgKyBzdWIudGl0bGUgKyAnOiBDYW5ub3QgZmluZCBzZWN0aW9uLiBQZXJoYXBzIGl0IHdhcyBtb2RpZmllZCBpbiB0aGUgbWVhbiB0aW1lPzwvbGk+Jyk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdGV4dCA9IHJlZGlyZWN0U2VjdGlvbnNbc3ViLnNlY3Rpb25dO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IHBhZ2VUZXh0LmluZGV4T2YocmVkaXJlY3RTZWN0aW9uc1tzdWIuc2VjdGlvbl0pO1xuICAgICAgICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgdGV4dC5sZW5ndGg7XG5cbiAgICAgICAgICAgIC8vIEZpcnN0IGRlYWwgd2l0aCBjYXRlZ29yaWVzXG4gICAgICAgICAgICBpZiAoc3ViLnR5cGUgPT09ICdjYXRlZ29yeScpXG4gICAgICAgICAgICAgICAgc3dpdGNoIChzdWIuYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FjY2VwdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjYXRlZ29yeVRleHQgPSAnPCEtLUNyZWF0ZWQgYnkgV1A6QUZDIC0tPic7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3ViLmNvbnRhaW5lcikgY2F0ZWdvcnlUZXh0ICs9ICdcXG57e0NvbnRhaW5lciBjYXRlZ29yeX19JztcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1Yi5wYXJlbnRzICE9PSAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeVRleHQgPSBzdWIucGFyZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChjYXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1snICsgY2F0ICsgJ11dJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0UGFnZShzdWIudGl0bGUsIGNhdGVnb3J5VGV4dCwgJ0NyZWF0ZWQgdmlhIFtbV1A6QUZDfEFydGljbGVzIGZvciBDcmVhdGlvbl1dJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWxrVGV4dCA9ICd7e3N1YnN0OldQQUZDL2FydGljbGV8Y2xhc3M9Q2F0fX0nO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFsa1RpdGxlID0gbmV3IG13LlRpdGxlKHN1Yi50aXRsZSkuZ2V0VGFsa1BhZ2UoKS50b1RleHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRQYWdlKHRhbGtUaXRsZSwgdGFsa1RleHQsICdQbGFjaW5nIFdQQUZDIHByb2plY3QgYmFubmVyJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXIgPSB0ZXh0Lm1hdGNoKC89PVtePV0qPT0vKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBoZWFkZXIgKyAnXFxue3tBZkMtY3xhfX1cXG4nICsgdGV4dC5zbGljZShoZWFkZXIubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgKz0gc3ViLmNvbW1lbnQgPT09ICcnID8gJ1xcbip7e3N1YnN0OmFmYyBjYXRlZ29yeX19IH5+fn5cXG4nIDogJ1xcbip7e3N1YnN0OmFmYyBjYXRlZ29yeXxhY2NlcHR8Mj0nICsgc3ViLmNvbW1lbnQgKyAnfX0gfn5+flxcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICd7e0FmQy1jfGJ9fVxcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbEFjY2VwdCsrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlICdkZWNsaW5lJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyID0gdGV4dC5tYXRjaCgvPT1bXj1dKj09LylbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVhc29uID0gY2F0ZWdvcnlEZWNsaW5lUmVhc29uc1tzdWIucmVhc29uXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWFzb24gPT09ICcnKSByZWFzb24gPSBzdWIuY29tbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN1Yi5jb21tZW50ICE9PSAnJykgcmVhc29uID0gcmVhc29uICsgJzogJyArIHN1Yi5jb21tZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlYXNvbiA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdhZmNIZWxwZXJfc3RhdHVzJykuaHRtbCgkKCcjYWZjSGVscGVyX3N0YXR1cycpLmh0bWwoKSArICc8bGk+U2tpcHBpbmcgJyArIHN1Yi50aXRsZSArICc6IE5vIGRlY2xpbmUgcmVhc29uIHNwZWNpZmllZC48L2xpPicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IGhlYWRlciArICdcXG57e0FmQy1jfGR9fVxcbicgKyB0ZXh0LnNsaWNlKGhlYWRlci5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCArPSBzdWIuY29tbWVudCA9PT0gJycgPyAnXFxuKnt7c3Vic3Q6YWZjIGNhdGVnb3J5fCcgKyBzdWIucmVhc29uICsgJ319IH5+fn5cXG4nIDogJ1xcbip7e3N1YnN0OmFmYyBjYXRlZ29yeXxkZWNsaW5lfDI9JyArIHJlYXNvbiArICd9fSB+fn5+XFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgKz0gJ3t7QWZDLWN8Yn19XFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsRGVjbGluZSsrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlICdjb21tZW50Jzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1Yi5jb21tZW50ICE9PSAnJykgdGV4dCArPSAnXFxuXFxue3thZmMgY29tbWVudHwxPScgKyBzdWIuY29tbWVudCArICcgfn5+fn19XFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ29tbWVudCsrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBObyBkZWZhdWx0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlIHJlZGlyZWN0c1xuICAgICAgICAgICAgICAgIGxldCBhY2NlcHRDb21tZW50ID0gJyc7XG4gICAgICAgICAgICAgICAgbGV0IGRlY2xpbmVDb21tZW50ID0gJyc7XG4gICAgICAgICAgICAgICAgbGV0IG90aGVyQ29tbWVudCA9ICcnO1xuICAgICAgICAgICAgICAgIGxldCBhY2NlcHRDb3VudCA9IDAsXG4gICAgICAgICAgICAgICAgICAgIGRlY2xpbmVDb3VudCA9IDAsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRDb3VudCA9IDAsXG4gICAgICAgICAgICAgICAgICAgIGhhc0NvbW1lbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc3ViLmZyb20ubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZGlyZWN0ID0gc3ViLmZyb21baW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlZGlyZWN0LmFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWNjZXB0Jzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZGlyZWN0VGV4dCA9IGAjUkVESVJFQ1QgW1ske3JlZGlyZWN0LnRvfV1dJHtyZWRpcmVjdC5hcHBlbmQgPyBgXFxuXFxue3tSZWRpcmVjdCBjYXRlZ29yeSBzaGVsbHxcXG4ke3JlZGlyZWN0LmFwcGVuZH1cXG59fWAgOiAnJ31gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRQYWdlKHJlZGlyZWN0LnRpdGxlLCByZWRpcmVjdFRleHQsICdSZWRpcmVjdGVkIHBhZ2UgdG8gW1snICsgcmVkaXJlY3QudG8gKyAnXV0gdmlhIFtbV1A6QUZDfEFydGljbGVzIGZvciBDcmVhdGlvbl1dJywgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtd1RpdGxlID0gbmV3IG13LlRpdGxlKHJlZGlyZWN0LnRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW13VGl0bGUuaXNUYWxrUGFnZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG13VGFsa1RpdGxlID0gbXdUaXRsZS5nZXRUYWxrUGFnZSgpLnRvVGV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWxrVGV4dCA9ICd7e3N1YnN0OldQQUZDL3JlZGlyZWN0fX0nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRQYWdlKG13VGFsa1RpdGxlLCB0YWxrVGV4dCwgJ1BsYWNpbmcgV1BBRkMgcHJvamVjdCBiYW5uZXInLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0Q29tbWVudCArPSByZWRpcmVjdC50aXRsZSArICcgJnJhcnI7ICcgKyByZWRpcmVjdC50bztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVkaXJlY3QuY29tbWVudCA9PT0gJycpIGFjY2VwdENvbW1lbnQgKz0gJy4gJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0Q29tbWVudCArPSAnOiAnICsgcmVkaXJlY3QuY29tbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQ29tbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdENvdW50Kys7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RlY2xpbmUnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYXNvbiA9IHJlZGlyZWN0RGVjbGluZVJlYXNvbnNbcmVkaXJlY3QucmVhc29uXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVhc29uID09PSAnJykgcmVhc29uID0gcmVkaXJlY3QuY29tbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWRpcmVjdC5jb21tZW50ICE9PSAnJykgcmVhc29uID0gcmVhc29uICsgJzogJyArIHJlZGlyZWN0LmNvbW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlYXNvbiA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9zdGF0dXMnKS5odG1sKCQoJyNhZmNIZWxwZXJfc3RhdHVzJykuaHRtbCgpICsgJzxsaT5Ta2lwcGluZyAnICsgcmVkaXJlY3QudGl0bGUgKyAnOiBObyBkZWNsaW5lIHJlYXNvbiBzcGVjaWZpZWQuPC9saT4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xpbmVDb21tZW50ICs9IHJlZGlyZWN0LnJlYXNvbiA9PT0gJ2JsYW5rJyB8fCByZWRpcmVjdC5yZWFzb24gPT09ICdub3QtcmVkaXJlY3QnID8gcmVhc29uICsgJy4gJyA6IHJlZGlyZWN0LnRpdGxlICsgJyAmcmFycjsgJyArIHJlZGlyZWN0LnRvICsgJzogJyArIHJlYXNvbiArICcuICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbGluZUNvdW50Kys7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJDb21tZW50ICs9IHJlZGlyZWN0LnRpdGxlICsgJzogJyArIHJlZGlyZWN0LmNvbW1lbnQgKyAnLiAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRDb3VudCsrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IHJlYXNvbiA9ICcnO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFjY2VwdENvdW50ID4gMCkgcmVhc29uICs9ICdcXG4qe3tzdWJzdDphZmMgcmVkaXJlY3R8YWNjZXB0fDI9JyArIGFjY2VwdENvbW1lbnQgKyAnIFRoYW5rIHlvdSBmb3IgeW91ciBjb250cmlidXRpb25zIHRvIFdpa2lwZWRpYSF9fSB+fn5+JztcbiAgICAgICAgICAgICAgICBpZiAoZGVjbGluZUNvdW50ID4gMCkgcmVhc29uICs9ICdcXG4qe3tzdWJzdDphZmMgcmVkaXJlY3R8ZGVjbGluZXwyPScgKyBkZWNsaW5lQ29tbWVudCArICd9fSB+fn5+JztcbiAgICAgICAgICAgICAgICBpZiAoY29tbWVudENvdW50ID4gMCkgcmVhc29uICs9ICdcXG4qe3thZmMgY29tbWVudHwxPScgKyBvdGhlckNvbW1lbnQgKyAnfn5+fn19JztcbiAgICAgICAgICAgICAgICByZWFzb24gKz0gJ1xcbic7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNDb21tZW50ICYmIGFjY2VwdENvdW50ID09PSBzdWIuZnJvbS5sZW5ndGgpIHJlYXNvbiA9IGFjY2VwdENvdW50ID4gMSA/ICdcXG4qe3tzdWJzdDphZmMgcmVkaXJlY3R8YWxsfX0gfn5+flxcbicgOiAnXFxuKnt7c3Vic3Q6YWZjIHJlZGlyZWN0fX0gfn5+flxcbic7XG5cbiAgICAgICAgICAgICAgICBpZiAoYWNjZXB0Q291bnQgKyBkZWNsaW5lQ291bnQgKyBjb21tZW50Q291bnQgPiAwKVxuICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXB0Q291bnQgKyBkZWNsaW5lQ291bnQgPT09IHN1Yi5mcm9tLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXZlcnkgcmVxdWVzdCBoYW5kbGVkLCBjbG9zZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyID0gdGV4dC5tYXRjaCgvPT1bXj1dKj09LylbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXB0Q291bnQgPiAwICYmIGRlY2xpbmVDb3VudCA+IDApIHRleHQgPSBoZWFkZXIgKyAnXFxue3tBZkMtY3xwfX0nICsgdGV4dC5zbGljZShoZWFkZXIubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFjY2VwdENvdW50ID4gMCkgdGV4dCA9IGhlYWRlciArICdcXG57e0FmQy1jfGF9fScgKyB0ZXh0LnNsaWNlKGhlYWRlci5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0ZXh0ID0gaGVhZGVyICsgJ1xcbnt7QWZDLWN8ZH19JyArIHRleHQuc2xpY2UoaGVhZGVyLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlYXNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgKz0gJ3t7QWZDLWN8Yn19XFxuJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRleHQgKz0gcmVhc29uICsgJ1xcbic7XG5cbiAgICAgICAgICAgICAgICB0b3RhbEFjY2VwdCArPSBhY2NlcHRDb3VudDtcbiAgICAgICAgICAgICAgICB0b3RhbERlY2xpbmUgKz0gZGVjbGluZUNvdW50O1xuICAgICAgICAgICAgICAgIHRvdGFsQ29tbWVudCArPSBjb21tZW50Q291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYWdlVGV4dCA9IHBhZ2VUZXh0LnNsaWNlKDAsIE1hdGgubWF4KDAsIHN0YXJ0SW5kZXgpKSArIHRleHQgKyBwYWdlVGV4dC5zbGljZShNYXRoLm1heCgwLCBlbmRJbmRleCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHN1bW1hcnkgPSAnVXBkYXRpbmcgc3VibWlzc2lvbiBzdGF0dXM6JztcbiAgICAgICAgaWYgKHRvdGFsQWNjZXB0ID4gMCkgc3VtbWFyeSArPSAnIGFjY2VwdGluZyAnICsgdG90YWxBY2NlcHQgKyAnIHJlcXVlc3QnICsgKHRvdGFsQWNjZXB0ID4gMSA/ICdzJyA6ICcnKTtcbiAgICAgICAgaWYgKHRvdGFsRGVjbGluZSA+IDApIHtcbiAgICAgICAgICAgIGlmICh0b3RhbEFjY2VwdCA+IDApIHN1bW1hcnkgKz0gJywnO1xuICAgICAgICAgICAgc3VtbWFyeSArPSAnIGRlY2xpbmluZyAnICsgdG90YWxEZWNsaW5lICsgJyByZXF1ZXN0JyArICh0b3RhbERlY2xpbmUgPiAxID8gJ3MnIDogJycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b3RhbENvbW1lbnQgPiAwKSB7XG4gICAgICAgICAgICBpZiAodG90YWxBY2NlcHQgPiAwIHx8IHRvdGFsRGVjbGluZSA+IDApIHN1bW1hcnkgKz0gJywnO1xuICAgICAgICAgICAgc3VtbWFyeSArPSAnIGNvbW1lbnRpbmcgb24gJyArIHRvdGFsQ29tbWVudCArICcgcmVxdWVzdCcgKyAodG90YWxDb21tZW50ID4gMSA/ICdzJyA6ICcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVkaXRQYWdlKHJlZGlyZWN0UGFnZU5hbWUsIHBhZ2VUZXh0LCBzdW1tYXJ5LCBmYWxzZSk7XG5cbiAgICAgICAgLy8gRGlzcGxheSB0aGUgXCJEb25lXCIgdGV4dCBvbmx5IGFmdGVyIGFsbCBhamF4IHJlcXVlc3RzIGFyZSBjb21wbGV0ZWRcbiAgICAgICAgJChkb2N1bWVudCkuYWpheFN0b3AoKCkgPT4ge1xuICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9maW5pc2hlZF9tYWluJykuY3NzKCdkaXNwbGF5JywgJycpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB0ZXh0IG9mIGEgcGFnZS5cbiAgICAgKiBAcGFyYW0gdGl0bGUgVGhlIHRpdGxlIG9mIHRoZSBwYWdlIHRvIGdldC5cbiAgICAgKiBAcGFyYW0gYWRkU3RhdHVzIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIEhUTUwgc3RyaW5nIHRvIHJlcG9ydCBzdGF0dXMuXG4gICAgICogQHJldHVybnMgVGhlIHRleHQgb2YgdGhlIHBhZ2UuXG4gICAgICovXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0UGFnZVRleHQodGl0bGU6IHN0cmluZywgYWRkU3RhdHVzOiAoc3RhdHVzOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgYWRkU3RhdHVzID0gYWRkU3RhdHVzID8/IGZ1bmN0aW9uICgpIHt9OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICBhZGRTdGF0dXMoXG4gICAgICAgICAgICAnPGxpIGlkPVwiYWZjSGVscGVyX2dldCcgKyBqcUVzY2FwZSh0aXRsZSkgKyAnXCI+R2V0dGluZyA8YSBocmVmPVwiJyArIG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZVBhdGgnKS5yZXBsYWNlKCckMScsIGVuY29kZVVSSSh0aXRsZSkpICsgJ1wiIHRpdGxlPVwiJyArIHRpdGxlICsgJ1wiPicgKyB0aXRsZSArICc8L2E+PC9saT4nLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgIC8vICAgICBhY3Rpb246ICdxdWVyeScsXG4gICAgICAgIC8vICAgICBwcm9wOiAncmV2aXNpb25zJyxcbiAgICAgICAgLy8gICAgIHJ2cHJvcDogJ2NvbnRlbnQnLFxuICAgICAgICAvLyAgICAgZm9ybWF0OiAnanNvbicsXG4gICAgICAgIC8vICAgICBpbmRleHBhZ2VpZHM6IHRydWUsXG4gICAgICAgIC8vICAgICB0aXRsZXM6IHRpdGxlLFxuICAgICAgICAvLyB9O1xuXG4gICAgICAgIC8vIGNvbnN0IHJlc3BvbnNlID0gSlNPTi5wYXJzZShcbiAgICAgICAgLy8gICAgICQuYWpheCh7XG4gICAgICAgIC8vICAgICAgICAgdXJsOiBtdy51dGlsLndpa2lTY3JpcHQoJ2FwaScpLFxuICAgICAgICAvLyAgICAgICAgIGRhdGE6IHJlcXVlc3QsXG4gICAgICAgIC8vICAgICAgICAgYXN5bmM6IGZhbHNlLFxuICAgICAgICAvLyAgICAgfSkucmVzcG9uc2VUZXh0LFxuICAgICAgICAvLyApO1xuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbmV3IG13LkFwaSgpLmdldCh7IGFjdGlvbjogJ3F1ZXJ5JywgcHJvcDogJ3JldmlzaW9ucycsIHJ2cHJvcDogJ2NvbnRlbnQnLCBmb3JtYXQ6ICdqc29uJywgaW5kZXhwYWdlaWRzOiB0cnVlLCB0aXRsZXM6IHRpdGxlIH0pO1xuXG4gICAgICAgIGNvbnN0IHBhZ2VJZCA9IHJlc3BvbnNlLnF1ZXJ5LnBhZ2VpZHNbMF07XG4gICAgICAgIGlmIChwYWdlSWQgPT09ICctMScpIHtcbiAgICAgICAgICAgIGFkZFN0YXR1cygnVGhlIHBhZ2UgPGEgY2xhc3M9XCJuZXdcIiBocmVmPVwiJyArIG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZVBhdGgnKS5yZXBsYWNlKCckMScsIGVuY29kZVVSSSh0aXRsZSkpICsgJ1wiIHRpdGxlPVwiJyArIHRpdGxlICsgJ1wiPicgKyB0aXRsZSArICc8L2E+IGRvZXMgbm90IGV4aXN0Jyk7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VGV4dCA9IHJlc3BvbnNlLnF1ZXJ5LnBhZ2VzW3BhZ2VJZF0ucmV2aXNpb25zWzBdWycqJ107XG4gICAgICAgIGFkZFN0YXR1cygnPGxpIGlkPVwiYWZjSGVscGVyX2dldCcgKyBqcUVzY2FwZSh0aXRsZSkgKyAnXCI+R290IDxhIGhyZWY9XCInICsgbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlUGF0aCcpLnJlcGxhY2UoJyQxJywgZW5jb2RlVVJJKHRpdGxlKSkgKyAnXCIgdGl0bGU9XCInICsgdGl0bGUgKyAnXCI+JyArIHRpdGxlICsgJzwvYT48L2xpPicpO1xuICAgICAgICByZXR1cm4gbmV3VGV4dDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhbnMgdXAgdGhlIGxpbmtzIGluIGEgcGFnZS5cbiAgICAgKiBAcGFyYW0gdGV4dCBUaGUgcGFnZSBjb250ZW50LlxuICAgICAqIEByZXR1cm5zIFRoZSBwYWdlIGNvbnRlbnQgd2l0aCB0aGUgbGlua3MgY2xlYW5lZCB1cC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbGVhbnVwTGlua3ModGV4dDogc3RyaW5nKSB7XG4gICAgICAgIC8vIENvbnZlcnQgZXh0ZXJuYWwgbGlua3MgdG8gV2lraXBlZGlhIGFydGljbGVzIHRvIHByb3BlciB3aWtpbGlua3NcbiAgICAgICAgY29uc3Qgd2lraWxpbmtSZWdleCA9IC8oXFxbKXsxLDJ9KD86aHR0cHM/Oik/XFwvXFwvKGVuLndpa2lwZWRpYS5vcmdcXC93aWtpfGVud3Aub3JnKVxcLyhbXlxcc1tcXF18XSspKFtcXHN8XSk/KCg/OlxcW1xcW1teW1xcXV0qXV18W15bXFxdXSkqKShdKXsxLDJ9L2dpO1xuICAgICAgICBjb25zdCB0ZW1wb3JhcnlUZXh0ID0gdGV4dDtcbiAgICAgICAgbGV0IG1hdGNoO1xuICAgICAgICB3aGlsZSAoKG1hdGNoID0gd2lraWxpbmtSZWdleC5leGVjKHRlbXBvcmFyeVRleHQpKSkge1xuICAgICAgICAgICAgY29uc3QgcGFnZU5hbWUgPSBkZWNvZGVVUkkobWF0Y2hbM10ucmVwbGFjZUFsbCgnXycsICcgJykpO1xuICAgICAgICAgICAgbGV0IGRpc3BsYXluYW1lID0gZGVjb2RlVVJJKG1hdGNoWzVdLnJlcGxhY2VBbGwoJ18nLCAnICcpKTtcbiAgICAgICAgICAgIGlmIChwYWdlTmFtZSA9PT0gZGlzcGxheW5hbWUpIGRpc3BsYXluYW1lID0gJyc7XG4gICAgICAgICAgICBjb25zdCByZXBsYWNlVGV4dCA9ICdbWycgKyBwYWdlTmFtZSArIChkaXNwbGF5bmFtZSA/ICd8JyArIGRpc3BsYXluYW1lIDogJycpICsgJ11dJztcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UobWF0Y2hbMF0sIHJlcGxhY2VUZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgdGhlIHNlbGVjdCBlbGVtZW50IG91dGVyIEhUTUwgZm9yIGEgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdGl0bGUgVGhlIHBhZ2UgdGl0bGUuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIHNlbGVjdCBlbGVtZW50IG9wdGlvbnMuXG4gICAgICogQHJldHVybnMgVGhlIHNlbGVjdCBlbGVtZW50IG91dGVyIEhUTUwuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVTZWxlY3QodGl0bGU6IHN0cmluZywgb3B0aW9uczogb2JqZWN0W10pIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRlU2VsZWN0T2JqZWN0KHRpdGxlLCBvcHRpb25zKS5wcm9wKCdvdXRlckhUTUwnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBzZWxlY3QgZWxlbWVudCBmb3IgYSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB0aXRsZSBUaGUgcGFnZSB0aXRsZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgc2VsZWN0IGVsZW1lbnQgb3B0aW9ucy5cbiAgICAgKiBAcGFyYW0gb25jaGFuZ2UgVGhlIG9uY2hhbmdlIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIFRoZSBzZWxlY3QgalF1ZXJ5IGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVTZWxlY3RPYmplY3QodGl0bGU6IHN0cmluZywgb3B0aW9uczogb2JqZWN0W10sIG9uY2hhbmdlPzogRnVuY3Rpb24pIHtcbiAgICAgICAgY29uc3QgJHNlbGVjdCA9ICQoJzxzZWxlY3Q+JykuYXR0cignbmFtZScsIHRpdGxlKS5hdHRyKCdpZCcsIHRpdGxlKTtcbiAgICAgICAgaWYgKG9uY2hhbmdlICE9PSBudWxsKSAkc2VsZWN0LmNoYW5nZShvbmNoYW5nZSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbi5sYWJlbEFuZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID0gb3B0aW9uLmxhYmVsQW5kVmFsdWU7XG4gICAgICAgICAgICAgICAgb3B0aW9uLmxhYmVsID0gb3B0aW9uLmxhYmVsQW5kVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkb3B0aW9uID0gJCgnPG9wdGlvbj4nKS5hcHBlbmRUbygkc2VsZWN0KS52YWwob3B0aW9uLnZhbHVlKS50ZXh0KG9wdGlvbi5sYWJlbCk7XG4gICAgICAgICAgICBpZiAob3B0aW9uLnNlbGVjdGVkKSAkb3B0aW9uLmF0dHIoJ3NlbGVjdGVkJywgJ3NlbGVjdGVkJyk7XG4gICAgICAgICAgICBpZiAob3B0aW9uLmRpc2FibGVkKSAkb3B0aW9uLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICRzZWxlY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9sZCBtdy51dGlsLmpzTWVzc2FnZSBmdW5jdGlvbiBiZWZvcmUgaHR0cHM6Ly9nZXJyaXQud2lraW1lZGlhLm9yZy9yLyMvYy8xNzYwNS8sIHdoaWNoXG4gICAgICogaW50cm9kdWNlZCB0aGUgc2lsbHkgYXV0by1oaWRlIGZ1bmN0aW9uLiBBbHNvIHdpdGggdGhlIG9yaWdpbmFsIHN0eWxlcy5cbiAgICAgKiBBZGQgYSBsaXR0bGUgYm94IGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVlbiB0byBpbmZvcm0gdGhlIHVzZXIgb2ZcbiAgICAgKiBzb21ldGhpbmcsIHJlcGxhY2luZyBhbnkgcHJldmlvdXMgbWVzc2FnZS5cbiAgICAgKiBDYWxsaW5nIHdpdGggbm8gYXJndW1lbnRzLCB3aXRoIGFuIGVtcHR5IHN0cmluZyBvciBudWxsIHdpbGwgaGlkZSB0aGUgbWVzc2FnZVxuICAgICAqIFRha2VuIGZyb20gW1tVc2VyOlRpbW90aGV1cyBDYW5lbnMvZGlzcGxheW1lc3NhZ2UuanNdXS5cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgRE9NLWVsZW1lbnQsIGpRdWVyeSBvYmplY3Qgb3IgSFRNTC1zdHJpbmcgdG8gYmUgcHV0IGluc2lkZSB0aGUgbWVzc2FnZSBib3guXG4gICAgICogQHBhcmFtIGNsYXNzTmFtZSBVc2VkIGluIGFkZGluZyBhIGNsYXNzOyBzaG91bGQgYmUgZGlmZmVyZW50IGZvciBlYWNoIGNhbGwgdG8gYWxsb3cgQ1NTL0pTIHRvIGhpZGUgZGlmZmVyZW50IGJveGVzLiBOdWxsID0gbm8gY2xhc3MgdXNlZC5cbiAgICAgKiBAcmV0dXJucyBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGlzcGxheU1lc3NhZ2UobWVzc2FnZTogSFRNTEVsZW1lbnQgfCBKUXVlcnkgfCBzdHJpbmcsIGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwIHx8IG1lc3NhZ2UgPT09ICcnIHx8IG1lc3NhZ2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgICQoJyNkaXNwbGF5LW1lc3NhZ2UnKS5lbXB0eSgpLmhpZGUoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBFbXB0eWluZyBhbmQgaGlkaW5nIG1lc3NhZ2UgaXMgaW50ZW5kZWQgYmVoYXZpb3VyLCByZXR1cm4gdHJ1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gV2Ugc3BlY2lhbC1jYXNlIHNraW4gc3RydWN0dXJlcyBwcm92aWRlZCBieSB0aGUgc29mdHdhcmUuIFNraW5zIHRoYXRcbiAgICAgICAgICAgIC8vIGNob29zZSB0byBhYmFuZG9uIG9yIHNpZ25pZmljYW50bHkgbW9kaWZ5IG91ciBmb3JtYXR0aW5nIGNhbiBqdXN0IGRlZmluZVxuICAgICAgICAgICAgLy8gYW4gbXctanMtbWVzc2FnZSBkaXYgdG8gc3RhcnQgd2l0aC5cbiAgICAgICAgICAgIGxldCAkbWVzc2FnZURpdiA9ICQoJyNkaXNwbGF5LW1lc3NhZ2UnKTtcbiAgICAgICAgICAgIGlmICgkbWVzc2FnZURpdi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAkbWVzc2FnZURpdiA9ICQoJzxkaXYgaWQ9XCJkaXNwbGF5LW1lc3NhZ2VcIiBzdHlsZT1cIm1hcmdpbjoxZW07cGFkZGluZzowLjVlbSAyLjUlO2JvcmRlcjpzb2xpZCAxcHggI2RkZDtiYWNrZ3JvdW5kLWNvbG9yOiNmY2ZjZmM7Zm9udC1zaXplOiAwLjhlbVwiPjwvZGl2PicpO1xuICAgICAgICAgICAgICAgIGlmIChtdy51dGlsLiRjb250ZW50Lmxlbmd0aCA+IDApIG13LnV0aWwuJGNvbnRlbnQucHJlcGVuZCgkbWVzc2FnZURpdik7XG4gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2xhc3NOYW1lKSAkbWVzc2FnZURpdi5wcm9wKCdjbGFzcycsICdkaXNwbGF5LW1lc3NhZ2UtJyArIGNsYXNzTmFtZSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgJG1lc3NhZ2VEaXYuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICAkbWVzc2FnZURpdi5hcHBlbmQobWVzc2FnZSk7XG4gICAgICAgICAgICB9IGVsc2UgJG1lc3NhZ2VEaXYuaHRtbChtZXNzYWdlKTtcbiAgICAgICAgICAgICRtZXNzYWdlRGl2WzBdLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVzY2FwZXMgYSBzdHJpbmcgZm9yIHVzZSBpbiBqUXVlcnkgc2VsZWN0b3JzLlxuICAgICAqIEBwYXJhbSBleHByZXNzaW9uIFRoZSBleHByZXNzaW9uIHRvIGVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBleHByZXNzaW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGpxRXNjYXBlKGV4cHJlc3Npb246IHN0cmluZykge1xuICAgICAgICByZXR1cm4gZXhwcmVzc2lvbi5yZXBsYWNlQWxsKC9bICFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxcXFxcXV5ge3x9fl0vZywgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVkaXRzIGEgZ2l2ZW4gcGFnZSwgYW5kIHVwZGF0ZXMgdGhlIFVJLlxuICAgICAqIEBwYXJhbSB0aXRsZSBUaGUgcGFnZSB0aXRsZSB0byBlZGl0LlxuICAgICAqIEBwYXJhbSBuZXdUZXh0IFRoZSBuZXcgdGV4dCB0byBpbnNlcnQuXG4gICAgICogQHBhcmFtIHN1bW1hcnkgVGhlIGVkaXQgc3VtbWFyeS5cbiAgICAgKiBAcGFyYW0gY3JlYXRlT25seSBXaGV0aGVyIHRvIG9ubHkgY3JlYXRlIHRoZSBwYWdlIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gICAgICogQHBhcmFtIG5vUGF0cm9sIFdoZXRoZXIgdG8gbm90IG1hcmsgdGhlIGVkaXQgYXMgcGF0cm9sbGVkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVkaXRQYWdlKHRpdGxlOiBzdHJpbmcsIG5ld1RleHQ6IHN0cmluZywgc3VtbWFyeTogc3RyaW5nLCBjcmVhdGVPbmx5OiBib29sZWFuLCBub1BhdHJvbDogYm9vbGVhbikge1xuICAgICAgICBjb25zdCB3Z0FydGljbGVQYXRoID0gbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlUGF0aCcpO1xuICAgICAgICBzdW1tYXJ5ICs9IHN1bW1hcnlBZHZlcnQ7XG4gICAgICAgICQoJyNhZmNIZWxwZXJfZmluaXNoZWRfd3JhcHBlcicpLmh0bWwoJzxzcGFuIGlkPVwiYWZjSGVscGVyX0FKQVhfZmluaXNoZWRfJyArIGFqYXhOdW1iZXIgKyAnXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj4nICsgJCgnI2FmY0hlbHBlcl9maW5pc2hlZF93cmFwcGVyJykuaHRtbCgpICsgJzwvc3Bhbj4nKTtcbiAgICAgICAgY29uc3QgZnVuY3Rpb25JZCA9IGFqYXhOdW1iZXI7XG4gICAgICAgIGFqYXhOdW1iZXIrKztcbiAgICAgICAgJCgnI2FmY0hlbHBlcl9zdGF0dXMnKS5odG1sKFxuICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9zdGF0dXMnKS5odG1sKCkgK1xuICAgICAgICAgICAgICAgICc8bGkgaWQ9XCJhZmNIZWxwZXJfZWRpdCcgK1xuICAgICAgICAgICAgICAgIGpxRXNjYXBlKHRpdGxlKSArXG4gICAgICAgICAgICAgICAgJ1wiPkVkaXRpbmcgPGEgaHJlZj1cIicgK1xuICAgICAgICAgICAgICAgIHdnQXJ0aWNsZVBhdGgucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSArXG4gICAgICAgICAgICAgICAgJ1wiIHRpdGxlPVwiJyArXG4gICAgICAgICAgICAgICAgdGl0bGUgK1xuICAgICAgICAgICAgICAgICdcIj4nICtcbiAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgJzwvYT48L2xpPicsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgICAgICBhY3Rpb246ICdlZGl0JyxcbiAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgdGV4dDogbmV3VGV4dCxcbiAgICAgICAgICAgIHN1bW1hcnksXG4gICAgICAgIH07XG4gICAgICAgIGlmIChjcmVhdGVPbmx5KSByZXF1ZXN0LmNyZWF0ZW9ubHkgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGFwaSA9IG5ldyBtdy5BcGkoKTtcbiAgICAgICAgYXBpLnBvc3RXaXRoRWRpdFRva2VuKHJlcXVlc3QpXG4gICAgICAgICAgICAuZG9uZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhPy5lZGl0Py5yZXN1bHQgJiYgZGF0YS5lZGl0LnJlc3VsdCA9PT0gJ1N1Y2Nlc3MnKVxuICAgICAgICAgICAgICAgICAgICAkKCcjYWZjSGVscGVyX2VkaXQnICsganFFc2NhcGUodGl0bGUpKS5odG1sKCdTYXZlZCA8YSBocmVmPVwiJyArIHdnQXJ0aWNsZVBhdGgucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSArICdcIiB0aXRsZT1cIicgKyB0aXRsZSArICdcIj4nICsgdGl0bGUgKyAnPC9hPicpO1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkKCcjYWZjSGVscGVyX2VkaXQnICsganFFc2NhcGUodGl0bGUpKS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwiYWZjSGVscGVyX25vdGljZVwiPjxiPkVkaXQgZmFpbGVkIG9uIDxhIGhyZWY9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Z0FydGljbGVQYXRoLnJlcGxhY2UoJyQxJywgZW5jb2RlVVJJKHRpdGxlKSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiB0aXRsZT1cIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2E+PC9iPjwvc3Bhbj4uIEVycm9yIGluZm86ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFZGl0IGZhaWxlZCBvbiAlcyAoJXMpLiBFcnJvciBpbmZvOiAlcycsIHdnQXJ0aWNsZVBhdGgucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSwgdGl0bGUsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZhaWwoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNyZWF0ZU9ubHkgJiYgZXJyb3IgPT09ICdhcnRpY2xlZXhpc3RzJylcbiAgICAgICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9lZGl0JyArIGpxRXNjYXBlKHRpdGxlKSkuaHRtbChcbiAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz1cImFmY0hlbHBlcl9ub3RpY2VcIj48Yj5FZGl0IGZhaWxlZCBvbiA8YSBocmVmPVwiJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2dBcnRpY2xlUGF0aC5yZXBsYWNlKCckMScsIGVuY29kZVVSSSh0aXRsZSkpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCIgdGl0bGU9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9hPjwvYj48L3NwYW4+LiBFcnJvciBpbmZvOiBUaGUgYXJ0aWNsZSBhbHJlYWR5IGV4aXN0cyEnLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9lZGl0JyArIGpxRXNjYXBlKHRpdGxlKSkuaHRtbChcbiAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz1cImFmY0hlbHBlcl9ub3RpY2VcIj48Yj5FZGl0IGZhaWxlZCBvbiA8YSBocmVmPVwiJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2dBcnRpY2xlUGF0aC5yZXBsYWNlKCckMScsIGVuY29kZVVSSSh0aXRsZSkpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCIgdGl0bGU9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9hPjwvYj48L3NwYW4+LiBFcnJvciBpbmZvOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWx3YXlzKCgpID0+IHtcbiAgICAgICAgICAgICAgICAkKCcjYWZjSGVscGVyX0FKQVhfZmluaXNoZWRfJyArIGZ1bmN0aW9uSWQpLmNzcygnZGlzcGxheScsICcnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghbm9QYXRyb2wgLyogV2UgcGF0cm9sIGJ5IGRlZmF1bHQgKi8gJiYgJCgnLnBhdHJvbGxpbmsnKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyBFeHRyYWN0IHRoZSByY2lkIHRva2VuIGZyb20gdGhlIFwiTWFyayBwYWdlIGFzIHBhdHJvbGxlZFwiIGxpbmsgb24gcGFnZVxuICAgICAgICAgICAgY29uc3QgcGF0cm9sSHJlZiA9ICQoJy5wYXRyb2xsaW5rIGEnKS5hdHRyKCdocmVmJyk7XG4gICAgICAgICAgICBjb25zdCByY0lkID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCdyY2lkJywgcGF0cm9sSHJlZik7XG5cbiAgICAgICAgICAgIGlmIChyY0lkKSB7XG4gICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9zdGF0dXMnKS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAkKCcjYWZjSGVscGVyX3N0YXR1cycpLmh0bWwoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPGxpIGlkPVwiYWZjSGVscGVyX3BhdHJvbCcgK1xuICAgICAgICAgICAgICAgICAgICAgICAganFFc2NhcGUodGl0bGUpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcIj5NYXJraW5nIDxhIGhyZWY9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdnQXJ0aWNsZVBhdGgucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXCIgdGl0bGU9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgYXMgcGF0cm9sbGVkPC9hPjwvbGk+JyxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdHJvbFJlcXVlc3QgPSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3BhdHJvbCcsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ2pzb24nLFxuICAgICAgICAgICAgICAgICAgICByY2lkOiByY0lkLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYXBpLnBvc3RXaXRoVG9rZW4oJ3BhdHJvbCcsIHBhdHJvbFJlcXVlc3QpXG4gICAgICAgICAgICAgICAgICAgIC5kb25lKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYWZjSGVscGVyX3BhdHJvbCcgKyBqcUVzY2FwZSh0aXRsZSkpLmh0bWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNYXJrZWQgPGEgaHJlZj1cIicgKyB3Z0FydGljbGVQYXRoLnJlcGxhY2UoJyQxJywgZW5jb2RlVVJJKHRpdGxlKSkgKyAnXCIgdGl0bGU9XCInICsgdGl0bGUgKyAnXCI+JyArIHRpdGxlICsgJzwvYT4gYXMgcGF0cm9sbGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9wYXRyb2wnICsganFFc2NhcGUodGl0bGUpKS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9XCJhZmNIZWxwZXJfbm90aWNlXCI+PGI+UGF0cm9sbGluZyBmYWlsZWQgb24gPGEgaHJlZj1cIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2dBcnRpY2xlUGF0aC5yZXBsYWNlKCckMScsIGVuY29kZVVSSSh0aXRsZSkpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiB0aXRsZT1cIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvYT48L2I+PC9zcGFuPiB3aXRoIGFuIHVua25vd24gZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignUGF0cm9sbGluZyBmYWlsZWQgb24gJXMgKCVzKSB3aXRoIGFuIHVua25vd24gZXJyb3IuJywgd2dBcnRpY2xlUGF0aC5yZXBsYWNlKCckMScsIGVuY29kZVVSSSh0aXRsZSkpLCB0aXRsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5mYWlsKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2FmY0hlbHBlcl9wYXRyb2wnICsganFFc2NhcGUodGl0bGUpKS5odG1sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz1cImFmY0hlbHBlcl9ub3RpY2VcIj48Yj5QYXRyb2xsaW5nIGZhaWxlZCBvbiA8YSBocmVmPVwiJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdnQXJ0aWNsZVBhdGgucmVwbGFjZSgnJDEnLCBlbmNvZGVVUkkodGl0bGUpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIiB0aXRsZT1cIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9hPjwvYj48L3NwYW4+LiBFcnJvciBpbmZvOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG13LmxvYWRlci51c2luZyhbJ21lZGlhd2lraS5hcGknLCAnbWVkaWF3aWtpLnV0aWwnXSwgKCkgPT4ge1xuICAgICAgICBtdy51dGlsLmFkZENTUyhgXG4jZGlzcGxheS1tZXNzYWdlICoge1xuICAgIG1hcmdpbjogcmV2ZXJ0O1xuICAgIGJvcmRlcjogcmV2ZXJ0O1xuICAgIGJhY2tncm91bmQ6IHJldmVydDtcbiAgICBwYWRkaW5nOiByZXZlcnQ7XG59YCk7XG5cbiAgICAgICAgY29uc3QgcmVkaXJlY3RQb3J0bGV0TGluayA9IG13LnV0aWwuYWRkUG9ydGxldExpbmsobXcuY29uZmlnLmdldCgnc2tpbicpID09PSAnbWluZXJ2YScgPyAncC10YicgOiAncC1jYWN0aW9ucycsICcjJywgJ1JldmlldyBBRkMvUkMnLCAnY2EtYWZjcmhzJywgJ1JldmlldycsICdhJyk7XG4gICAgICAgICQocmVkaXJlY3RQb3J0bGV0TGluaykuY2xpY2soKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgLy8gQ2xlYXIgdmFyaWFibGVzIGZvciB0aGUgY2FzZSBzb21lYm9keSBpcyBjbGlja2luZyBvbiBcInJldmlld1wiIG11bHRpcGxlIHRpbWVzXG4gICAgICAgICAgICByZWRpcmVjdFN1Ym1pc3Npb25zLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICByZWRpcmVjdFNlY3Rpb25zLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICBudW1iZXJUb3RhbCA9IDA7XG4gICAgICAgICAgICBzdWJtaXNzaW9ucy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgbmVlZHNVcGRhdGUubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIHJlZGlyZWN0SW5pdCgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn0pKCk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Y0FBQyxVQUFZLENBQ1QsR0FBSSxHQUFHLE9BQU8sSUFBSSxZQUFZLElBQU0sNkNBQStDLEdBQUcsT0FBTyxJQUFJLFlBQVksSUFBTSw2Q0FBOEMsT0FFakssTUFBTUEsRUFBbUIsR0FBRyxPQUFPLElBQUksWUFBWSxFQUFFLFdBQVcsSUFBSyxHQUFHLEVBQ2xFQyxFQUFzQixDQUFDLEVBQzdCLElBQUlDLEVBQW1CLENBQUMsRUFDeEIsTUFBTUMsRUFBZ0IsOENBQ3RCLElBQUlDLEVBQWMsRUFDZEMsRUFBYSxFQUNqQixNQUFNQyxFQUFjLENBQUMsRUFDZkMsRUFBYyxDQUFDLEVBQ2ZDLEVBQXlCLENBQzNCLE9BQVEsc0RBQ1IsTUFBTyxxQ0FDUCxZQUFhLGlKQUNiLFNBQVUsd0hBQ1YsZUFBZ0IseUNBQ2hCLE9BQVEsRUFDWixFQUNNQyxFQUF5QixDQUMzQixPQUFRLHlEQUNSLE1BQU8scUNBQ1AsU0FBVSx5RUFDVixlQUFnQix5Q0FDaEIsT0FBUSxFQUNaLEVBS0EsZUFBZUMsR0FBZSxDQUMxQixJQUFJQyxFQUFXLE1BQU1DLEVBQVlaLENBQWdCLEVBRWpEVyxFQUFXRSxFQUFhRixDQUFRLEVBR2hDLE1BQU1HLEVBQWUsVUFDckJILEVBQVdBLEVBQVMsTUFB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QUMsQ0FDVCxDQUNKLENBQ0osQ0FFQSxHQUFHLE9BQU8sTUFBTSxDQUFDLGdCQUFpQixnQkFBZ0IsRUFBRyxJQUFNLENBQ3ZELEdBQUcsS0FBSyxPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXJCLEVBRU0sTUFBTUksRUFBc0IsR0FBRyxLQUFLLGVBQWUsR0FBRyxPQUFPLElBQUksTUFBTSxJQUFNLFVBQVksT0FBUyxhQUFjLElBQUssZ0JBQWlCLFlBQWEsU0FBVSxHQUFHLEVBQ2hLLEVBQUVBLENBQW1CLEVBQUUsTUFBT0MsR0FBVSxDQUNwQ0EsRUFBTSxlQUFlLEVBRXJCbEgsRUFBb0IsT0FBUyxFQUM3QkMsRUFBaUIsT0FBUyxFQUMxQkUsRUFBYyxFQUNkRSxFQUFZLE9BQVMsRUFDckJDLEVBQVksT0FBUyxFQUNyQkcsRUFBYSxDQUNqQixDQUFDLENBQ0wsQ0FBQyxDQUNMLEdBQUciLAogICJuYW1lcyI6IFsicmVkaXJlY3RQYWdlTmFtZSIsICJyZWRpcmVjdFN1Ym1pc3Npb25zIiwgInJlZGlyZWN0U2VjdGlvbnMiLCAic3VtbWFyeUFkdmVydCIsICJudW1iZXJUb3RhbCIsICJhamF4TnVtYmVyIiwgInN1Ym1pc3Npb25zIiwgIm5lZWRzVXBkYXRlIiwgInJlZGlyZWN0RGVjbGluZVJlYXNvbnMiLCAiY2F0ZWdvcnlEZWNsaW5lUmVhc29ucyIsICJyZWRpcmVjdEluaXQiLCAicGFnZVRleHQiLCAiZ2V0UGFnZVRleHQiLCAiY2xlYW51cExpbmtzIiwgInNlY3Rpb25SZWdleCIsICJpbmRleCIsICJyZWRpcmVjdFNlY3Rpb24iLCAiaGVhZGVyIiwgIndpa2lsaW5rUmVnZXgiLCAibGlua3MiLCAibCIsICJ0byIsICJyZWFzb25NYXRjaCIsICJyZWFzb24iLCAic291cmNlTWF0Y2giLCAic291cmNlIiwgInN1Ym1pc3Npb24iLCAibGluayIsICJzdWIiLCAiY2F0ZWdvcnlOYW1lIiwgInJlcXVlc3RUZXh0IiwgInBhcmVudEhlYWRpbmdJbmRleCIsICJwYXJlbnRDYXRlZ29yaWVzIiwgInBhcmVudENhdGVnb3J5TWF0Y2giLCAicGFyZW50Q2F0ZWdvcmllc1JlZ2V4IiwgIiRmb3JtIiwgImRpc3BsYXlNZXNzYWdlIiwgIiRtZXNzYWdlRGl2IiwgInJlZGlyZWN0RW1wdHkiLCAiQUNUSU9OUyIsICJyZWRpcmVjdFN1Ym1pc3Npb24iLCAic3VibWlzc2lvbk5hbWUiLCAiJHRoaXNTdWJMaXN0IiwgIiR0aGlzU3ViTGlzdEVsZW1lbnQiLCAiJGZyb21MaXN0IiwgImZyb20iLCAidG9BcnRpY2xlIiwgInJlYXNvbkFuZFNvdXJjZSIsICJnb29nbGVTZWFyY2hVcmwiLCAiZ2VuZXJhdGVTZWxlY3RPYmplY3QiLCAicmVkaXJlY3RNYWtlQWN0aW9uQ2hhbmdlIiwgInN1YklkIiwgInJlZGlyZWN0UGVyZm9ybUFjdGlvbnMiLCAiZWxlbWVudCIsICJyZWRpcmVjdE9uQWN0aW9uQ2hhbmdlIiwgImlkIiwgIiRleHRyYSIsICJzZWxlY3RWYWx1ZSIsICJnZW5lcmF0ZVNlbGVjdCIsICJhY3Rpb24iLCAiYWRkU3RhdHVzIiwgInN0YXR1cyIsICJ0b3RhbEFjY2VwdCIsICJ0b3RhbERlY2xpbmUiLCAidG90YWxDb21tZW50IiwgInRleHQiLCAic3RhcnRJbmRleCIsICJlbmRJbmRleCIsICJjYXRlZ29yeVRleHQiLCAiY2F0IiwgImVkaXRQYWdlIiwgInRhbGtUZXh0IiwgInRhbGtUaXRsZSIsICJhY2NlcHRDb21tZW50IiwgImRlY2xpbmVDb21tZW50IiwgIm90aGVyQ29tbWVudCIsICJhY2NlcHRDb3VudCIsICJkZWNsaW5lQ291bnQiLCAiY29tbWVudENvdW50IiwgImhhc0NvbW1lbnQiLCAicmVkaXJlY3QiLCAicmVkaXJlY3RUZXh0IiwgIm13VGl0bGUiLCAibXdUYWxrVGl0bGUiLCAic3VtbWFyeSIsICJ0aXRsZSIsICJqcUVzY2FwZSIsICJyZXNwb25zZSIsICJwYWdlSWQiLCAibmV3VGV4dCIsICJ0ZW1wb3JhcnlUZXh0IiwgIm1hdGNoIiwgInBhZ2VOYW1lIiwgImRpc3BsYXluYW1lIiwgInJlcGxhY2VUZXh0IiwgIm9wdGlvbnMiLCAib25jaGFuZ2UiLCAiJHNlbGVjdCIsICJvcHRpb24iLCAiJG9wdGlvbiIsICJtZXNzYWdlIiwgImNsYXNzTmFtZSIsICJleHByZXNzaW9uIiwgImNyZWF0ZU9ubHkiLCAibm9QYXRyb2wiLCAid2dBcnRpY2xlUGF0aCIsICJmdW5jdGlvbklkIiwgInJlcXVlc3QiLCAiYXBpIiwgImRhdGEiLCAiZXJyb3IiLCAicGF0cm9sSHJlZiIsICJyY0lkIiwgInBhdHJvbFJlcXVlc3QiLCAicmVkaXJlY3RQb3J0bGV0TGluayIsICJldmVudCJdCn0K